1 名前:デフォルトの名無しさん [2020/08/30(日) 11:55:27.33 ID:Oy/VxFsh0.net] !extend:checked:vvvvv:1000:512 ↑同じ内容を2行貼り付ける ExcelのVBAに関する質問スレです コード書き込みや作成依頼もOK ※前スレ Excel VBA 質問スレ Part67 https://mevius.5ch.net/test/read.cgi/tech/1593104489/ VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
201 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:37:08.36 ID:uWh6vQvPa.net] エクセルVBA は当分なくならないですかね
202 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 22:43:44.96 ID:WalExY5Hd.net] >>200 VBAを教えてるサイトでコメントをシングルクォートで閉じたりカッコを全角で書くやつなんて世界に一人しかいない 本人ならDimやインデントはちゃんと書くはずだし、完全にパクリだな
203 名前:デフォルトの名無しさん [2020/09/10(木) 22:59:03.63 ID:VdzBOqiR0.net] 180ですなんとかできました。ド素人なんで申し訳ない このコードはそんなできのいいものじゃないんですか? 先生凄く威圧的でいつもそんなんもわからんのかみたいな喋り方なんすけど
204 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:10:15.32 ID:8/CQSYne0.net] すまん wsfやhtaでvbs書くとき 'コメント' って書くわ エディタの色付けがjs用だから
205 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:26:05.51 ID:8/CQSYne0.net] >>203 「なんで乱数を整数化するのにRoundを使ってしまったんですか?」って聞いてみて
206 名前:デフォルトの名無しさん [2020/09/10(木) 23:27:44.84 ID:a+RPoaYl0.net] 他の言語でも行コメントで見出し風にするプロはそれなりにいる。 ただ、初心者に教える人間が行コメント構文を、ブロックコメント構文と同じ使い方をするのは、初心者を混乱させるだけで、何のメリットもない。
207 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:29:02.40 ID:b8lNN7jK0.net] >>203 なんで変数宣言しないんですか? なんでx1とかわかりづらい命名するんですか? なんでx1とかを上書きするようなわかりづらい変数の使い方してるんですか? インデントの使い方に意図はありますか? 6の意味が説明されないとわからないのは不親切ですね などなど…色々質問してみたらいいよ
208 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:31:52.10 ID:ewRWdYKCd.net] >>203 その先生は、少なくともVBAの知識だけは大したことないことは誰が見てもわかる ほかの言語のエキスパートでVBAをバカにする人もいるけど、人に教えるんならちゃんとしろと思う >>199 よく見つけたな
209 名前:デフォルトの名無しさん [2020/09/10(木) 23:31:53.48 ID:a+RPoaYl0.net] >>205 それもなんか見ると気になるな。コードの順番も変だし、数値の精度やデータ型をわざとヘンテコにしているのかも謎。
210 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:33:45.89 ID:ATM2a6JOd.net] >>205 Rndの定義から考えればIntを使うのが自然だけど、まあそこは100%間違いとは言い切れないからなあ
211 名前:デフォルトの名無しさん [2020/09/10(木) 23:33:50.53 ID:a+RPoaYl0.net] その先生だと6は数値ではなく数字です! マジックナンバーって何と言いそうw
212 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:34:53.46 ID:ATM2a6JOd.net] コードのおかしさは、その先生よりコピペ元のサイトの責任だろ
213 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:37:35.65 ID:8/CQSYne0.net] >>212 ドコモロは黙っててくれないか
214 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:43:13.95 ID:b8lNN7jK0.net] >>212 教える側の立場として教材として使うかどうか判断したんだから元のところに責任はねーだろ なんか改悪もしてるし
215 名前:デフォルトの名無しさん [2020/09/10(木) 23:50:48.35 ID:Q3JELDTy0.net] ループの外でウエイトしてたら速すぎてキラキラしないんじゃ…。 紙に書いてある方。
216 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:52:06.33 ID:2cDIJpauM.net] >>200 こいつもかなり怪しいな i, jを宣言してないし、変数をゼロクリアしてるのも謎
217 名前:デフォルトの名無しさん mailto:sage [2020/09/10(木) 23:53:08.37 ID:/1fuNzSOa.net] >>215 確かに言われてみれば キラキラの意味
218 名前:デフォルトの名無しさん (ワッチョイ a95f-Sism) [2020/09/11(金) 01:20:18 ID:66INGyZB0.net] >>216 本業が税理士なのに、詳しくもないことをひけらかすやつだから、税理士としてもいまひとつの癖のあるやつだと思う。
219 名前:デフォルトの名無しさん (ワッチョイ a95f-Sism) [2020/09/11(金) 01:22:28 ID:66INGyZB0.net] >>216 彼も他人のパクリなのかもね
220 名前:デフォルトの名無しさん (ワントンキン MM7a-nV8z) [2020/09/11(金) 01:27:34 ID:iTcJm+RBM.net] ゆとり世代の馬鹿に教えるゆとりかよ
221 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 08:33:42.89 ID:L6SxevYWd.net] >>146 そいつはバグだと思うよ。 Mougで質問してた人がいて、俺も試したけどTreeViewでのD&Dで座標がバグってる。 で、15ってのはそのバグを何とか実情に合わせたものだと思う。 俺もその時似たようなことやって15っていう数字には覚えがある。
222 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 09:37:00.89 ID:mn04Qg6+M.net] >>221 >>146 です。色々調べた結果、TreeViewのMouseMoveやMouseDownのイベントで渡される座標が他のフォームとは異なりピクセルで渡される事が原因でした。 なのでGetDesktopWindow,GetDC,GetDeviceCapを用いてDPIを取得し、 取得した値で1440(1440twips=1Inch)を割り、 その値をピクセル数に掛ける事でポイントでの換算に成功しました。 標準の設定ですとDPIが96になるそうなので1440/96で15、となるようです。
223 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 16:13:39.65 ID:qEgHhc430.net] VB6だとScreen.TwipsPerPixelXってあったんだがなあ VBAだとPointsToScreenPixelsXとかあるなと思ってみてみたけど、これ、つねに72DPIで計算するっぽいな
224 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 18:44:31.89 ID:+9zmYtvxd.net] >>192 それだと1回めの選択範囲で動いて、移動したら動きますよね? 1回目の行や列を記憶させて2回目で比較する感じですか?
225 名前:デフォルトの名無しさん mailto:sage [2020/09/11(金) 22:11:41.98 ID:L6SxevYWd.net] >>222 >>223 うん、その辺みんな知ってるけどTreeViewの問題って違ってたと思うんだが。
226 名前:デフォルトの名無しさん [2020/09/12(土) 08:12:41.83 ID:cGm6fMBf0.net] 動的配列に値を追加していきたいのですが要素番号を0ではなく1から始める方法はありませんか?
227 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 08:24:59.90 ID:OyGZa+nz0.net] Sub testtttt() Dim arr() As Variant ReDim arr(1 To 1) arr(1) = 10 ReDim Preserve arr(1 To 2) arr(2) = 20 ReDim Preserve arr(1 To 3) arr(3) = 30 MsgBox arr(1) & " " & arr(2) & " " & arr(3) End Sub ちょっとはぐぐれよな https://www.relief.jp/docs/excel-vba-shift-array-index-to-1-start.html
228 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 08:28:00.30 ID:FkIM4E0+M.net] 『[ VBA ]「Option Base 1」使うなよな!反論は聞かない!』
229 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 15:06:14.92 ID:X8G1U5XY0.net] アレイリスト使うほうがかんたんじゃね?
230 名前:デフォルトの名無しさん mailto:sage [2020/09/12(土) 20:26:44.99 ID:+6u/uPRn0.net] 先頭を1にするのはセンスないね
231 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:06:26.03 ID:YLQY1Qz5r.net] i++とか+=使えないのマジで不便だな 前置インクリメントもできないし一行でもend ifとかloop書かなきゃいかんしめんどくさくね? この言語もうちょい進化しないの?
232 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:10:50.73 ID:CnoY9xmOM.net] 1行でEnd If書きたくないならThenの後に半角スペースいれたら改行しないで処理書いてみ ++とかは禿同
233 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 18:13:56.53 ID:YLQY1Qz5r.net] >>232 おおこんなことが、、、 ありがとう!
234 名前:デフォルトの名無しさん [2020/09/14(月) 18:15:50.60 ID:LbAMjRkX0.net] >>231 馬鹿は死ねよ
235 名前:デフォルトの名無しさん [2020/09/14(月) 19:51:50.83 ID:ZpzZ2vr50.net] ガイジ君ブチ切れw
236 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 19:57:09.34 ID:lPVfhwtb0.net] ざわ・・ざわ・・
237 名前:デフォルトの名無しさん [2020/09/14(月) 20:46:20.36 ID:LbAMjRkX0.net] +=使えるだろうが
238 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 20:54:32.80 ID:P2Bbq2Qk0.net] 使えません
239 名前:デフォルトの名無しさん [2020/09/14(月) 20:56:59.34 ID:LbAMjRkX0.net] あー、VB.Netスレだと思ってた。スマン、死んでくる。
240 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:01:00.11 ID:P2Bbq2Qk0.net] 逝かないで
241 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 21:01:06.64 ID:K/D9SivKp.net] 制御構造は、キーワードの選び方がやや独特だけど、基本的なものについては、概ね他の言語と同等のことはできると思う。 どちらかというと、変数の宣言・定義が一緒にできないとか、配列・コレクションの要素参照が角括弧でなく丸括弧だとか、プロシージャ呼び出しの丸括弧の要否とかの方が不便さを感じるかな。まぁ、これらも慣れと言われればそれまでだが。
242 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 22:06:22.62 ID:9LhT2bwK0.net] gotoとラベルでできるっちゃあできるけどcontinueとbreakが欲しい
243 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 22:20:37.59 ID:8aASiVNY0.net] breakは、一応Exit 〜が概ね対応しているのでは(While〜Wendでは使えないけど)? 脱出するループを明示的に指定するので、breakより便利な場合もごくたまにある。もっとも、二重のForループから抜ける場合などは結局GoToに頼ることになるので中途半端ではあるけど。
244 名前:デフォルトの名無しさん mailto:sage [2020/09/14(月) 23:27:12.72 ID:EMg7ooaX0.net] 俺もたまにラベルでcontinueするけどめちゃくちゃ見栄え悪くて嫌
245 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 08:35:58.25 ID:Ny+/GOwEd.net] >>232 >>233 基本、それは使わないな。 読みやすさとか構造の分かり易さ優先。 勿論、時と場合による。
246 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:16:48.30 ID:Ty4jOAMY0.net] ユーザーフォームの2つリストボックスで選択された値を変数に代入する方法を教えてください ■Module1 Public str As String ■ThisWorkbook Sub tes1() UserForm1.Show vbModeless Range("A1").Value = str End Sub Sub tes2() Range("A2").Value = str End Sub
247 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:17:03.49 ID:Ty4jOAMY0.net] ■UserForm1 Private Sub UserForm_Initialize() Dim r As Long For r = Year(Date) - 1 To Year(Date) + 2 UserForm1.ListBox1.AddItem r & "年" Next r For r = 1 To 12 UserForm1.ListBox2.AddItem r & "月" Next r UserForm1.Show vbModeless End Sub Private Sub OKbtn_Click() str = Replace(UserForm1.ListBox1.Text, "年", "") & "_" & Replace(UserForm1.ListBox2.Text, "月", "") Unload UserForm1 End Sub テストで変数strをA1・A2に入れたいのですが、この方法だとどちらも入りません。
248 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:33:07.65 ID:q5KWnXWXM.net] ボタン押してstrに代入するところModule1.strじゃないとダメなんじゃないの
249 名前:246 mailto:sage [2020/09/15(火) 09:45:50.10 ID:Ty4jOAMY0.net] >>248 試しましたがだめでした 追記 ブックを開いたまま、tes1を2回目に実行するとA1には書き込みますが、 ブックを開いて、1回目のtes1実行ではA1には書き込まれないようです。
250 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 09:57:04.92 ID:q5KWnXWXM.net] モードレスだから ボタン押した時にUnload UserForm1する前にModule1.tes2を呼び出さないとだ Sub tes1() UserForm1.Show vbModeless End Sub Sub tes2() Range("A1").Value = str Range("A2").Value = str End Sub
251 名前:246 mailto:sage [2020/09/15(火) 11:27:58.65 ID:Ty4jOAMY0.net] >>250 ありがとうございました。解決しました
252 名前:デフォルトの名無しさん mailto:sage [2020/09/15(火) 18:56:31.81 ID:Nzz3069/0.net] AccessVBAを使用しているのですが、標準モジュールを変数に格納する方法がわかりません。 フォームコントロールの様に変数に入れて扱う方法はありませんでしょうか。
253 名前:デフォルトの名無しさん [2020/09/15(火) 19:29:57.34 ID:pZ4d9dfu0.net] ありません
254 名前:デフォルトの名無しさん [2020/09/16(水) 00:02:05.57 ID:chmz5kZM0.net] Sub test() MsgBox Me.TextBox1.Value Me.Name="a" Me.Name="Sheet1" End Sub 1回目の実行 OK 2回目の実行 MsgBoxでエラー 3回目の実行 OK 4回目の実行 MsgBoxでエラー なんでやねん!
255 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 01:13:07.34 ID:fUx+IXsk0.net] >>254 F8 でステップ実行してみ、あとエラーの内容くらい書いてもよくね?
256 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 10:04:16.38 ID:HoY0/Pv80.net] >>253 ありがとうございます。 フォームを格納できるなら標準モジュールも出来るのかと思って質問しました。 標準モジュール内に書かれた関数の引数として参照先の標準モジュールを渡したかったのですが、別の方法を考えてみます。
257 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 18:43:38.23 ID:DJD3HHCL0.net] 動画ファイル(拡張子 mp4,avi等々)の長さ(時間)をvbaで得ること出来ませんかね。 動画用のプログラムでは出ているから何らか手段はあると思うのだけど。
258 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 19:23:25.54 ID:u7LyhgECM.net] >>257 できる はい、次
259 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 19:55:21.82 ID:KOE6L/fW0.net] >>257 拾い物、動くかどうかは知らん Sub ボタン1_Click() Dim Shell, Folder Set Shell = CreateObject("Shell.Application") Set Folder = Shell.Namespace(Range("A1").Value) Fil = Dir(Range("a1").Value & "\*.*") Rows("5:65536").ClearComments i = 5 Do While Fil <> "" For j = 0 To 40 Cells(i, j + 1).Value = Folder.GetDetailsOf(Folder.ParseName(Fil), j) Next i = i + 1 Fil = Dir() Loop Set Folder = Nothing Set Shell = Nothing End Sub
260 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 20:18:38.96 ID:pG4LN1Ne0.net] 手を抜くんじゃない! まじめにヘッダー読み込んで解析しろよ
261 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 20:21:47.41 ID:0zA9ovKo0.net] ファイルのプロパティからは取れない場合もあるよ
262 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 21:31:45.86 ID:chmz5kZM0.net] >>255 今環境ないんだけど、 アプリケーションの定義何とかか、 インデックス何とかか、 オートメーション何とかのどれか。 何か変なものがSetされちゃってるのかと思ったけど、 MeじゃMeしかないよね?
263 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 22:10:00.45 ID:jvSIB85Td.net] >>260 昔、解析したことがある。 aviとかは割と簡単だね。
264 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:12:03.30 ID:dsrVDQ5Z0.net] すごく初歩的な質問ですみません &演算子で文字列と数字をつないで文字列を作った時に 出来上がった文字列に""を付けなくていいのはなぜなのですか? MsgBox "あいうえお" は""を付ける必要がある MsgBox "A" & hoge は文字列扱いのはずなのに""を付けて MsgBox ""A" & hoge"のようにしなくていいのが解せません
265 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:23:17.92 ID:0zA9ovKo0.net] &とhogeは文字列ではなく演算子と変数
266 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:24:34.57 ID:0zA9ovKo0.net] ""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない
267 名前:デフォルトの名無しさん mailto:sage [2020/09/16(水) 23:48:53.36 ID:dsrVDQ5Z0.net] ありがとうございます >""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない なるほど確かにです では、&演算子でつなぐと文字列扱いになるという認識が間違っているのでしょうか? それとも文字列扱いにはなるけど上記の理由から外すことになっているという感じでしょうか?
268 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:09:43.18 ID:pIQJoJyT0.net] >>267 その場合、 hogeは文字列として認識してください という命令を出している つまり 文字列(”A”) と(&) 文字列(hogeという変数に入っている文字列) を繋ぎ合わせて表示してください というのが”A” & hoge
269 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:09:48.11 ID:MJVBSNKC0.net] ダブルクォートには引数の囲むような意味はない 引数を囲む記号は丸括弧になる たとえば X = msgbox("a" & hoge) みたいな書き方になる 返り値をとらない場合は()が省略可能ってだけ
270 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:11:18.08 ID:D84tTl8o0.net] リテラルと変数について調べると理解できるかも
271 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:13:09.47 ID:ncMNPksn0.net] >>267 hoteの型は何なんだ
272 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 00:21:16.12 ID:0EHVBisp0.net] 値に型ってのがあるのを理解しよう 表示したいのは、"A"という値と変数hogeの値(を連結したもの)だろ &演算子でつなぐと文字列扱いになるってのは、演算対象を文字列に変換して結合するってこと この場合、hogeの値が文字列以外でも文字列に変換して評価するってことだ 基本を理解したいなら、なんの説明もなく&でつなぐと文字列扱いとかいう教え方するところは避けたほうが良いかな とりあえず動けばいいってならまあすきにすればいいけど
273 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 02:20:25.53 ID:c2bYLY/G0.net] MsgBoxの第1引数は文字列型の値である必要があり、文字列型の値を表す式として典型的なのは、@文字列リテラルか、A文字列型の値が格納されている変数(文字列型変数)の参照。二重引用符は、文字列リテラルの表記方法に過ぎない。 &演算子は、本来、2つの文字列型の値を被演算数とする演算子だが、被演算数が文字列型の値と数値型の値であるような場合等は、適宜数値の方を文字列型の値に自動変換した上で本来の演算を行う……ということかと。重複になるが。
274 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 04:55:16.59 ID:PzgKRL2g0.net] 数値を文字に変換するなら CSTR がある
275 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 07:47:55.65 ID:iixTl117d.net] >>267 法則を暗記するからそうなる。 法則の仕組みを覚えるんだ。
276 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 11:44:40.11 ID:1/N+zsdG0.net] 同じフォルダにある"〇〇"というCSVを開いて、そのシートの最終行を取得したいのですが 「インデックスが有効範囲にありません」というメッセージでとまります Sub salegrp() Workbooks.Open ThisWorkbook.Path & "\〇〇", ReadOnly:=False MsgBox Sheets("〇〇").Cells(Rows.Count, 1).End(xlUp).Row End Sub 他のブックの最終行を表示する方法を教えてください (A列には最終行まで値が入っています)
277 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 11:54:47.91 ID:DZPRMbPmM.net] csv開いたてからActiveWork ook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rowすれば
278 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 12:14:37.64 ID:qGYgSA/Y0.net] >>276 必要なのは最終行に入ってるデータの内容?行数を知りたいだけ? 全データをワークシートに入れる必要がなければテキストファイルとして開いた方が早いかも
279 名前:デフォルトの名無しさん [2020/09/17(木) 12:24:52.75 ID:D1QZID39M.net] Workbooks.Openの返り値をとってそれを操作する なおRows.Countも省略せずにシート指定する
280 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 13:03:15.94 ID:1/N+zsdG0.net] >>277 できました。
281 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 16:10:59.23 ID:mN4YvgPv0.net] >>267 Sub tessstttt() Dim str1 As String Dim str2 As String str1 = "あいうえお" str2 = "かきくけこ" MsgBox str1 & str2 '結果「あいうえおかきくけこ」 MsgBox str1 & "かきくけこ" '結果「あいうえおかきくけこ」 MsgBox "あいうえお" & "かきくけこ" '結果「あいうえおかきくけこ」 End Sub
282 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 16:17:02.54 ID:mN4YvgPv0.net] >>279 ↑ VBA続けるつもりならこっちでやれるようにした方が
283 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 16:44:05.17 ID:T9Rqn+gv0.net] 他のbookやsheet絡むととたんに冗長になるんだよなぁ Range(.Cell(a,b))とか .Cellの前にもブックやシート指定しないとならんし
284 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 17:02:14.36 ID:pIQJoJyT0.net] >>283 むしろ1シートだけしか使わない場合でも、実効中に人がシート変更とかしても大丈夫なようにブック明記した方がいい
285 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 17:07:16.63 ID:N0wmq1hya.net] ブックとシート明示してworksheetオブジェクトの変数作ってそれ経由でアクセスさせるのが鉄板かね〜
286 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 17:41:26.80 ID:dgD4TP5z0.net] csvの最終行だったらテキスト形式でEOFまで吸い上げてってやった方が動作時間的には良さそうな気がした
287 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 18:04:52.95 ID:aPn4iHhdM.net] CSVの読み込みをしっかりやるならPowerQuery使おうみたいな話もあったりなかったり
288 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 18:51:11.07 ID:1zO/WKqm0.net] >>285 てか、基本でしょ
289 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 18:59:48.75 ID:DNVG/ozSa.net] >>288 鉄板と基本の違い教えて
290 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:13:46.34 ID:ncMNPksn0.net] シート明示してないコードほんと多い よくやるわ
291 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:55:58.19 ID:iixTl117d.net] >>279 俺なんて、必ずBookから書くぜ。 WithとSetを多用することになるが。
292 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:56:59.36 ID:iixTl117d.net] >>283 その例ならRangeの前にも"."が必要。
293 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 19:58:31.27 ID:iixTl117d.net] >>286 うん、CSVはLine Inputで1行ずつ+Splitで分解にすることが多い。
294 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 20:23:48.98 ID:dgD4TP5z0.net] VBA覚えたての頃はいちいちアクティブシート切り替えてシート指定省いてたけど Sheet1.Cells(a,b)って書く癖は絶対つけといた方が良いって今は思ってる 可読性が段違いだもん 暫く同じシートのセルをいじくりたおすならWithで目立つように囲ってやりゃあ良いし
295 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 20:32:12.03 ID:0EHVBisp0.net] >>286 項目中に改行含むcsvとかも存在するからなぁ 汎用的なcsvを真面目にパースするとかなり面倒 そしてEXCELは最強のCSVパーサ(笑)
296 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 20:38:51.87 ID:23KXp+DW0.net] なんつーレベルの高い話だよ 初心者が覚えようと思ってどんなもんかとスレを見たのが大間違いか
297 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 21:39:36.45 ID:ncMNPksn0.net] この先いつまで初心者を名乗るつもりか知らないがいちいちアピールしない方がいいよ
298 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 21:45:39.26 ID:DqUtQRPA0.net] >>294 可読性以前に怖いんだよな。 アクティブシートが切り替わっちゃったらどうしようって。 実行中の操作とかで。 DoEvents挟まなきゃ絶対切り替わらないってならいいんだけど。
299 名前:デフォルトの名無しさん mailto:sage [2020/09/17(木) 22:36:46.26 ID:qGYgSA/Y0.net] 可読性も考慮するならオブジェクト変数に入れたりWithで囲んだり、頻出する構文なら別Functionに飛ばすという手もある めんどくさいけどバグを出すよりはマシ
300 名前:デフォルトの名無しさん mailto:sage [2020/09/18(金) 01:50:57.23 ID:V3SekzLi0.net] そもそもオブジェクト指定のないCellsがいつでもActiveSheetを参照すると思うなよ シートモジュールに書いたCellsはそのシートを参照するんだぜ