Excel VBA 質問スレ Part57at TECH
Excel VBA 質問スレ Part57 - 暇つぶし2ch1:デフォルトの名無しさん
18/09/10 21:42:39.57 K1uuwFLt.net
ExcelのVBAに関する質問スレです
コード書き込みや作成依頼もOK

※前スレ
Excel VBA 質問スレ Part56
スレリンク(tech板)

2:デフォルトの名無しさん
18/09/10 22:24:34.33 IjRjzpeI.net
>>1

3:デフォルトの名無しさん
18/09/10 23:23:10.14 vQX+MQcw.net
このスレも相手の居ない淋しいプログラマの愚痴で埋まります

4:デフォルトの名無しさん
18/09/11 00:01:04.42 2R4DuIA+.net
「ここなら俺でもマウントとれるだろう」
と他所では負けっぱなしの奴らが集まってくる。

5:デフォルトの名無しさん
18/09/11 01:02:29.42 lrKPSTD5.net
Excel VBAに関する疑問を抱いて訪れた人がVBAerの惨状を垣間見て、人生に関する疑問を得て帰る
ここはそんなスレ

6:デフォルトの名無しさん
18/09/11 01:05:42.43 FQ+eV6sL.net
Dictionaryのキーと要素の静的型情報がどうしても消えてしまうのですがバグでしょうか?

7:デフォルトの名無しさん
18/09/11 01:11:22.91 lrKPSTD5.net
>>6
消えるってどういうこと?

8:デフォルトの名無しさん
18/09/11 07:05:37.39 qCfc++eI.net
>>6
仕様だと思う

9:デフォルトの名無しさん
18/09/11 07:06:20.92 qCfc++eI.net
System.Collection.Hashtableと使い分けるのがよろしいかと

10:デフォルトの名無しさん
18/09/11 08:08:45.45 U3vGX2sH.net
>>6
具体的にどういう現象?

11:デフォルトの名無しさん
18/09/12 18:53:39.93 lLVFOIbw.net
バイトの1とイントの1を入


12:れて見るとわかるよ



13:デフォルトの名無しさん
18/09/13 06:42:08.49 MLrTlesq.net
>>1
Z

14:デフォルトの名無しさん
18/09/13 08:26:36.89 pD4xyyr1.net
>>9
VBAから使えるの?
俺はひとつ覚えでdictionaryだわ

15:デフォルトの名無しさん
18/09/13 12:39:09.37 2r3/pQLa.net
System.Collection配下のHashtable、ArrayListがVBAで使えるのは知ってる

16:デフォルトの名無しさん
18/09/13 18:10:13.06 FHzPesBg.net
どゆこと?
.NETランタイム仕込むの?

17:デフォルトの名無しさん
18/09/13 18:43:42.97 jnyPcCTa.net
>>15
ドトネトーのmscorlibはcomがあるんよ
CreateObjectでインスタンス化できる
参照設定でmscorlib.dllを読み込めば型指定できる

18:デフォルトの名無しさん
18/09/13 20:27:53.66 pD4xyyr1.net
hashtableとdictionaryはあるけど、hashmapはなかった希ガス

19:デフォルトの名無しさん
18/09/13 23:51:26.06 /ggcYMdi.net
excel vbaって、変数を日本語で定義することができるんだな
感動した

20:デフォルトの名無しさん
18/09/14 07:14:29.85 2+njywcI.net
今時だとできない言語の方が珍しいかも

21:デフォルトの名無しさん
18/09/14 07:57:23.09 5PCa/oFv.net
配列多用してプログラ厶書いたけどコレvbaしか出来ない事務レベルのやつは内容分かるんだろうか
職場では似非プログラマの自分とその他しかいないのでメンテ出来なくなりそう

22:デフォルトの名無しさん
18/09/14 08:38:51.08 cxzTGReq.net
>>20
コメント入れまくるんだ

23:デフォルトの名無しさん
18/09/14 08:53:13.81 itNItVhP.net
コメント入れる前に整理してくれ
汚いコードのコメントは汚くて結局わかりにくいままになるぞ

24:デフォルトの名無しさん
18/09/14 10:47:56.50 OPHSLG3r.net
>>20
主な操作対象が配列なのだったらむしろ分かりやすいのでは?

25:デフォルトの名無しさん
18/09/14 12:16:51.56 LywiNQOe.net
VBAをやっとこさいじれます、っていう感じの人には配列の理解は厳しいぞ
配列のサブスクリプト、コレクションのインデックス、ハッシュテーブルのキーの相互の違いが分からなかったりするからな

26:デフォルトの名無しさん
18/09/14 12:18:52.11 JMy0VfN7.net
配列の解説書をコメントに書いとく。
具体例を豊富に。

27:デフォルトの名無しさん
18/09/14 15:48:14.90 OPHSLG3r.net
配列が難しいだろうか...
俺にはわからん

28:デフォルトの名無しさん
18/09/14 17:49:25.94 Rix9Ja+2.net
まぁなんでもそうだろうと思うけど、判る人間には判らない人間がなぜ判らないのかが判らない w

29:デフォルトの名無しさん
18/09/14 18:47:04.71 5PCa/oFv.net
いや配列は分かるのかもしれん
ただプロシージャさえ使わず変数名にaとかbとか付けてたりで数百行書いてるようなマクロが散見されるほどうちのレベルは低いからちょっと不安

30:デフォルトの名無しさん
18/09/14 18:53:37.98 8jcNJm47.net
変数が分かるんなら配列も分かりそうだけど、そんなに難しいかな?
「配列っていうものもあるんだなー」程度でも認識さえしていれば、
むしろ配列しか使ってないコードならそのうち理解してくれそうな気がする。
途中でコレクションとか辞書とかヘンなオブジェクトとか自作クラスとか使ってなければ。タブン。

31:デフォルトの名無しさん
18/09/14 19:06:28.55 8jcNJm47.net
よく考えたら、コードの読みやすさは「何を使うか」より「どう書くか」の方が重要な気がする。
ともあれ、職場に何人かVBAが書ける人がいるようだから(非常に素晴らしいことに)、
適当に何人かひっ捕まえて使わせてみて率直な感想を言ってもらうといいんじゃなかろうか。

32:デフォルトの名無しさん
18/09/14 20:17:01.33 /DsKfDfg.net
Worksheet.CellsとかRange.Offsetとか、引数に二次元配列をとるアクセサを使えない人は結構いる印象だよな

33:デフォルトの名無しさん
18/09/14 23:44:55.63 za5qG/O1.net
配列の難しさがわからんのは配列すらわかっとらん証拠やぞプロさん達w

34:デフォルトの名無しさん
18/09/14 23:53:34.83 KNVYDbzH.net
>>32
どんなデータ構造にもそれなりに難しい点はある、と言われればそうだが、
配列で難しい点を具体的になにか挙げないと意味ないぞ。

35:デフォルトの名無しさん
18/09/14 23:54:08.70 yt+m1AZF.net
ワークシートの配列の方が難しいよね

36:デフォルトの名無しさん
18/09/14 23:56:00.89 za5qG/O1.net
>>33
意味がない、ではなくおまえには意味がわからんのやろ
知ったことかそんなもんw甘ったれんなカスw

37:デフォルトの名無しさん
18/09/14 23:59:40.89 KNVYDbzH.net
なるほど配列は易しいデータ構造ってことで

38:デフォルトの名無しさん
18/09/15 00:26:05.12 XNrqFkTO.net
excel vbaでテトリスとか作れるようになると、excel vbaを使いこなせられるようになったと思っていい?

39:デフォルトの名無しさん
18/09/15 00:37:49.64 0OTUBrr2.net
>>37
いくない、Excelはゲーム作成用ツールじゃない

40:デフォルトの名無しさん
18/09/15 07:26:48.93 OUVvcRON.net
>>37
いいんじゃね
テトリスができるようになれば次の課題が見えてくると思う

41:デフォルトの名無しさん
18/09/15 14:47:18.53 kCggA2zW.net
テトリス作れるレベルならそこらへんの私VBA得意ですドヤよりスキル的に遥かに上だから、
VBAらしく事務処理の自動化をやるくらい楽勝だよ

42:デフォルトの名無しさん
18/09/15 14:58:06.40 FpfMU/ZL.net
テトリス作る時間に他の勉強をするべき。
そこまで求められてないから無駄。

43:デフォルトの名無しさん
18/09/15 16:22:43.79 MP3gARzS.net
>>37
字面だけでいえば、「Excel VBAでテトリスが作れるレベル」なら、「Excel VBAはそれなりに使いこなせる」と言える。
ただ、それを訊いて何をしようとしているのか分からない。内容次第ではおすすめしない。

44:デフォルトの名無しさん
18/09/15 16:34:10.47 oLja5sKR.net
VBAでテトリス作る意味って何?

45:デフォルトの名無しさん
18/09/15 16:36:20.47 RH+0S0Ax.net
それなりというか世の中の自称VBAのプロのほとんど全員より上だろう
それ以上の人はVBAできますなんて恥ずかしくて言わない

46:デフォルトの名無しさん
18/09/15 16:54:50.81 g80wVNRI.net
エクセルVBAでテトリス作るのは芸ではあるけど実用的じゃない
どうせならエクセルで機械学習とか実務に使う余地があるものやれば

47:デフォルトの名無しさん
18/09/15 16:55:58.42 g80wVNRI.net
プログラマはVBAできます
なんてわざわざ言わない
他言語ができればできて当たり前だから

48:デフォルトの名無しさん
18/09/15 19:14:56.89 XNrqFkTO.net
>>43
vbaを使いこなせられるというか、これが作れるようになれば、この先いろんなツールをつくろうが、
応用がきくという意味で、テトリスという題材を選んでみた。
俺、間違ってることいってる?
vba使いこなせられるになる基準として、何かこういうの作ってみろ的なことがあればいってほしい。

49:デフォルトの名無しさん
18/09/15 19:25:00.03 vKLFrcGU.net
散らばった支社にプログラムを配るに�


50:オても、 完璧にシステム仕様が決まっていて、テストも十分終えたもの以外は、一つのExcelファイルに  プログラム  設定データ  蓄積データ をまとめるのはやめとけって忠告したのに・・・。 プログラムのバグ修正のたびに、支社の端末を直接操作しているVBAマスターを自称する後輩が・・・。 土日ももう呼び出し呼び出し。完全に病んでしまった。 あれほど忠告したのに・・・。 安易な作りでデータ等々を抱えると、プログラムの修正だけしたくても、簡単にはいかないから、 せめて蓄積データだけは別のエクセルファイルなりに保存して開いて使うなりの仕様にしとけと・・・。



51:デフォルトの名無しさん
18/09/15 19:56:51.35 JWnql4hZ.net
>>47
勘違いしてるようだが、テトリスはプログラミングの練習ネタとしてはかなり難しい部類だ
テトリスを自分で設計して作れたら、VBAを使いこなせるどころか世の中でVBAのプロを自称する連中の中でいきなり上位に入るレベル
それくらいVBAのプロのレベルは低い
つまり何が言いたいかっていうと、テトリスはやりすぎ
家計簿くらい作れたら十分面接でドヤっていいよ

52:デフォルトの名無しさん
18/09/15 20:11:22.09 qQRjJW7l.net
>>48
どういういみかもう少し噛み砕いてほしい
私よく意味はわかってないけど今まさに同じ道を辿ろうとしてるような気がする

53:デフォルトの名無しさん
18/09/15 20:13:33.91 kEjGAf/G.net
多数ユーザー向けにマクロを配布するならもうアドインにした方がいいよな
で、データの方はプログラムとのやりとりに支障が出ないようテーブル名、スキーマ、データフォーマットを固定したソースファイルに別途保存させる方がいい

54:デフォルトの名無しさん
18/09/15 20:52:56.93 CRrc/VBu.net
アドインやCOMアドインのベンダーにインターンで行ったが、VBAどころか、C++でガリガリ開発するスーパープログラマが何人もいて、速攻で就職先から外したわ

55:デフォルトの名無しさん
18/09/15 21:12:36.41 kEjGAf/G.net
C++でガリガリ開発ってそんなに凄い?

56:デフォルトの名無しさん
18/09/15 21:16:07.93 KIanXBkQ.net
C++でガリガリ開発しててもなんとも思わない
VBやウンコスクリプトでガリガリ開発してるのは
サルがオナニーしてるようにみえる
もしくは奴隷が単調な動作を繰り返してるようにみえる

57:デフォルトの名無しさん
18/09/15 21:19:37.63 CRrc/VBu.net
>>52
取っつきにくさでいうと、すでに子供の頃から馴染んでおかなければならないイメージ
俺みたいに遅蒔きで大学に入ってC++を初めてさわったレベルでは追い付けないな、と思った
きっかけは分析ツールみたいなアドインってどう作るのか知りたかったという位、その程度の熱意じゃ無理

58:デフォルトの名無しさん
18/09/15 21:20:38.13 CRrc/VBu.net
間違った
>>53

59:デフォルトの名無しさん
18/09/15 21:52:32.87 wUMJLM3O.net
VBAのほうが文法、ライブラリ、コミュニティレベルがお粗末だから難しいかな
モダンC++は昔とくらべてびっくりするぐらい生産性高いからね

60:デフォルトの名無しさん
18/09/15 21:57:22.88 wUMJLM3O.net
>>48
アマチュアの限界が来たんだね
後はプロに引き継ぎなさい

61:デフォルトの名無しさん
18/09/15 21:59:21.10 XNrqFkTO.net
セル内に
"aiueo"
とか
≪aiueo≫
が格納されていたとして、
囲い文字だけを抽出するにはどうすればいいですか?
"aiueo"の場合は、全部半角なので、配列に代入して、


62:配列の先頭と末尾を参照すればいいのだが、 ≪aiueo≫の場合、全角・半角の区別がつかないので(どちらでもない?)、どうやればいいのか。



63:デフォルトの名無しさん
18/09/15 22:10:32.77 JUwQwotH.net
>>59
まともなプログラマなら正規表現を使う
VBA厨止まりでいいならLeftとRightを使う

64:デフォルトの名無しさん
18/09/15 22:18:05.27 KIanXBkQ.net
  A         B 
1 "aiueo" =(LEFT(A1,1))&(RIGHT(A1, 1)) ⇒ ""
2 ≪aiueo≫ =(LEFT(A2,1))&(RIGHT(A2, 1)) ⇒ ≪≫
オレならVBAなんか使わずにこうする

65:デフォルトの名無しさん
18/09/15 22:28:08.97 XNrqFkTO.net
>>60
正規表現を使う場合
①事前に囲い文字を把握しておく
②コード内では、囲い文字をキーにgrep
③grepの結果から、先頭/末尾に囲い文字が含まれていれば確定。
という流れですか?

66:デフォルトの名無しさん
18/09/15 22:34:12.08 kEjGAf/G.net
>>59
正規表現使えば何とかなるよ
基本的には、aiueoが見つかった場合に見つかった文字列の開始位置と終端位置からそれぞれ一文字分外側にオフセットさせた文字列を取ればいい
"aiueo"のようにaiueoの中に2バイト文字が混在してる場合も抽出しなきゃならないような特殊な場合は文字列の範囲指定がちょっと面倒かもしれないが

67:デフォルトの名無しさん
18/09/15 22:37:58.41 XNrqFkTO.net
>>61
これ使えるね
全角の<、半角の<に入れ替えても、ちゃんと囲い文字だけを抽出してくれてる。。

68:デフォルトの名無しさん
18/09/15 22:41:36.90 kEjGAf/G.net
>>62
囲い文字が特定できるならそれが正解

69:デフォルトの名無しさん
18/09/15 22:46:04.69 JpPL0LlT.net
>>62
囲い文字以外を置き換えで消しちゃえばいいんじゃね
検索文字列は"[^\(\)\[\]\"\'「」『』《》]"みたいな感じで
最初の一文字と最後の一文字取るだけならもっとスマートに出来るけど囲い文字が無い場合は括弧以外を抽出しちゃうし

70:デフォルトの名無しさん
18/09/15 22:51:05.07 h6vRwHat.net
LENBなどB付き関数を使わない限り、半角全角は考える必要ないだろ?Excelは内部では全部Unicodeで扱ってる

71:デフォルトの名無しさん
18/09/15 23:14:10.61 VdLZkjGs.net
テトリスなんか複雑すぎて、VBA の奴に作れるわけないだろw
回転もあるし、壁にめり込んだり、
そもそも1秒に10回でも、描画できるか?
そんな性能あるか?

72:デフォルトの名無しさん
18/09/15 23:15:54.34 8rxpHkWL.net
一秒に1回しか動かんのになんで10回も描画せなあかんねんw

73:デフォルトの名無しさん
18/09/15 23:18:58.10 h6vRwHat.net
回転は最低3回/秒位必要だろうし、落ち速度が速くならないテトリスじゃかたておちだろ

74:デフォルトの名無しさん
18/09/15 23:35:07.83 XNrqFkTO.net
>>62
>①事前に囲い文字を把握しておく
で、囲い文字があるかないか、事前に分類しておく
分類後、囲い文字があるものに対して、
vbaを使わずにleft、rightを使って抽出。
これで囲い文字の種類を全部押さえていることになる。
後は、コード内で正規表現(grep)使ってうまくやればなんとかなりそう。

75:デフォルトの名無しさん
18/09/16 00:44:02.64 sPpLNVSR.net
ちょっとよくわからんのだけど
"aiueo≫
とか
≪"aiueo"
とか
≪"aiueo≫ "
はエラーとして除外するの?

76:デフォルトの名無しさん
18/09/16 01:22:34.32 k7pdoQET.net
>>72
エラーとして除外する。

77:デフォルトの名無しさん
18/09/16 02:44:47.45 BKY25fNA.net
>>47
VBAテトリスって余興みたいなものだから
応用力を見る題材というならたとえば
在庫や売上の情報から在庫切れや長期在庫
利益率ランキングを算出するとか
株式情報から各種指標を算出するとか
そういうのがビジネス寄りで適切だと思う
>>49
テトリス自体はそんな難しくない
しいていえばゲームは全部GUIに依存するから
その部分が複雑になりがちなだけ

78:デフォルトの名無しさん
18/09/16 02:48:34.41 BKY25fNA.net
>>48
>一つのExcelファイルに
> プログラム
> 設定データ
> 蓄積データ
>をまとめるのはやめとけって忠告したのに
分かる
要はハードコーディングでしょ

79:デフォルトの名無しさん
18/09/16 02:51:31.52 BKY25fNA.net
>>59
正規表現がプログラミングの正攻法
なお「<a><b>c</b></a>」
こういうタグの入れ子構造は
正規表現で処理するのは難しい

80:デフォルトの名無しさん
18/09/16 07:54:39.60 GNhjMZyx.net
ゲーム作れるから事務処理作れるっていう発想が実務浅いんだろうな

81:デフォルトの名無しさん
18/09/16 09:28:10.74 e7XchwPX.net
VBAを使いこなしたいとは思っているようだけど、「事務処理に使う」とは言ってないのでは。
俺はそのままやってみたらいいと思ってる。Excel VBAでアニメーション作った動画とかもポロポロあるわけだし。
URLリンク(twitter.com)とか)
目標が分からないし、何をやりたいにせよ好奇心を止めることはできないし。
(deleted an unsolicited ad)

82:デフォルトの名無しさん
18/09/16 10:51:52.18 SnNXv25N.net
実用性で言ったら他の言語を使えばいいじゃんってなるから
こうやってVBAを使うことそのものを目的にして遊ぶのは悪くないと思う

83:デフォルトの名無しさん
18/09/16 11:32:42.62 gTaOdbFs.net
>>68
テトリスってそんなに複雑か?
ゲームの中では簡単に制作できるほうだろ

84:デフォルトの名無しさん
18/09/16 12:11:54.55 570fQ2zr.net
>>68
既に存在するけど、テトリス

85:デフォルトの名無しさん
18/09/16 12:38:30.87 eHdm07t1.net
JavaのAPI仕様みたいな、VBAのプロパティやメソッドが一覧になってるサイトや書籍てありますか?
他人のソース読むとき、公式のやつが英語のみで辛いんです……

86:デフォルトの名無しさん
18/09/16 14:28:02.06 gTaOdbFs.net
>>47
ゲームを題材にするならRPGが最適じゃないかな
RPGならデータをこねくり回すしExcelVBAの勉強には良さそうだが
キャラや地図のデータをワークシートに保存して
VBAでそれにアクセスしながらゲームを進行させる感じで

87:デフォルトの名無しさん
18/09/16 18:44:46.22 krLSHvzW.net
VBAマリオだってあるんだし
作ろうと思えば、ある程度までは可能だろう

88:デフォルトの名無しさん
18/09/16 20:14:07.75 BKY25fNA.net
そもそもVBAはアクションゲームに向かないんだよ
もう技術がある人がそれを承知で芸をやるのは良いけど
実用にしたいならビジネス用の題材を取った方が良い

89:デフォルトの名無しさん
18/09/16 20:17:15.86 BKY25fNA.net
>>83
RRGはテトリスよりは題材としてマシだと思う
ドラクエみたいな普通のGUIのRPGを
エクセル方眼紙で再現するとかだと筋悪いけど
そうじゃなくてCUIのRPGで
アイテムとかデータ構造の構築と管理を中心に組めば
ビジネスにも応用が利くと思う

90:デフォルトの名無しさん
18/09/16 21:26:15.56 k7pdoQET.net
csvファイルがあって、これをexcelに読みおませると
表が崩れてしまう。
csvの中身
--
1,my name is taro
2,hello,world
--
excelに読み込ませると以下のように表が崩れてしまう。
A B C
1 1 my name is taro
2 2 hello world
期待値は、hello,worldをコンマ(,)で区切らず、B1セル内に格納したい。
まずvbaを使わずになんとかできない?

91:デフォルトの名無しさん
18/09/16 21:29:05.54 k7pdoQET.net
>>83
確かにRPGのほうがワークシートの保存とかデータ構造の


92:管理とか色々関わってくるのでテトリスよりは題材としてマシなレベルですね



93:デフォルトの名無しさん
18/09/16 21:31:24.63 k7pdoQET.net
87ですが、vbaで加工しないといけない場合、どういった整形処理が考えられますか?

94:デフォルトの名無しさん
18/09/16 21:31:41.83 sPpLNVSR.net
>>87
CSVの意味わかってる?

95:デフォルトの名無しさん
18/09/16 21:33:00.45 e7XchwPX.net
>>87
CSVデータの仕様が悪い気がする。
カンマを含むデータならダブルクォーテーション""で括られているべき。

96:デフォルトの名無しさん
18/09/16 21:36:22.33 k7pdoQET.net
>>90
CSV(コンマで区切って表示するもの)なので、
hello,world→helloとworldに分割されるのは当然と言えば当然ですが、、。

97:デフォルトの名無しさん
18/09/16 21:40:43.38 SOVIz+sV.net
逆だ
CSVはこうしたほうがいいというメモを
無視してるのはキミラ低学歴知恵遅れなワケ
カンマか改行かダブルクォーテーションが項目に含まれる場合
ダブルクォーテーションでくくるべきだ
さらにダブルクォーテーションが含まれる場合、
2個のダブルクォーテーションでエスケープするべきだ
URLリンク(tools.ietf.org)
6. Fields containing line breaks (CRLF), double quotes, and commas
should be enclosed in double-quotes. For example:
"aaa","b CRLF
bb","ccc" CRLF
zzz,yyy,xxx
わかった?

98:デフォルトの名無しさん
18/09/16 21:45:22.98 e7XchwPX.net
>>92
1,my name is taro
2,hello,world

1,"my name is taro"
2,"hello,world"
※my name is taroは括られている必要はないが、統一した方が良い

99:デフォルトの名無しさん
18/09/16 21:45:42.24 sPpLNVSR.net
>>87
そもそも何がしたいのか?
1列目:ナンバー
2列目:内容
という固定フォーマットで区切りがカンマだってならそのように分解すればいい。
InStrで最初のコンマを探せばいいだろうよ。

100:デフォルトの名無しさん
18/09/16 21:45:49.49 k7pdoQET.net
>>93
つまり、CSVデータの仕様が悪いので、これ作った人になんとかしろというしかないか。

101:デフォルトの名無しさん
18/09/16 21:48:00.44 e7XchwPX.net
>>96
カラム数が一定かつ「hello,world」なカラムが一つしかないなら、泥臭いやり方で直すことはできなくもない。

102:デフォルトの名無しさん
18/09/16 21:52:12.15 T59P/aqG.net
>>96
はっきり言ってCSVデータとして「壊れてる」
というかどのカンマが残ってどのカンマが区切りなのか
理論的に説明できないならVBAだろうと無理

103:デフォルトの名無しさん
18/09/16 21:53:10.26 SHD7Rtu/.net
VBAでダメならPowerShellの出番だな

104:デフォルトの名無しさん
18/09/16 21:54:27.21 SOVIz+sV.net
仕様はまったく悪くない
適切に読み込める
普通に矛盾なく読み込めるようになってる
ちゃんと読み込めないのは頭悪いから
自分が頭悪いのを棚にあげるのはよくない
A  B  C     D                E 
AHO " hoge,huga boo CRLF foo CRLF woo BAKA
baka

AHO,"""","hoge,huga","boo CRLF foo CRLF woo",BAKA crlf
baka
この形式で出力されてないデータはそもそもcsvじゃない

105:デフォルトの名無しさん
18/09/16 21:55:20.90 k7pdoQET.net
>>95
最終的には表を
1列目:ナンバー
2列目:内容
にそろえたい。
2列目の内容には、英文が入る。英文には文章の区切り点としてコンマ(,)がよく使われる。

106:デフォルトの名無しさん
18/09/16 22:08:17.61 e7XchwPX.net
>>101
・1行の列数はn列
・カンマが含まれる列は最も右の列だけ
の場合なら、左からn-1個目のカンマから右の文字列は全て問題のフィールドと解釈して処理すれば良い。

107:デフォルトの名無しさん
18/09/16 22:16:05.95 e7XchwPX.net
ああ、通常に考えるとまともに使えるCSVファイルではないので、
たぶん、CSVファイルを作成した後のことは何も考えないで作ったか、
あるいは特定のプログラム内でしか使わないことを想定したデータ(つまりCSVじゃない)かのどちらかだろうと思う。
もし前者なら、その仕様でCSVファイルを作成した(ツールを作成した)人には言っといた方がいい。

108:デフォルトの名無しさん
18/09/16 22:24:51.91 SHD7Rtu/.net
>>101
読み込む前に整形すれば良い
PowerShellならワンライナー
cat test.csv | % {
$i = $_.IndexOf(",")
($_.Substring(0, $i), "`"$($_.Substring($i + 1, $_.Length - $i - 1))`"") -join ","
} | Out-File "dest.csv"

109:デフォルトの名無しさん
18/09/16 22:33:25.75 IXQKD+r/.net
カンマが嫌ならタブ区切りにする
どちらにしろ元データは要修正だよ

110:デフォルトの名無しさん
18/09/16 22:42:58.47 gTaOdbFs.net
>>86
そうそうCUIベースのRPG
ワークシートごとにキャラデータやアイテムデータ、地図データなどを設定して
CUIで画面構成して進行する感じ
クエリワークシートなども用意して簡易データベース的に
データを利用してゲーム進行してやれば結構いい勉強になると思う

111:デフォルトの名無しさん
18/09/16 22:44:29.60 bux1ZB5P.net
tsv形式のcsvファイルに作り直した方が良いと思うわ

112:デフォルトの名無しさん
18/09/16 22:45:20.56 mzkrOy05.net
>>104
powershellならget-content使え
置き換えも-replace一発で正規表現で出来るだろ

113:デフォルトの名無しさん
18/09/16 22:48:48.42 +ao0anr7.net
>>104
そんなややこしい事しなくても
cat test.csv | %{ $i = $_ -split ',',2; "$($i[0]),""$($i[1])""" } > dest.txt
でいいでしょ

114:デフォルトの名無しさん
18/09/16 22:48:54.01 SHD7Rtu/.net
>>108
catはget-contentのエイリアス
正規表現使わなくてもできる
自分はこう書くっていうのがあるなら
僕にレスせずにそれを出すべきかと

115:デフォルトの名無しさん
18/09/16 23:09:32.96 16Y59QgZ.net
powershellが便利でVBAの出るまくなしってのはよくわかったけど
ここはVBAスレだからせっかくなのでVBAで解答を書いてみてよ
だいたい5行ぐらいでできるかな?

116:デフォルトの名無しさん
18/09/16 23:10:09.34 k7pdoQET.net
Inputがtxtなので、中身をみてコンマ(,)で区切られているので、CSVと勘違いしてしまったかもしれない
作った人に、CSVか確認してみます。

117:デフォルトの名無しさん
18/09/16 23:27:45.95 EK9e0hMh.net
CSV はカンマ区切りだから、列にカンマが入る可能性を考えて、各列を、" で囲む。
列内で、カンマを使いたい場合は、\ でカンマをエスケープする。\"
列内の文字列、a\"b
列、"a\"b"
それか、TSV。タブ区切りを使う。
ただし、これも列内にタブを使わないようにすべき
基本、システムを知らない人には、設計(SE)はできない!
こんなの誰でも知っている常識だからw

118:デフォルトの名無しさん
18/09/17 00:05:45.07 dj7qSZnZ.net
また低学歴知恵遅れがテキトーなこと書きこんでるわ。。。

119:デフォルトの名無しさん
18/09/17 00:11:35.39 dj7qSZnZ.net
一般化すればこうなる
列のデリミタや行のデリミタ、もしくは引用符を含む場合
引用符で括る
引用符が含まれる場合、引用符は引用符の前に引用符を1つ記述する
csvの場合、
 列のデリミタはカンマ
 行のデリミタはCRLF
 引用符はダブルクォート
になる
タブ区切りの場合、列のデリミタはHTになる
わかった?

120:デフォルトの名無しさん
18/09/17 00:22:08.36 27GPeyCI.net
>>111
Dim fs, src, dest, line, i
Set fs = CreateObject("Scripting.FileSystemObject")
Set src = fs.OpenTextFile("test.csv", 1)
Set dest = fs.OpenTextFile("dest.csv", 2, True)
Do Until src.AtEndOfLine
 line = src.ReadLine()
 i = InStr(line, ",")
 Call dest.WriteLine(Join(Array( _
  Mid(line, 1, i - 1), _
  """" & Mid(line, i + 1, Len(line) - i) & """"), ","))
Loop
Call dest.Close()
Call src.Close()

121:デフォルトの名無しさん
18/09/17 00:26:30.19 27GPeyCI.net
>>115
RFCはそうだけど
"を\でエスケープするやり方もあるよね

122:デフォルトの名無しさん
18/09/17 00:36:24.95 dj7qSZnZ.net
そんな低学歴知恵遅れマイルールは
低学歴知恵遅れのマイルールが通用するシステムでないと通用しない
低学歴知恵遅れのやりかたの別のファイル形式になる
低学歴知恵遅れのやりかたとcsvの形式は一切関係ないからな
なんで低学歴知恵遅れは
低学歴知恵遅れのマイルールを押しとうそうとすうんの?
低学歴知恵遅れの世界でしか通用しないのに

123:デフォルトの名無しさん
18/09/17 00:38:15.86 dj7qSZnZ.net
この内容のExcelをcsvに出力する
A   B    C
aho boo"foo baka
aho boo"foo baka
普通に
aho.csv
aho,"boo""foo",baka
aho,"boo""foo",baka
と出力される

124:デフォルトの名無しさん
18/09/17 00:42:08.45 dj7qSZnZ.net
こんな内容のaho1.csvをExcelにインポートする
aho,"boo\"foo",baka
aho,boo\"foo,baka
結果はこうなる
A   B    C
aho boo\foo" baka
aho boo\"foo=@baka
こんな内容のaho2.csvをExcelにインポートする
aho2.csv
aho,"boo""foo",baka
aho,"boo""foo",baka
結果はこうなる
A   B    C
aho boo"foo baka
aho boo"foo baka
当然
はっきりいってな
低学歴知恵遅れのマイルールなんかどうでもいいわけ
低学歴知恵遅れが出力するファイルはそもそもcsvじゃない

125:デフォルトの名無しさん
18/09/17 00:44:37.73 27GPeyCI.net
>>120
エクセルの動作の話をしておられるわけですね
それについては異論はないっす
一般的なCSVの仕様として"を\でエスケープすることも
あるよねってことです
RFCは後付ですし

126:デフォルトの名無しさん
18/09/17 00:48:00.11 dj7qSZnZ.net
URLリンク(tools.ietf.org)
7. If double-quotes are used to enclose fields, then a double-quote
appearing inside a field must be escaped by preceding it with
another double quote. For example:
"aaa","b""bb","ccc"
RFCにもちゃんと書いてあるからな
excelでは読み込めない
コレはもう業界ではペケなワケ
もうデファクトスタンダードなワケ
それが分からないから
低学歴知恵遅れなワケ

127:デフォルトの名無しさん
18/09/17 00:55:43.10 27GPeyCI.net
>>122
RFCができる前からCSVは存在してるよ
RFCとは違う仕様も存在するんよ
デファクトスタンダードはそれはそうだと思いますよ
規格として標準なわけではなく事実上の標準だから
"を\でエスケープするものがあってもおかしくないっすね

128:デフォルトの名無しさん
18/09/17 00:56:49.34 27GPeyCI.net
""でエスケープしたらエクセルでインポートできるよってことを言いたいんですよね、わかりますよ

129:デフォルトの名無しさん
18/09/17 00:59:23.34 TeavGsnR.net
フォーマット微妙に変なのをExcelにインポートしたいってとこから話始まってるし
いくら世界がそうあるべきだと言ったって
現におかしなフォーマットのcsvが目の前にあったらどうにかしないといけない
半角君はどうするんだろう

130:デフォルトの名無しさん
18/09/17 01:04:33.71 dj7qSZnZ.net
>>87のケースである場合、
どうしてもエクセルにインポートしてほしいという依頼がきたら
サクラエディタつかって正規表現使って最初のカンマの部分をタブに置換してコピペする
ファイルがクソでかいばあい、sedで正規表現使って最初のカンマの部分をタブに置換する

131:デフォルトの名無しさん
18/09/17 01:08:02.43 27GPeyCI.net
サクラエディタもsedも使えない状況なら半角さんどうするんですか?

132:デフォルトの名無しさん
18/09/17 01:09:43.54 dj7qSZnZ.net
wshでjavascript使って編集する

133:デフォルトの名無しさん
18/09/17 01:10:23.76 dj7qSZnZ.net
sedが使えない = unixクローンは使えない
ということになるからな

134:デフォルトの名無しさん
18/09/17 01:11:33.13 27GPeyCI.net
JScriptですか渋いっすね

135:デフォルトの名無しさん
18/09/17 01:31:17.15 dj7qSZnZ.net
wshならどんな古いくさった端末でも入ってるからな
個人情報の問題で、データを格納できる計算機が制限される、アタリマエだが

136:デフォルトの名無しさん
18/09/17 02:09:43.67 +O


137:wpPL9I.net



138:デフォルトの名無しさん
18/09/17 02:40:44.60 DOsrYmK4.net
ある都合でVBAでプログラミングを学びたいんですが、おすすめの参考書やサイトありますか?

139:デフォルトの名無しさん
18/09/17 03:00:28.28 dj7qSZnZ.net
できない言い訳なんか書いてないからな
それはcsvじゃないといってるワケ
低学歴知恵遅れの世界で呼称されてるcsvは
低学歴知恵遅れの世界のcsv()といってるワケ
わかった?

140:デフォルトの名無しさん
18/09/17 03:01:56.29 dj7qSZnZ.net
ホントな低学歴知恵遅れは
低学歴知恵遅れのマイルールを押し付けようとするから困るワケ

141:デフォルトの名無しさん
18/09/17 03:29:18.86 KiXF7SKJ.net
>>133
>VBAでプログラミングを学びたい
VBA「の」じゃなくてVBA「で」?
学びたいのはプログラミング自体?
それならVBAはGUIがついてて便利なので入門用言語には良いが
最終的にはVBA以外のプログラミング言語も習得した方が良い
というのはあくまでVBAのベースはBASICなので
VBAプロパーだとプログラミングの筋が悪くなる

>おすすめの参考書やサイト
まずは大きな書店に行って
PC関係の売り場で中身をパラパラめくって
分かりやすそうな入門書を一冊買って読もう
もちろん「VBA」で検索して出てきたサイトを見れば
金は掛からないが説明が微妙なところもあり不安が残る

142:デフォルトの名無しさん
18/09/17 03:42:24.53 O0m9WfJA.net
CSV, TSV の仕様
delimiter : フィールド区切り。カンマ・タブが多い
quotechar : フィールドを囲む文字。" が多い
escapechar : フィールド内に、quotechar を含む場合に、その前に付けるエスケープ文字。
\ か、" が多い。
a\"b → "a\"b"
a""b → "a""b"

143:デフォルトの名無しさん
18/09/17 07:53:46.06 u5HISWee.net
そんな50レスも引き延ばすようなネタか?(呆

144:デフォルトの名無しさん
18/09/17 08:33:44.47 KWfY0Z4o.net
VBAスレならこれぐらいの話題がちょいどいいレベルでしょう

145:デフォルトの名無しさん
18/09/17 08:38:11.40 SBpxj18K.net
久々に食い付けるネタだったんだろ w

146:デフォルトの名無しさん
18/09/17 08:59:01.79 x2+cUCF9.net
あるファイルを修正する前に、そのファイルを_bak.csvみたいに同じディレクトリにバックアップしたいんだけど、vbaからだとどうすればいい?
filesystemobjectとか使うの?

147:デフォルトの名無しさん
18/09/17 09:02:08.97 dEktkUWz.net
>>135
別にマイルール押しつけてるつもりはないよ。俺はプログラミング歴本当浅いし。
間違ってれば指摘して訂正すればいいだけの話じゃない?
それはさておき、なんだかんだで、答えてくれてるので、回答どうもw

148:デフォルトの名無しさん
18/09/17 09:40:45.98 u5HISWee.net
>>141
Private Sub Workbook_BeforeSave()
のサブプロシージャで適当に。バックアップ世代管理をどこまでやるかで変わるが簡単にやるならSaveCopyAsでいい。

149:デフォルトの名無しさん
18/09/17 09:45:04.21 x2+cUCF9.net
>>143
そのもののイベントがあるのね
ありがとう

150:デフォルトの名無しさん
18/09/17 15:03:24.49 Z7EfKxAW.net
>>136
ありがとうごじゃります
おっしゃるとおりで!
古本屋には無かったのでネットでサンプルでも見ながら探します!

151:デフォルトの名無しさん
18/09/17 19:47:37.68 3YPJfo/c.net
どんなCSVでもテキスト処理すれば良いだろ。
Excelで開いて崩れるならそれは無理すじというもの。
見えるデリミタが既に嫌なので、見えない文字をデリミタに使ってCSVもどきとかにしてたこととかあったな。

152:デフォルトの名無しさん
18/09/17 20:21:50.63 u5HISWee.net
まだ引っ張るのかw

153:デフォルトの名無しさん
18/09/17 20:25:15.40 pGKPj11G.net
あんまり同じ話ばかりしてるとまた


154:半角先生に低学歴知恵遅れって言われるぞ



155:デフォルトの名無しさん
18/09/17 21:34:58.01 8X2LVp/6.net
「関数を使うかVBAを使うか」なんて文章を見てもにょらないのか?

156:デフォルトの名無しさん
18/09/17 21:48:19.81 3YPJfo/c.net
普通に一般的じゃないCSVなんてごまんとあるだろ。
3270が吐き出したCSV(といっても結局プログラムが吐き出してるわけだけど)とか、固定長CSVとか。
カンマ区切り以外は何でもアリと考えるべき。
どうせ、どんな仕様でも対応できるだろ。
大した話じゃない。
基本的な話だがCSV開く時はOpenTextって話がまだ無いようだが、それでダメなら自前でどうとてもするだろ。

157:デフォルトの名無しさん
18/09/17 21:50:33.98 3YPJfo/c.net
>>141
開く前にファイルコピーでも何でも良いじゃん。

158:デフォルトの名無しさん
18/09/17 22:29:17.24 nCCekO+f.net
URLリンク(qiita.com)
VBAからpowershell呼び出すのって↑こんなまわりくどいの?
powerhellの実行結果を一旦テキストファイルとかに出してそれをまたVBAで読み込むとか?
めんどくさ…('A`)

159:デフォルトの名無しさん
18/09/17 22:31:24.18 w2PHbw/n.net
固定長CSVとか言うパワーワード

160:デフォルトの名無しさん
18/09/17 22:52:13.82 nnZrg0Mh.net
固定長CSV笑った
でも世の中には実在するんだろうな

161:デフォルトの名無しさん
18/09/17 22:57:01.63 AYOVQ736.net
なになに?またプロさん知ったかぶりしとんの?

162:デフォルトの名無しさん
18/09/17 23:15:23.57 pGKPj11G.net
>>152
こんなことやるならPS側で処理した方が絶対良いよな
PSから直接Excel触れるんだから

163:デフォルトの名無しさん
18/09/17 23:30:51.51 O0m9WfJA.net
Office は高い
Ruby で、VSCode の拡張機能の、Excel Viewer で十分

164:デフォルトの名無しさん
18/09/18 02:54:36.14 ziBnUm70.net
>>157
働いたこともないニートだったか

165:デフォルトの名無しさん
18/09/18 04:01:32.86 e8HHTJEv.net
>>152
>>156
オレもPS側から処理する方が基本的に筋が良いと思う
PSの方が汎用的で記述性が高いから

166:デフォルトの名無しさん
18/09/18 05:54:19.55 QjGqbTDe.net
PSキチガイ、Rubyキチガイが登場したから、後はC#キチガイが出てくればいつもの通りの流れ

167:デフォルトの名無しさん
18/09/18 05:56:46.48 KvvcKQiM.net
まだマッチポンプやってるんかお前?

168:デフォルトの名無しさん
18/09/18 06:07:52.72 RfbXDeCO.net
俺はC#の役も出来るから必要なら呼んでくれ

169:デフォルトの名無しさん
18/09/18 07:32:33.78 cnS9oStk.net
表形式もWPFのほうが安全で楽で表現力高いと気付いてから俺の中でVBAの出番は完全になくなった
VBAの使い道を必死で探してるが見つからない

170:デフォルトの名無しさん
18/09/18 08:05:31.56 RfbXDeCO.net
WPFはデータとプログラムソースを完全分離出来るからな
VSさえ自由に使えるなら安全で良い

171:デフォルトの名無しさん
18/09/18 08:14:28.81 /U1cQ/02.net
働いたこともないニートだったか

172:デフォルトの名無しさん
18/09/18 08:34:54.62 NAn2Eeof.net
自己紹介乙

173:デフォルトの名無しさん
18/09/18 08:53:19.81 RfbXDeCO.net
働いたことがないニートなのはこのスレの参加条件だからニート歴の年数で勝負すべき

174:デフォルトの名無しさん
18/09/18 09:11:00.17 6gy5jGhe.net
>>163
言語として使いやすいから、とか

175:デフォルトの名無しさん
18/09/18 12:06:42.40 oc0rxGPX.net
>>168
その皮肉はちょっとよくわからない

176:デフォルトの名無しさん
18/09/18 12:13:47.72 PpRa0G4r.net
面白いギャグだね

177:デフォルトの名無しさん
18/09/18 12:16:08.60 /U1cQ/02.net
>>163
君の作ったのがExcelの完全上位互換でもない限り、上司からセルの色が変えられないとか関数が使えないとか言われるのがオチ。
ニートの意味プログラムの世界では成立するかもね。

178:デフォルトの名無しさん
18/09/18 12:22:42.63 Xx2CgWo


179:L.net



180:デフォルトの名無しさん
18/09/18 12:34:01.22 PpRa0G4r.net
>>171
そういうエクセルを使うことが目的になってる残念上司にはエクセルをエクスポートして渡しておけばいいよ
こっちはあくまで生産性上げるためにやってるわけだからね
もちろん色を変えることにビジネス上の合理性があるなら実装するがね
色を変えて遊びたいだけじゃ話にならん

181:デフォルトの名無しさん
18/09/18 12:51:14.99 /U1cQ/02.net
>>173
それだったらExcel使う必要無いわけだ。
上司や社長にそう言ってみれば良いんじゃね。
色だけの問題じゃねえっての。
完全上位互換で気付かないかねえ。
だから二―トと言われるんだぞ。

182:デフォルトの名無しさん
18/09/18 13:59:55.38 oc0rxGPX.net
自分から具体的な事を言わずに相手の反応を待つ方法、
馬鹿が頭良く見せる時によくやるけどその内相手にされなくなるよ

183:デフォルトの名無しさん
18/09/18 15:33:00.72 6gy5jGhe.net
>>169


184:デフォルトの名無しさん
18/09/18 19:05:07.35 7cRL6s2e.net
初心者の典型的な勘違いだね
「なんでも出来る方が良いに決まってる」
でも、実際には逆なんだな
例えば標準エクセルの完全上位互換なら、すべてのセルの色を変えれることになるが
そうすると色を変えてほしくないセルまで変えてしまう人が現れる
色だけじゃなく、ありとあらゆる機能について似たようなことが言える
先人たちは失敗に学び、なんでも出来るツールよりも、僅かな仕事を上手くやるツールを組み合わせたほうが良い、という答えにたどり着いた
事務員のみんなは、学ぶべき先人が居ない環境でプログラミングを覚えてきた
だから、こういう基本的なことが身につかないままの人が多いんだ

185:デフォルトの名無しさん
18/09/18 19:09:22.99 /U1cQ/02.net
>>175
あれあれ?
「関数が使えない」を無視した上に、「完全上位互換でもない限り」の文意を読み取ろうともせずに「具体的なことを言わず」と相手を批判ですか?
何でも全て自分は悪くないですか。
そうですか。

186:デフォルトの名無しさん
18/09/18 19:10:47.69 /U1cQ/02.net
>>177
それじゃ既に誰もExcel使ってないっての。
ところが現実は違う。

187:デフォルトの名無しさん
18/09/18 19:22:55.63 7cRL6s2e.net
>>179
それだけリテラシーの低い人が多いということ
多数派が賢いというのも典型的な勘違いの一つだね

188:デフォルトの名無しさん
18/09/18 20:11:57.47 WcZLZMlj.net
セル内の文字列をコピーする際、セルごとコピーしようとしたら、余計な情報までコピーするからやめろといわれた。本当ですか?

189:デフォルトの名無しさん
18/09/18 20:14:47.13 uHQ14XDu.net
>>181
コピペのやり方とどこに貼り付けるか次第かなー

190:デフォルトの名無しさん
18/09/18 20:38:53.34 dgXQ4G2s.net
>>181
値貼り付けならまぁなんとか
コピーしてそのまま貼り付けは鬱陶しいな

191:デフォルトの名無しさん
18/09/18 21:38:06.78 NAn2Eeof.net
書式貼付けとか出来るようになったのは嬉しいけど罫線そのままフォントとか背景色をコピーとかしたいわ
要望に限りはないな…

192:デフォルトの名無しさん
18/09/18 22:18:22.89 J2IpRlny.net
>>184
コピー元のセルとコピー先のセルをそれぞれRange型変数に格納して、あとはコピー元の任意のプロパティの定数値をコピー先のプロパティの値としてそのまま代入するだけ

193:デフォルトの名無しさん
18/09/18 22:25:10.68 dgXQ4G2s.net
>>184
罫線だけ貼り付けあるで

194:デフォルトの名無しさん
18/09/18 23:02:58.12 /U1cQ/02.net
>>180
???
多数派が賢いとは言ってない。
そもそもの話から理解出来ないなら引っ込んでろよ。
会社は君一人だけで成り立っているわけじゃない。

195:デフォルトの名無しさん
18/09/18 23:05:19.45 oE0uJFU6.net
なんかVBAできる程度でイキってる低学歴知恵遅れが


196:いるのか



197:デフォルトの名無しさん
18/09/18 23:12:46.57 /U1cQ/02.net
独りよがりの二―トならいるが。

198:デフォルトの名無しさん
18/09/18 23:19:04.19 3Z5SLW4f.net
vba出来なくてイキられとるプロさん達w

199:デフォルトの名無しさん
18/09/18 23:32:08.88 dgXQ4G2s.net
>>188
そりゃ事務作業がほぼ0になるんだからイキってもいいよ

200:デフォルトの名無しさん
18/09/18 23:57:53.79 J2IpRlny.net
VBAは作ってからが本当の地獄だぞ

201:デフォルトの名無しさん
18/09/19 06:01:57.35 S2C8yCMr.net
おっと野田工房さんの悪口はそこまでだ
URLリンク(qiita.com)

202:デフォルトの名無しさん
18/09/19 06:47:53.78 wCu+CcEF.net
office.tanakaのコードには俺も前から疑問持ってた。vbaにクソコードが多い原因とまで言っちゃうのはちょっと言過ぎだが。
vbaの場合、入門書にロクなのが無いってのが大きいと思う。

203:デフォルトの名無しさん
18/09/19 08:11:46.01 3pMh17++.net
少なくともオブジェクトが解放されてないとか文句言ってるのは別言語に移行すれば解決するな

204:デフォルトの名無しさん
18/09/19 08:16:58.74 Q3mSx79m.net
他人のせいにしちゃいかんな
モダンな文法や機能の導入
Excel.Applicationのインターフェース改善
洗練されたIDEの導入
これらを怠った結果でしょう
特にIDEの影響が大きいと見たね
インテリセンス、サジェスチョン、ワーニング、リファクタリングツールが充実してると大分変わる

205:デフォルトの名無しさん
18/09/19 08:27:16.54 qT/e110f.net
すくなくともVBEは変えるよな
素人マクロじゃなくて業務開発ならば

206:デフォルトの名無しさん
18/09/19 08:30:56.76 LVCMaoiR.net
>>163
それでもスレに来るのは何なの

207:デフォルトの名無しさん
18/09/19 09:05:12.30 eB9Wvzp/.net
>>198
とにかくVBAをけなして自分のチンケなプライドを満足させたい、その一点のみ w

208:デフォルトの名無しさん
18/09/19 09:07:56.31 hRx0sgGQ.net
啓蒙してユーザー需要を減らせれば、皆がハッピーになると信じている…のかも

209:デフォルトの名無しさん
18/09/19 11:59:42.56 9eFLiOtU.net
暇つぶしの問題
あるセルとその下のセルに数値データが入っている
この2つのセルの中身を他のセルを使わずに入れ替えてください

210:デフォルトの名無しさん
18/09/19 12:11:03.24 3D7E1PKU.net
○○では××できない!糞!って騒ぎ立てることで
いや○○でもこうすれば××できるんやでという回答を引き出すメソッドや

211:デフォルトの名無しさん
18/09/19 12:13:54.07 3D7E1PKU.net
なおVBAの場合ほんとにできないのであまり効果的でない模様

212:デフォルトの名無しさん
18/09/19 12:39:07.72 f2RidzcJ.net
>>201
Dim Rng_Target As Range
Dim Val_Target As Long
Set Rng_Target = 目的のセルを取得するexpression
Val_Target = Rng_Target.Value
Rng_Target.Value = Rng_Target.Offset(1, 0).Value
Rng_Target.Offset(1, 0).Value = Val_Target

213:デフォルトの名無しさん
18/09/19 18:17:37.52 r5xYEE0l.net
If Not RangeA Like RangeB then
RangeA = RangeA Xor RangeB
RangeB = RangeA Xor RangeB
RangeA = RangeA Xor RangeB
End If

214:デフォルトの名無しさん
18/09/19 18:40:15.75 AVetNhWj.net
xor交換て数値型全部に使えるんだっけ

215:デフォルトの名無しさん
18/09/19 18:41:10.33 5nElZyy0.net
>>198
確認だけど日本語は読めるよね?
VBAの使い道を探してるって書いてあるけど見えなかったのかな

216:デフォルトの名無しさん
18/09/19 18:52:28.00 0/ft7j2l.net
>>207
いや、必要もないのに探す意味がわからないし
暇なの?

217:デフォルトの名無しさん
18/09/19 18:58:31.13 5nElZyy0.net
>>208
ん?
高い金出して買ったExcelを使い�


218:アなさなきゃもったいないだろ



219:デフォルトの名無しさん
18/09/19 19:21:40.70 0/ft7j2l.net
>>209
プライベートで有効に活用できないかってことね
趣味にもよるしなあ

220:デフォルトの名無しさん
18/09/19 23:25:17.18 J1A7PsDE.net
プロも実はエクセル使えないの悔しいんやなwプロさんのくせにw

221:デフォルトの名無しさん
18/09/19 23:28:02.58 xLP4ypV2.net
プロはセルで関数つかっても
vbaはつかわない

222:デフォルトの名無しさん
18/09/19 23:34:32.23 f2RidzcJ.net
ワークシートでユーザー定義関数使いたいときはVBA使う

223:デフォルトの名無しさん
18/09/19 23:47:39.17 3pMh17++.net
>>193
なんやかんや言いつつ文句の対象がVBAだけなの草

224:デフォルトの名無しさん
18/09/20 00:20:27.12 EYF8wRp8.net
頭の悪い人がVBA覚えると数式でも工夫すればできることもVBAでやろうとするよね
VBAは所詮「実行できる操作手順」だから、慣れてしまえば頭が弱くても分かりやすい
数式の方が論理的な思考が必要で突き詰めれば難しい

225:デフォルトの名無しさん
18/09/20 00:23:10.21 5+Hsdig+.net
ハイハイ偉い偉い

226:デフォルトの名無しさん
18/09/20 00:37:45.52 grTR8BoD.net
まるでVBAで数式を表現できないみたいじゃないか
変なこというヤツだな

227:デフォルトの名無しさん
18/09/20 00:41:53.76 zLqp8E23.net
むしろ数式の途中結果を使いながら何列もつかって最終結果にたどりつく
途中で確認するからな
複雑な数式を一行やろうとなんか考えない

228:デフォルトの名無しさん
18/09/20 01:26:44.94 SZObeV+C.net
語彙力、たぶん関数って書きたかったんだろ

229:デフォルトの名無しさん
18/09/20 01:42:01.91 iN76uuvx.net
VBの組み込み関数とワークシート関数のどっちの話をしてるんだか

230:デフォルトの名無しさん
18/09/20 05:12:33.95 We2hiCPZ.net
Visual Basic Editorは20年前に発売されてとっくに引退したVB6のIDEの流用?で
なぜか20年間全く変わらないままだな、もうアホかと
Visual Studioで言うところの「すべての参照の検索」ぐらいできないと不便でしょうがない

231:デフォルトの名無しさん
18/09/20 08:13:11.22 nFH62DW3.net
そりゃMSにとってはVBAはもはやレガシーもいいとこであり滅ぼしていきたいものだからだ
君の愛する Visual Studio にも昔はExcel VBAと同様にCOMオートメーションによるマクロ機能とその専用開発環境が付属してたけど、いつの間にか消えただろ?
完全に時代遅れの死んだ技術なんだよ
Excel VBAを削除したら大量の自称プロが露頭に迷って電車のダイヤに多大な影響が出るから踏み切れない、
でも車内のポリシー的にレガシー技術への新規投資はできない、というわけで放置するしかないわけ

232:デフォルトの名無しさん
18/09/20 11:47:27.86 lix+OrrW.net
プロなんてものの数に入らないだろう
圧倒的に多いのは一般のオフィスワーカー
なくなったらむしろプロの側はビジネスチャンスじゃん

233:デフォルトの名無しさん
18/09/20 12:03:27.50 xZtTWzui.net
質問です
タブ区切りtxtファイルを複数読み取り,指定の場所に貼り付けるVBAをMacOS上で制作したいのですが,ファイルパスの仕様?などの関係でうまくいきません

どなたかMacOSでのVBAに詳しい方はいらっしゃいませんか?

234:デフォルトの名無しさん
18/09/20 12:07:06.97 liPfzeAw.net
>>224
まずコードを貼れよ。話はそれからだ

235:デフォルトの名無しさん
18/09/20 12:24:51.29 xZtTWzui.net
>>225
恥ずかしながら,コードはまだ完成していないのです.
そもそも他ファイルの読み込みすらままならないので・・・
練習として,同じフォルダ内にあるEXCELファイル(Sample.xlsx)を開くだけのコードを描いてみたのですが,それすらうまく回りません.
同様のコードでwindowsでは問題なく回ったのですが・・・
Sub Sample()
 Workbook.Open Filename:=ThisWorkbook.Path & "./Sample.xslx"
End Sub
この問題の解決法から教えていただけるとうれしいです.
初心者で右も左も分からず,基本的な質問になってしまい申し訳ありません

236:デフォルトの名無しさん
18/09/20 13:02:40.95 liPfzeAw.net
>>226
ドットが不要。マックは知らんけどWindowsは本来パスはバックスラッシュ、拡張子はxlsxな

237:デフォルトの名無しさん
18/09/20 13:09:09.59 SZObeV+C.net
今開いているファイルが
/boot/hoge/fuga.xlsm
だとして同じ階層の
/boot/hoge/Sample.xlsx
を開きたいなら
相対指定では../Sample.xlsx
.ではだめ。

238:デフォルトの名無しさん
18/09/20 17:49:38.92 lix+OrrW.net
グローバルなRangeプロパティへの参照を機械的に検知するアイディア
URLリンク(qiita.com)
なるほどこの発想はなかった

239:デフォルトの名無しさん
18/09/20 18:03:18.90 hYohggeS.net
>>222
むしろプロは喜ぶね
Vbaそのものが目的化してるアマチュアのほうがきついんちゃう?

240:デフォルトの名無しさん
18/09/20 18:30:13.49 5eDdLMhs.net
VBAが使えるのを売りにしてる事務員は多いからね
さすがにそろそろVBEは標準では付属しなくなって、
MSのサイトの分かりにくい場所から別途ダウンロードが必要になるくらいの弾圧施策は打ってくるんじゃないかな

241:デフォルトの名無しさん
18/09/20 18:36:30.44 49SYfM/r.net
事務員にそんなもの期待してない

242:デフォルトの名無しさん
18/09/20 19:29:49.01 lix+OrrW.net
冷静に考えたらプロは喜ばないか
営業が喜ぶかもしれないってだけだな

243:デフォルトの名無しさん
18/09/20 20:28:39.42 qGj9TL9d.net
>>222
2019にPythonが実装されるという噂だが…
結局COMやらないと駄目、ってなったら旨味がほぼゼロ。
Excelが.NETに完全対応するんならVBAとか今すぐ無くなっていい。

244:デフォルトの名無しさん
18/09/20 21:44:20.01 MjJalB6Y.net
>>234
ん?
Excelに搭載するならVBA並みに使えるようにするだろ
COMで使うなら今でも使えるし

245:デフォルトの名無しさん
18/09/20 21:59:37.62 whO82xMw.net
マルチプラットフォーム、クラウドに注力してるのに
わざわざローカルのOSベッタリの技術にリソースは割きたくないでしょ
というかVBAの前にIEが消えると思う

246:デフォルトの名無しさん
18/09/20 22:42:00.54 oVrOG/N2.net
IEはガチのオワコンだからしゃーない

247:デフォルトの名無しさん
18/09/20 22:54:11.74 tLKfXY5t.net
>>234
そんな噂はねーよ
とっくの昔に否定されてる

248:デフォルトの名無しさん
18/09/21 01:31:15.05 MqKbhYRD.net
ところがここだけの話そうでもないんだよねーあんまり詳しくは言えないけどね

249:デフォルトの名無しさん
18/09/21 02:38:37.17 ITZv+Gmc.net
>>239
負け惜しみ言ってるんじゃねーよ、死ねよ

250:デフォルトの名無しさん
18/09/21 09:35:36.97 mvgA0QsA.net
どんなのが搭載されても関係無いだろ。
それに合わせるだけだ。
逆に待ち望んでた奴らはまたコレジャ・・・がダメとか言い出すんだろう。
結局今と変わらない。
自分の能力の低さを言語のせいにするような奴らなんだから。

251:デフォルトの名無しさん
18/09/21 16:53:09.50 Qvv9rksr.net
事務仕事でVBA使えると業務効率すごく良くなるの?
作業自動化とか見て心がわくわくするけど、うちの会社誰もVBA使えなくていまいちどんな感じなのか想像できない

252:デフォルトの名無しさん
18/09/21 17:42:59.81 CSX4ORRK.net
>>242
自分でやってるExcelの仕事を、この部分を自動で出来たらどうなるかって考えてみたらよろしいやん。
出来るところ出来ないところ色々あるだろうけどさ。

253:デフォルトの名無しさん
18/09/21 17:54:42.09 r3aTV2Xy.net
まだ始めたばったりで基本もまだまだだけど、実際の業務で自動化できそうな簡単な課題を考えて試行錯誤してるんだけどこんな感じで身につくかな?

254:デフォルトの名無しさん
18/09/21 17:56:20.06 xQShnEjp.net
>>242
今からやるならdotnetやpythonがいいよ
どの言語でもエクセルを処理できる
業務はエクセルだけじゃない
だからどうせなら簡単で色々できてパワフルな別の言語を使ったほうがいいというわけ

255:デフォルトの名無しさん
18/09/21 18:04:23.10 liVyxOie.net
メモ帳でC#組めるし.NETはオススメだね

256:デフォルトの名無しさん
18/09/21 18:06:59.84 2TZ1ouJm.net
VBAスレまできてPythonのステマとか
やっぱりPython信者は一味違うな

257:デフォルトの名無しさん
18/09/21 18:11:58.90 mvgA0QsA.net
dotnetもpythonもExcel上で使うには力不足。
VBAが一番都合が良いんだね。

258:デフォルトの名無しさん
18/09/21 18:16:59.14 xQShnEjp.net
エクセルはビジネスのごくわずかな領域でしかない
なのでエクセル依存のVBAはビジネスではイマイチなんだね

259:デフォルトの名無しさん
18/09/21 18:29:31.75 liVyxOie.net
やっぱり.NET、Python、PowerShellで決まりだよ

260:デフォルトの名無しさん
18/09/21 18:33:05.98 MQAmc69g.net
ユーザー定義ワークシート関数作れるようになってから出直せ

261:デフォルトの名無しさん
18/09/21 18:35:03.52 uQKWYjQl.net
>>242
凄く良くなるかは分からん
業務の種類と自分が出来る自動化のスキルによる
うちはシステム化ダメダメだったから日報を2時間掛けて作ってたらしいそれを2分で出来るようにした
土日も作ってるらしいからそこそこになった

262:デフォルトの名無しさん
18/09/21 18:40:23.75 Qvv9rksr.net
なるほどー。普段の業務考えてみたらルーチン作業ばっかしてるし自動化できそう

>>252
まさにそんな感じで日報も作ってるわ。部署ごとにわけて~で2時間は余裕でかかってる
これがもし2分で終わったりしたら夢あるなぁ

263:デフォルトの名無しさん
18/09/21 18:44:00.14 liVyxOie.net
C#あたり使ってVBEのコードペインにユーザー定義関数用のVB6コードを差し込むようにすれば大丈夫だと思うの

264:デフォルトの名無しさん
18/09/21 18:46:12.21 MQAmc69g.net
>>254
で、そのファイルは他の人が開いたらどうなるんや

265:デフォルトの名無しさん
18/09/21 18:50:57.60 liVyxOie.net
ブックのコードペインに差し込んでスタンドアロンなVBAプログラムとして保存すれば他のユーザーがそのブックを開いても普通に関数として使えるじゃん

266:デフォルトの名無しさん
18/09/21 18:56:13.68 xQShnEjp.net
>>251
何に使うの?
ユーザー定義関数を定義する事が目的化してない?

267:デフォルトの名無しさん
18/09/21 19:01:09.32 MQAmc69g.net
>>257
標準関数で書くと低速になるような式のとき、VBAに移す事で大幅に高速化できる。
必要になった時にその場で作るものだから、c#の場合VS起動してコンパイルしてとか論外。
その後、計算書完成したから後よろしくって上司に渡すとかよくある

268:デフォルトの名無しさん
18/09/21 19:17:25.97 FvpQrvJK.net
計算書なんて何度も計算するものじゃないだろ?
それに経過の計算を残すことが重要な書類じゃないのか?
無意味に速度なんて気にして誰も解読できないオナニー関数とか使うなよハゲ

269:デフォルトの名無しさん
18/09/21 19:22:37.61 xQShnEjp.net
え?それだけ?
定義した関数をデリゲートとして渡してコレクションをソートしたり
メタデータを取得してデコレーターを生成したり
再利用�


270:ツ能なモジュールとしてシステムに登録したり とかできないの? 使い捨てのシートに表示するのを高速化するだけのために重いエクセルとVBEを開いてVBAで我慢強くコーディングして動作確認とか辛いんですけど



271:デフォルトの名無しさん
18/09/21 19:30:10.67 liVyxOie.net
必要になったときに手軽に使うのはPowerShell

272:デフォルトの名無しさん
18/09/21 19:31:16.07 MQAmc69g.net
そういうのが作りたいなら好きにしてくれ。
VBAが適している場面もあるって話や
あと数秒で計算終わるなら必要ない。物によっては諸元入力のたびに再計算に1分かかる場合とかあるんよ。
エクセルエアプには分からなくても仕方がないが。

273:デフォルトの名無しさん
18/09/21 19:35:55.04 FvpQrvJK.net
どうせSUMPRODUCTとか使いまくって悦に浸ってんだろ
エクセルプロ()さんは凄いですね

274:デフォルトの名無しさん
18/09/21 19:42:04.04 xQShnEjp.net
リアルタイム更新はエクセル弱っちいよね
非同期処理のサポートが残念だから
入力するたび重い計算を同期で待ちってユーザーが激怒する典型的なパターンだよ

275:デフォルトの名無しさん
18/09/21 19:54:44.02 liVyxOie.net
大容量データをエクセルで扱うならパワーピボット使おうよって思うし、ワークシートで行列計算の評価を何重にも行うならそれ全部外部の高速なプログラムにオンメモリでやってもらおうよって思うの

276:デフォルトの名無しさん
18/09/21 20:16:40.40 4Tb64i1X.net
>>260
お前、VBAに何やらせようと思ってるの?
VBAはあくまでOfficeアプリケーション上で使える便利機能でしかないんだよ?
お前が言ってることはデカいシステム作ることに対応した言語持ってきて
アレが出来ないコレが出来ないと騒いでいるに過ぎない。
そもそもそういうことをやるならそれなりのフレームワークを使ってEXCEL吐き出させろ。

277:デフォルトの名無しさん
18/09/21 20:23:25.18 +w5W7Qw1.net
>>258
標準の関数ってスピードすごい早いプログラムじゃないの?
自作のほうが上回るとかあるんか

278:デフォルトの名無しさん
18/09/21 20:28:26.36 dSxNadcR.net
>>267
VB6標準の組み込み関数じゃなくてエクセル組み込みの標準的なワークシート関数のことを言ってるんじゃないかと理解してたんだけど違うのか?

279:デフォルトの名無しさん
18/09/21 20:33:56.46 xQShnEjp.net
>>266
デカイシステム?
日常的な規模のツールもC#やパワーシェルのほうがいいよ
小規模ならまあほとんどパワーシェルだな
エクセルはスケールデカイときは論外だけど
便利で基本的なクラスや言語機能がないからスケールの小さいちょっとした物にも実はそんなに向いてないんだな
外部コマンドの出力結果をパースして並び替えてフィルターしてエクセルに出力してファイルをwebサーバーにHTTPポスト
これぐらいの簡単な作業ですら着手に躊躇してしてしまう

280:デフォルトの名無しさん
18/09/21 21:47:31.39 c6u7OXiZ.net
>>268
いやワークシート関数で合ってると思うけどあれを超えられるユーザー定義関数を作る自信はないわ

281:デフォルトの名無しさん
18/09/21 22:47:22.07 oOcVj6Vd.net
上で言ってるような重い処理じゃないけど、文字列操作系は自作したほうが便利なことが多いよな。
たとえばSplit関数がワークシートに無いのでパスをバラすときとか糞めんどい。
A1:C:\hoge\fugafuga\piyo
C:・・・・・=MID(A1,1,SEARCH("\",A1,1))
hoge・・・=MID(A1,SEARCH("\",A1,1)+1,SEARCH("\",A1,SEARCH("\",A1,1)+1)-SEARCH("\",A1,1)-1)
fugafuga・・・=MID(A1,SEARCH("\",A1,SEARCH("\",A1,1)+1)+1,
SEARCH("\",A1,SEARCH("\",A1,SEARCH("\",A1,1)+1)+1)-SEARCH("\",A1,SEARCH("\",A1,1)+1)-1)
しかしこれを定義するだけでシンプルになる。
Function SPLIT2(v, deli, idx)
SPLIT2 = Split(v, deli)(idx - 1)
End Function
C:・・・・・=SPLIT2(A1,"\",1)
hoge・・・=SPLIT2(A1,"\",2)
fugafuga・・・=SPLIT2(A1,"\",3)
だから文字列変換が出てきたら大抵VBAで関数組むかな

282:デフォルトの名無しさん
18/09/21 22:52:30.61 oOcVj6Vd.net
>>271
書いてから思ったけど、パス分解するだけなら区切り文字で出来るから例が悪かったわ
上の関数は文字を数式で繋いでコネコネするときによく使う

283:デフォルトの名無しさん
18/09/21 22:53:01.55 /N0VzHQb.net
splitがめんどいのは同意だけどなんでワークシート関数にするの?
vbaで処理完結したほうが良いと思うけど

284:デフォルトの名無しさん
18/09/21 23:05:24.48 oOcVj6Vd.net
>>273
それも場合によるかと
帳票、単票みたいなのをササっと作るときは、セル毎に式を組まないといけないから適してる。
あと行・列挿入が多い表に埋め込むときとか。
たぶんPowerShellerが想像してる表から表に変換するような場合にはあまり適してないね。
あと元の値が頻繁に変化するものは、そのたびにマクロ走らせないといけないから更新漏れが起こるのが困る。

285:デフォルトの名無しさん
18/09/21 23:37:14.57 3Rh/KByq.net
考え方なんかなワークシートで式使われる方がめんどく感じる
大量にあったりすると重いしメンテしづらかったりするし

286:デフォルトの名無しさん
18/09/21 23:47:44.41 dSxNadcR.net
Lispの糞コードいじる気分になるよね

287:デフォルトの名無しさん
18/09/21 23:50:48.56 UZbX0jXb.net
ワークシート関数なら他にはマネ出来ない
データ処理するだけならPowerShell使えって奴も多いんじゃね

288:デフォルトの名無しさん
18/09/21 23:50:54.80 MqKbhYRD.net
盛りすぎプロさんw

289:デフォルトの名無しさん
18/09/22 00:01:13.95 96L85sWt.net
SPLITみたいなのはワークシート関数にする派だな
汎用的な関数をワークシート内で使ったほうが見通しがいい
他にもMAP、FILTER、REDUCEみたいなのも自作して使ってるわ

290:デフォルトの名無しさん
18/09/22 00:04:01.76 /LVptLz+.net
JSPやASPの失敗を繰り返しとるな
帳票にデータを埋め込みたいなら式じゃなくシンプルにセル参照を使うといいよ
参照先はプレーンなデータ専用シートね
こうしとけばセキュリティ監査的に面倒なマクロ付きにしなくていい、
データ供給元の言語に依存しなくなる、
データ供給元のコードがシンプルになる、
データモデルがわかりやすくなる、などなどメリットが多い

291:デフォルトの名無しさん
18/09/22 00:17:31.94 T/6XWx9j.net
>>279
MAPやREDUCEに渡す無名関数はどうやってる?

292:デフォルトの名無しさん
18/09/22 02:18:36.18 niETRueG.net
ワークシート関数って”使う”のにかかる手間が少ないのがメリットだと思う。
関数の入力と出力だけ書いておけばVBA読めない人でもすぐに理解できる。
ワークシート関数使うのは使い捨ての帳票が大半だろうし>>280は全然違うものを想像してそう。

293:デフォルトの名無しさん
18/09/22 02:24:34.84 FJlDOW+X.net
お前ら本当にもっと会社の利益になる事を頑張ってくれよ
やらせてるのは女の子がやる様な簡単な仕事なんだからこんなどーでも良い大して役に立たないVBAなんかに時間を使わずに他の人を手伝うとかちゃんと勤務中は仕事してね
分かったね?

294:デフォルトの名無しさん
18/09/22 07:40:51.79 z7BGc1C3.net
自作のワークシート関数作るとエラー処理とか面倒
特にエクセルの柔軟すぎる型変換は予想しない結果になってしまう
>>283
君はまずハローワークに行こうな

295:デフォルトの名無しさん
18/09/22 08:08:03.84 T/6XWx9j.net
>>283
老害かな

296:デフォルトの名無しさん
18/09/22 09:49:40.55 /LVptLz+.net
>>282
使い捨て帳票ならそれこそ手入力で十分
デザインするついでにデータも入れればいい
プログラムするものは何度も繰り返し出力するもの、何人もの社員が出力するものだ
そういうのは先ほどレスした理由でセル参照を使ったほうがいい

297:デフォルトの名無しさん
18/09/22 09:55:14.40 MP8LoRbH.net
質問です
パワーシェルって.Net Freamworkの寄生虫みたいなもので
単体だとただのシェルと変わらないって本当です?

298:デフォルトの名無しさん
18/09/22 09:58:32.80 WimPZWqW.net
VBAがOffice製品の寄生虫なのと一緒

299:デフォルトの名無しさん
18/09/22 11:14:47.29 KDDLtPfl.net
VBAは個々の重いOfficeアプリを起動しないと動かせないけどPowerShellはIDEでも普通のPSコンソールでもPSだけでサクサク動かせるからそこが違う

300:デフォルトの名無しさん
18/09/22 11:36:15.01 mc091pM3.net
PowerShell自体がたかがコマンドラインシェルのくせに起動ゲロ遅いから目糞鼻糞

301:デフォルトの名無しさん
18/09/22 11:38:46.45 CkoNNNs2.net
Cmdプロの人の嫉妬かな

302:デフォルトの名無しさん
18/09/22 11:55:38.81 mc091pM3.net
使ってるよ?
最近はだいたいbashで済ませてるけど

303:デフォルトの名無しさん
18/09/22 21:13:08.35 +NSfHsNE.net
質問です。
ソルバー 機能をvbaで使ってるんだけど、目的や制約をセルを対象じゃなく、vba内の変数に対して適用したいんだけど不可能?

304:デフォルトの名無しさん
18/09/22 22:34:22.71 96L85sWt.net
>>281
クッソダサいしなんちゃってmapだけど文字列で渡してる
=MAP(A1:A10,”$$*EXP($$)”)
みたいな感じで

305:デフォルトの名無しさん
18/09/22 23:03:40.40 iO7YjT3j.net
「=SUM(A1:A10)」のようにSUM関数の引数に計算範囲をして合計値を表示したあとで
その計算範囲のセルの値を書き換えた場合に合計値が更新されないことがあるのですがなぜでしょうか?
そのあと値を書き換えたセルでF2を押して入力状態にし、そのままエンターを押すとようやく合計値が更新されます。

306:デフォルトの名無しさん
18/09/22 23:53:28.61 niETRueG.net
>>295
自動再計算が手動になっているのでは?

307:デフォルトの名無しさん
18/09/23 13:25:57.01 6+b91Fhf.net
>>279
是非使いたいから公開してよ

308:デフォルトの名無しさん
18/09/23 15:33:34.28 aZjrg24v.net
>>254
似たようなことやってる。
ユーザー定義関数じゃないけど昔のAPIビューアをドッカブルにした奴をVB.netで作って使ってる。

309:デフォルトの名無しさん
18/09/23 15:35:54.14 aZjrg24v.net
>>258
ただ、ワークシート関数は重くなる場合もあるし自分は敬遠する傾向だな。
でも一長一短でワークシート関数の方が良い場合も当然ある。

310:デフォルトの名無しさん
18/09/23 15:38:28.44 aZjrg24v.net
>>260
バカ丸出しだなあ。
あのね、それで使う側にとって何が良くなるの?
そこを語るべきだろ。
それが納得できるような話が今まで殆ど語られたことがない。

311:デフォルトの名無しさん
18/09/23 15:47:46.09 aZjrg24v.net
>>269
何度言っても分からない人だねえ。
エクセルのファイル作るだけなら何使っても良い。
別にVBAが有利なことも無い。
逆にファイル開いた状態から動かす時は1ファイルで済むVBAが有利だろう。
だからVBAの話題になってるこのスレなんかもメインはそういうVBA有利な場面の話なんだよ。
実際、VBA不利な場面なんていくらでも知ってるけど、不思議とアンチの言葉とは丸っきり被らない。
アンチの言葉は全く説得力がない。
被れば、こっちも「確かに」となる筈なんだけどね。

312:デフォルトの名無しさん
18/09/23 16:04:30.67 xERBcwZj.net
まーた1ファイル論争になってるのか、もう神学論争だよねこれ
VBA以外の言語でもCOMオブジェクトとしてアクティブなブックを操作できるわけだし、想定ユーザーのスキルレベルや運用条


313:件や処理の内容によってVBAを使うべきか使わなくても良いかの判断なんて変わってくるでしょ



314:デフォルトの名無しさん
18/09/23 16:04:32.08 9e4CRvDY.net
大将、ドーナッツ一丁!

315:デフォルトの名無しさん
18/09/23 16:30:52.15 H5quPExp.net
自分の場合はそもそもエクセルを開いた状態で動かしたいプログラムというのがあまり無いです
VBAを普段使いしているひとはどういう用途・目的でエクセルを開いた状態でマクロを使っているのでしょうか?

316:デフォルトの名無しさん
18/09/23 16:46:09.55 yOUnCcQA.net
つまりVBAなんて必要ないって事だよね
そんなクソ言語を覚える意味ないもんな

317:デフォルトの名無しさん
18/09/23 16:49:36.19 aZjrg24v.net
>>302
だから、それはそもそも何の言語でも良い話だろ。
VBAのスレなんだからVBA有利な話になるのが当たり前なんだよ。
だから1ファイルの話になるのが当然なの。
何で当たり前のことも出来ない話をしなきゃならんのかって話。

318:デフォルトの名無しさん
18/09/23 16:54:56.19 aZjrg24v.net
>>304
それはそもそもVBAである必要の無い話だろうに。
何でこのスレに来てるんだということになる。
こっちは殆どブック開いた状態が基本だよ。
だから最初から噛み合わない。
CSVなら分かるけどExcelのブックは開いて人の判断なりを使って何かするのが基本。
じゃなかったらそもそも人間が理解出来る表である必要もなく、単なるバイナリのデータで良いわけだ。

319:デフォルトの名無しさん
18/09/23 16:59:47.48 xERBcwZj.net
落ち着こうや、常にVBAが有利なわけじゃないよねって言っただけだぞ

320:デフォルトの名無しさん
18/09/23 17:00:28.44 9e4CRvDY.net
みんながみんなそういう狭い世界で生きてるわけじゃない
キミのエクセルに対する姿勢はそうだってだけで
他の人は閉じた状態でもエクセルを扱う、
複数のファイルを扱う、エクセル以外との連携もする
その前提は崩しちゃいかんと思うのよ

321:デフォルトの名無しさん
18/09/23 17:04:15.89 0vXeudiz.net
みんながエクセル使えないわけやないんやでw

322:デフォルトの名無しさん
18/09/23 17:06:10.83 bxERXRN+.net
だからさー、、、、話し相手が居ない淋しいプログラマの皆さんは、プログラ「ム」板のExcel VBAスレはなく
上にあるプログラマー板のどっかそういうスレで話し相手探せっつーの
それすら判らんようになってんのかいな。
ここで思いっきりマウンティングしたいというか、ここでないとマウンティング出来ないのは判るけどさー

323:デフォルトの名無しさん
18/09/23 17:08:31.58 xERBcwZj.net
このスレに来る目的とかVBAに対して取るべき態度とかそんなの人の勝手じゃんよ

324:デフォルトの名無しさん
18/09/23 17:11:49.59 aZjrg24v.net
>>309
違うっちゅうの。
閉じた状態でブック触るならそもそも何の言語でも良いし、というよりむしろVBAは不利なんじゃないの?
じゃあ、何でVBAのスレが有るかと言えばそれは開いた状態で何かする話をしたいからだろ。
そりゃ、VBAだってある程度は汎用的に使えるから閉じた状態からVBAでどうにかする話題が有っても良いけどメインじゃないでしょ。

325:デフォルトの名無しさん
18/09/23 17:15:40.69 xERBcwZj.net
C#とかでCOM経由でエクセル触る前提だけどエクセルのオブジェクトモデルについてだけ質問したいと思った人がこっちに来る可能性だって十分あるんだよなぁ

326:デフォルトの名無しさん
18/09/23 17:16:23.42 0vXeudiz.net
ガキかいなw
そもそもvbaがいらない場面でvba使おうとして、あげくの果てにvbaが有利やないとか
訳わからん事言いだすプロさんがおると質問が収束せんねんw
端的に言って迷惑やねんプロさんw
>>312おまえの事やでw

327:デフォルトの名無しさん
18/09/23 17:50:56.48 icVHbGJq.net
自演で荒らすのはよくないよPyキチ君

328:デフォルトの名無しさん
18/09/23 18:06:38.73 cRG95Xcq.net
vbaとrubyはイロイロと空気がにてる
ゴミっぷりも似てる

329:デフォルトの名無しさん
18/09/23 18:07:15.36 cRG95Xcq.net
エクセルは優秀な表計算ソフトウェア
コレは間違いない
しかしエクセルのオマケ機能のvbaはウンコ
コレは間違いない

330:デフォルトの名無しさん
18/09/23 18:09:15.69 H5quPExp.net
>>307



331:キいませんあなたが何を言いたいのかよくわかりません ブックを開いた状態から起動するマクロで有用な具体例はなにかありませんか? 抽象的な答えでごまかそうとしてませんか?



332:デフォルトの名無しさん
18/09/23 18:31:08.96 RgL9otrm.net
ハンカクでまた別人アピールしてるの?
いい加減に板を荒らすのは止めな

333:デフォルトの名無しさん
18/09/24 00:45:26.83 LqyRy1HC.net
ちょっと質問です。
とあるコードで
If 条件1 Then
MsgBox "メッセージ1"
End
ElseIf 条件2 Then
MsgBox "メッセージ2"
End
Else
End If
という記述を見たんですけど、Ifの中でEnd使うことってあるんですか?
やってる内容は
If 条件1 Then
MsgBox "メッセージ1"
End If
If 条件2 Then
MsgBox "メッセージ2"
End If
と同じなのかなと思ったんですけど、ご存知の方御教示頂ければ幸いです。

334:デフォルトの名無しさん
18/09/24 00:51:36.52 cyCxPH/A.net
>>321
Endのことはさておき、そのふたつのコードの意味は異なるよ

335:デフォルトの名無しさん
18/09/24 01:02:46.39 LqyRy1HC.net
>>322
本来意味が異なるのは分かるんですが、処理内容がそんな感じだったのでEndにはそういった意味があるのかな?と思って質問した次第です。

336:デフォルトの名無しさん
18/09/24 01:54:26.03 GrunNCaI.net
>>321
全く意味が違う。END使ったらプログラムが強制終了されてしまう。絶対に使うべきではない。
Sub main1()
Call sub1(True, True)
MsgBox "main終了"
End Sub
Sub sub1(条件1 As Boolean, 条件2 As Boolean)
If 条件1 Then
MsgBox "メッセージ1"
End
ElseIf 条件2 Then
MsgBox "メッセージ2"
End
Else
End If
End Sub
'結果:メッセージ1しか出ない
Sub main2()
Call sub2(True, True)
MsgBox "main2終了"
End Sub
Sub sub2(条件1 As Boolean, 条件2 As Boolean)
If 条件1 Then
MsgBox "メッセージ1"
End If
If 条件2 Then
MsgBox "メッセージ2"
End If
End Sub
'結果:メッセージ1、メッセージ2、main終了

337:デフォルトの名無しさん
18/09/24 03:08:18.87 3gV95ADu.net
Exit Sub とか Exit Function とかと違って、呼び出し元のプロシージャに返ることもなく一切のプログラムがそこで終了するコードってことだ。
Ifの中でEndを使うことがあるのかと訊かれれば、文法上は問題ないが俺だったら使わん。
もっとも、「早く返す」や「早く終了する」を追い求めたその人なりの結果かもしれんので、見かけたとしても内容次第で、問題のあるコードでなければとやかくは言わない。

338:デフォルトの名無しさん
18/09/24 05:43:58.48 sHYzq55w.net
>>321
Endステートメントを使うと、単にコードの実行が止まるだけでなくアプリケーションで保持していた全ての変数の値がリセットされ、アプリケーションに対する外部プロセスからの参照も遮断される
モードレス表示でフォームを表示している場合、値管理やカスタム常駐クラス使用のためにグローバル変数を使っている場合等には問題が生じるので本当に要注意

339:デフォルトの名無しさん
18/09/24 07:37:11.59 E4VB1fuR.net
状況わからんからなんとも言えんが致命的なエラー時に強制終了させるぐらいしかないと思う
>>321のコードは微妙にそう言うコード片な感じもするし

340:デフォルトの名無しさん
18/09/24 09:12:46.29 ALTh+r7C.net
>>321
多分エラーメッセージの後、後続処理をやりたくないのでendって書いたんだろう
exit subで抜けても呼び元に帰って続行するから

341:デフォルトの名無しさん
18/09/24 09:24:57.98 LqyRy1HC.net
皆さまありがとうございます。
ちゃんと読んでみたら終了するコードでした…お恥ずかしい…
今後質問する際は頭をリフレッシュさせて読み直してからに致します。
ご迷惑をお掛けしました。ありがとうございました!

342:デフォルトの名無しさん
18/09/24 09:47:07.47 ltYXr3cK.net
psやらrubyやら喚き叫ぶバカよりは良い w

343:デフォルトの名無しさん
18/09/24 10:16:18.94 Z99vN/yN.net
>>329
ところで
If 条件1 Then
 ・・・
ElseIf 条件2 Then
 ・・・
End If

If 条件1 Then
 ・・・
End If
If 条件2 Then



344: ・・・ End If では意味が違ってくるのはわかってますか?



345:デフォルトの名無しさん
18/09/24 10:25:02.72 oCpujaFY.net
周回遅れなアホ質問要らん

346:デフォルトの名無しさん
18/09/24 10:26:57.24 Z99vN/yN.net
>>332
いや、>>323のレスを見ると不安になるだろ

347:デフォルトの名無しさん
18/09/24 10:34:31.82 LqyRy1HC.net
>>331
ほんと何処に目をつけていたのか自分でも分からなくてお恥ずかしい限りですがElseの意味は分かっています。申し訳ないです…

348:デフォルトの名無しさん
18/09/24 12:24:14.30 0AspGVrS.net
>>334
訊かれてるのは ElseIf の意味だぞ

349:デフォルトの名無しさん
18/09/24 12:47:03.05 3gV95ADu.net
質問(した方が逆に質問される)スレ

350:デフォルトの名無しさん
18/09/24 16:16:37.08 Z99vN/yN.net
URLリンク(qiita.com)
いつもながら薄気味悪い
誰に語りかけてるんだよ?

351:デフォルトの名無しさん
18/09/24 16:35:59.07 e4NBE4Fp.net
>>319
そもそもの考え方が違うから思い付かないんだろう。
例えば日付毎の生産量を表す表とグラフが有ったとする。
表示する期間を指定することでグラフ表示が変化するプログラムが有ったとしよう。
何でそんな機能が必要かといえば、表とグラフをにらめっこして、1週間後のグラフはどうだろうという要望や判断が有るからだ。
こんな例すら思い付かないんだから知識や技術が有ってもダメプログラマーなんだろうな。

352:デフォルトの名無しさん
18/09/24 18:01:08.47 qkXKwQlD.net
荒らし本人が言ってもな

353:デフォルトの名無しさん
18/09/24 18:02:07.29 NcXWYl5J.net
>>337
webってそういうもんだよ
知らないの?何十年前の人間なの?

354:デフォルトの名無しさん
18/09/24 18:06:57.12 In5MTxMl.net
そんなのPowerShellかRubyで十分

355:デフォルトの名無しさん
18/09/24 18:20:22.67 Z99vN/yN.net
>>340
qiita VBAタグの劣化は許しがたい
そうは思わないか?

356:デフォルトの名無しさん
18/09/24 18:28:34.71 sPlVwsRd.net
>>338
どの言語でも簡単にできる上にそういうツールって今はいくらでもあるんでVBAでやる理由としてはちょっち弱いですね
これはエクセル開いた状態のVBAじゃないと絶対無理だっていう事例を知りたいです

357:デフォルトの名無しさん
18/09/24 18:32:02.32 qkXKwQlD.net
>>342
頭大丈夫か?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch