!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
探検
Excel VBA 質問スレ Part68
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ dbda-8BP0)
2020/08/30(日) 11:55:27.33ID:Oy/VxFsh0222デフォルトの名無しさん (ブーイモ MM81-+eY2)
2020/09/11(金) 09:37:00.89ID:mn04Qg6+M223デフォルトの名無しさん (ワッチョイ 6a2f-sa+Q)
2020/09/11(金) 16:13:39.65ID:qEgHhc430 VB6だとScreen.TwipsPerPixelXってあったんだがなあ
VBAだとPointsToScreenPixelsXとかあるなと思ってみてみたけど、これ、つねに72DPIで計算するっぽいな
VBAだとPointsToScreenPixelsXとかあるなと思ってみてみたけど、これ、つねに72DPIで計算するっぽいな
224デフォルトの名無しさん (スップ Sdea-ah1O)
2020/09/11(金) 18:44:31.89ID:+9zmYtvxd225デフォルトの名無しさん (スップ Sd0a-4Ha4)
2020/09/11(金) 22:11:41.98ID:L6SxevYWd226デフォルトの名無しさん (ワッチョイ 7910-lSnV)
2020/09/12(土) 08:12:41.83ID:cGm6fMBf0 動的配列に値を追加していきたいのですが要素番号を0ではなく1から始める方法はありませんか?
227デフォルトの名無しさん (ワッチョイ ea01-/mq1)
2020/09/12(土) 08:24:59.90ID:OyGZa+nz0 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
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デフォルトの名無しさん (ブーイモ MM8e-EZp5)
2020/09/12(土) 08:28:00.30ID:FkIM4E0+M 『[ VBA ]「Option Base 1」使うなよな!反論は聞かない!』
229デフォルトの名無しさん (ワッチョイ 7d01-XADe)
2020/09/12(土) 15:06:14.92ID:X8G1U5XY0 アレイリスト使うほうがかんたんじゃね?
230デフォルトの名無しさん (ワッチョイ 11da-pVuC)
2020/09/12(土) 20:26:44.99ID:+6u/uPRn0 先頭を1にするのはセンスないね
231デフォルトの名無しさん (オッペケ Srbd-o3hV)
2020/09/14(月) 18:06:26.03ID:YLQY1Qz5r i++とか+=使えないのマジで不便だな
前置インクリメントもできないし一行でもend ifとかloop書かなきゃいかんしめんどくさくね?
この言語もうちょい進化しないの?
前置インクリメントもできないし一行でもend ifとかloop書かなきゃいかんしめんどくさくね?
この言語もうちょい進化しないの?
232デフォルトの名無しさん (ブーイモ MMc9-+eY2)
2020/09/14(月) 18:10:50.73ID:CnoY9xmOM 1行でEnd If書きたくないならThenの後に半角スペースいれたら改行しないで処理書いてみ
++とかは禿同
++とかは禿同
233デフォルトの名無しさん (オッペケ Srbd-o3hV)
2020/09/14(月) 18:13:56.53ID:YLQY1Qz5r234デフォルトの名無しさん (ワッチョイ 668e-0TEw)
2020/09/14(月) 18:15:50.60ID:LbAMjRkX0 >>231
馬鹿は死ねよ
馬鹿は死ねよ
235デフォルトの名無しさん (ワッチョイ 7910-lSnV)
2020/09/14(月) 19:51:50.83ID:ZpzZ2vr50 ガイジ君ブチ切れw
236デフォルトの名無しさん (ワッチョイ 6a42-vvkI)
2020/09/14(月) 19:57:09.34ID:lPVfhwtb0 ざわ・・ざわ・・
237デフォルトの名無しさん (ワッチョイ 668e-0TEw)
2020/09/14(月) 20:46:20.36ID:LbAMjRkX0 +=使えるだろうが
238デフォルトの名無しさん (ワッチョイ 0a4b-FgeY)
2020/09/14(月) 20:54:32.80ID:P2Bbq2Qk0 使えません
239デフォルトの名無しさん (ワッチョイ 668e-0TEw)
2020/09/14(月) 20:56:59.34ID:LbAMjRkX0 あー、VB.Netスレだと思ってた。スマン、死んでくる。
240デフォルトの名無しさん (ワッチョイ 0a4b-FgeY)
2020/09/14(月) 21:01:00.11ID:P2Bbq2Qk0 逝かないで
241デフォルトの名無しさん (ササクッテロレ Spbd-jNRp)
2020/09/14(月) 21:01:06.64ID:K/D9SivKp 制御構造は、キーワードの選び方がやや独特だけど、基本的なものについては、概ね他の言語と同等のことはできると思う。
どちらかというと、変数の宣言・定義が一緒にできないとか、配列・コレクションの要素参照が角括弧でなく丸括弧だとか、プロシージャ呼び出しの丸括弧の要否とかの方が不便さを感じるかな。まぁ、これらも慣れと言われればそれまでだが。
どちらかというと、変数の宣言・定義が一緒にできないとか、配列・コレクションの要素参照が角括弧でなく丸括弧だとか、プロシージャ呼び出しの丸括弧の要否とかの方が不便さを感じるかな。まぁ、これらも慣れと言われればそれまでだが。
242デフォルトの名無しさん (ワッチョイ a95f-hUiG)
2020/09/14(月) 22:06:22.62ID:9LhT2bwK0 gotoとラベルでできるっちゃあできるけどcontinueとbreakが欲しい
243デフォルトの名無しさん (ワッチョイ 393d-jNRp)
2020/09/14(月) 22:20:37.59ID:8aASiVNY0 breakは、一応Exit 〜が概ね対応しているのでは(While〜Wendでは使えないけど)?
脱出するループを明示的に指定するので、breakより便利な場合もごくたまにある。もっとも、二重のForループから抜ける場合などは結局GoToに頼ることになるので中途半端ではあるけど。
脱出するループを明示的に指定するので、breakより便利な場合もごくたまにある。もっとも、二重のForループから抜ける場合などは結局GoToに頼ることになるので中途半端ではあるけど。
244デフォルトの名無しさん (ワッチョイ 397c-bL/7)
2020/09/14(月) 23:27:12.72ID:EMg7ooaX0 俺もたまにラベルでcontinueするけどめちゃくちゃ見栄え悪くて嫌
245デフォルトの名無しさん (スップ Sd0a-4Ha4)
2020/09/15(火) 08:35:58.25ID:Ny+/GOwEd246デフォルトの名無しさん (ワッチョイ 11cc-QmsY)
2020/09/15(火) 09:16:48.30ID:Ty4jOAMY0 ユーザーフォームの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
■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デフォルトの名無しさん (ワッチョイ 11cc-QmsY)
2020/09/15(火) 09:17:03.49ID:Ty4jOAMY0 ■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に入れたいのですが、この方法だとどちらも入りません。
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デフォルトの名無しさん (テテンテンテン MM3e-FgeY)
2020/09/15(火) 09:33:07.65ID:q5KWnXWXM ボタン押してstrに代入するところModule1.strじゃないとダメなんじゃないの
249246 (ワッチョイ 11cc-QmsY)
2020/09/15(火) 09:45:50.10ID:Ty4jOAMY0250デフォルトの名無しさん (テテンテンテン MM3e-FgeY)
2020/09/15(火) 09:57:04.92ID:q5KWnXWXM モードレスだから
ボタン押した時にUnload UserForm1する前にModule1.tes2を呼び出さないとだ
Sub tes1()
UserForm1.Show vbModeless
End Sub
Sub tes2()
Range("A1").Value = str
Range("A2").Value = str
End Sub
ボタン押した時にUnload UserForm1する前にModule1.tes2を呼び出さないとだ
Sub tes1()
UserForm1.Show vbModeless
End Sub
Sub tes2()
Range("A1").Value = str
Range("A2").Value = str
End Sub
252デフォルトの名無しさん (ワッチョイ 799c-m1Uj)
2020/09/15(火) 18:56:31.81ID:Nzz3069/0 AccessVBAを使用しているのですが、標準モジュールを変数に格納する方法がわかりません。
フォームコントロールの様に変数に入れて扱う方法はありませんでしょうか。
フォームコントロールの様に変数に入れて扱う方法はありませんでしょうか。
253デフォルトの名無しさん (ワッチョイ 6de5-Pwf7)
2020/09/15(火) 19:29:57.34ID:pZ4d9dfu0 ありません
254デフォルトの名無しさん (ワッチョイ 97da-GUw/)
2020/09/16(水) 00:02:05.57ID:chmz5kZM0 Sub test()
MsgBox Me.TextBox1.Value
Me.Name="a"
Me.Name="Sheet1"
End Sub
1回目の実行 OK
2回目の実行 MsgBoxでエラー
3回目の実行 OK
4回目の実行 MsgBoxでエラー
なんでやねん!
MsgBox Me.TextBox1.Value
Me.Name="a"
Me.Name="Sheet1"
End Sub
1回目の実行 OK
2回目の実行 MsgBoxでエラー
3回目の実行 OK
4回目の実行 MsgBoxでエラー
なんでやねん!
255デフォルトの名無しさん (ワッチョイ b7da-Cup9)
2020/09/16(水) 01:13:07.34ID:fUx+IXsk0 >>254
F8 でステップ実行してみ、あとエラーの内容くらい書いてもよくね?
F8 でステップ実行してみ、あとエラーの内容くらい書いてもよくね?
256デフォルトの名無しさん (ワッチョイ f79c-b3rt)
2020/09/16(水) 10:04:16.38ID:HoY0/Pv80 >>253
ありがとうございます。
フォームを格納できるなら標準モジュールも出来るのかと思って質問しました。
標準モジュール内に書かれた関数の引数として参照先の標準モジュールを渡したかったのですが、別の方法を考えてみます。
ありがとうございます。
フォームを格納できるなら標準モジュールも出来るのかと思って質問しました。
標準モジュール内に書かれた関数の引数として参照先の標準モジュールを渡したかったのですが、別の方法を考えてみます。
257デフォルトの名無しさん (ワッチョイ bf90-W2Jb)
2020/09/16(水) 18:43:38.23ID:DJD3HHCL0 動画ファイル(拡張子 mp4,avi等々)の長さ(時間)をvbaで得ること出来ませんかね。
動画用のプログラムでは出ているから何らか手段はあると思うのだけど。
動画用のプログラムでは出ているから何らか手段はあると思うのだけど。
258デフォルトの名無しさん (ワンミングク MM7f-7bR7)
2020/09/16(水) 19:23:25.54ID:u7LyhgECM259デフォルトの名無しさん (ワッチョイ b7e5-cmNC)
2020/09/16(水) 19:55:21.82ID:KOE6L/fW0 >>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
拾い物、動くかどうかは知らん
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デフォルトの名無しさん (ワッチョイ f7e6-W2Jb)
2020/09/16(水) 20:18:38.96ID:pG4LN1Ne0 手を抜くんじゃない!
まじめにヘッダー読み込んで解析しろよ
まじめにヘッダー読み込んで解析しろよ
261デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/16(水) 20:21:47.41ID:0zA9ovKo0 ファイルのプロパティからは取れない場合もあるよ
262デフォルトの名無しさん (ワッチョイ 97da-Cup9)
2020/09/16(水) 21:31:45.86ID:chmz5kZM0 >>255
今環境ないんだけど、
アプリケーションの定義何とかか、
インデックス何とかか、
オートメーション何とかのどれか。
何か変なものがSetされちゃってるのかと思ったけど、
MeじゃMeしかないよね?
今環境ないんだけど、
アプリケーションの定義何とかか、
インデックス何とかか、
オートメーション何とかのどれか。
何か変なものがSetされちゃってるのかと思ったけど、
MeじゃMeしかないよね?
263デフォルトの名無しさん (スップ Sdbf-k5ub)
2020/09/16(水) 22:10:00.45ID:jvSIB85Td264デフォルトの名無しさん (ワッチョイ 5701-Cup9)
2020/09/16(水) 23:12:03.30ID:dsrVDQ5Z0 すごく初歩的な質問ですみません
&演算子で文字列と数字をつないで文字列を作った時に
出来上がった文字列に""を付けなくていいのはなぜなのですか?
MsgBox "あいうえお" は""を付ける必要がある
MsgBox "A" & hoge は文字列扱いのはずなのに""を付けて MsgBox ""A" & hoge"のようにしなくていいのが解せません
&演算子で文字列と数字をつないで文字列を作った時に
出来上がった文字列に""を付けなくていいのはなぜなのですか?
MsgBox "あいうえお" は""を付ける必要がある
MsgBox "A" & hoge は文字列扱いのはずなのに""を付けて MsgBox ""A" & hoge"のようにしなくていいのが解せません
265デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/16(水) 23:23:17.92ID:0zA9ovKo0 &とhogeは文字列ではなく演算子と変数
266デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/16(水) 23:24:34.57ID:0zA9ovKo0 ""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない
267デフォルトの名無しさん (ワッチョイ 5701-Cup9)
2020/09/16(水) 23:48:53.36ID:dsrVDQ5Z0 ありがとうございます
>""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない
なるほど確かにです
では、&演算子でつなぐと文字列扱いになるという認識が間違っているのでしょうか?
それとも文字列扱いにはなるけど上記の理由から外すことになっているという感じでしょうか?
>""で囲ったら演算子でも変数でもないただの& hogeという文字列にしかならない
なるほど確かにです
では、&演算子でつなぐと文字列扱いになるという認識が間違っているのでしょうか?
それとも文字列扱いにはなるけど上記の理由から外すことになっているという感じでしょうか?
268デフォルトの名無しさん (ワッチョイ 973d-lnJt)
2020/09/17(木) 00:09:43.18ID:pIQJoJyT0 >>267
その場合、
hogeは文字列として認識してください
という命令を出している
つまり
文字列(”A”) と(&) 文字列(hogeという変数に入っている文字列) を繋ぎ合わせて表示してください
というのが”A” & hoge
その場合、
hogeは文字列として認識してください
という命令を出している
つまり
文字列(”A”) と(&) 文字列(hogeという変数に入っている文字列) を繋ぎ合わせて表示してください
というのが”A” & hoge
269デフォルトの名無しさん (ワッチョイ bff7-Rz2h)
2020/09/17(木) 00:09:48.11ID:MJVBSNKC0 ダブルクォートには引数の囲むような意味はない
引数を囲む記号は丸括弧になる
たとえば X = msgbox("a" & hoge) みたいな書き方になる
返り値をとらない場合は()が省略可能ってだけ
引数を囲む記号は丸括弧になる
たとえば X = msgbox("a" & hoge) みたいな書き方になる
返り値をとらない場合は()が省略可能ってだけ
270デフォルトの名無しさん (ワッチョイ 775f-gF9/)
2020/09/17(木) 00:11:18.08ID:D84tTl8o0 リテラルと変数について調べると理解できるかも
271デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/17(木) 00:13:09.47ID:ncMNPksn0 >>267
hoteの型は何なんだ
hoteの型は何なんだ
272デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
2020/09/17(木) 00:21:16.12ID:0EHVBisp0 値に型ってのがあるのを理解しよう
表示したいのは、"A"という値と変数hogeの値(を連結したもの)だろ
&演算子でつなぐと文字列扱いになるってのは、演算対象を文字列に変換して結合するってこと
この場合、hogeの値が文字列以外でも文字列に変換して評価するってことだ
基本を理解したいなら、なんの説明もなく&でつなぐと文字列扱いとかいう教え方するところは避けたほうが良いかな
とりあえず動けばいいってならまあすきにすればいいけど
表示したいのは、"A"という値と変数hogeの値(を連結したもの)だろ
&演算子でつなぐと文字列扱いになるってのは、演算対象を文字列に変換して結合するってこと
この場合、hogeの値が文字列以外でも文字列に変換して評価するってことだ
基本を理解したいなら、なんの説明もなく&でつなぐと文字列扱いとかいう教え方するところは避けたほうが良いかな
とりあえず動けばいいってならまあすきにすればいいけど
273デフォルトの名無しさん (ワッチョイ f73d-luBG)
2020/09/17(木) 02:20:25.53ID:c2bYLY/G0 MsgBoxの第1引数は文字列型の値である必要があり、文字列型の値を表す式として典型的なのは、@文字列リテラルか、A文字列型の値が格納されている変数(文字列型変数)の参照。二重引用符は、文字列リテラルの表記方法に過ぎない。
&演算子は、本来、2つの文字列型の値を被演算数とする演算子だが、被演算数が文字列型の値と数値型の値であるような場合等は、適宜数値の方を文字列型の値に自動変換した上で本来の演算を行う……ということかと。重複になるが。
&演算子は、本来、2つの文字列型の値を被演算数とする演算子だが、被演算数が文字列型の値と数値型の値であるような場合等は、適宜数値の方を文字列型の値に自動変換した上で本来の演算を行う……ということかと。重複になるが。
274デフォルトの名無しさん (ワッチョイ b7da-Cup9)
2020/09/17(木) 04:55:16.59ID:PzgKRL2g0 数値を文字に変換するなら CSTR がある
275デフォルトの名無しさん (スップ Sdbf-k5ub)
2020/09/17(木) 07:47:55.65ID:iixTl117d276デフォルトの名無しさん (ワッチョイ b7cc-lMKa)
2020/09/17(木) 11:44:40.11ID:1/N+zsdG0 同じフォルダにある"〇〇"というCSVを開いて、そのシートの最終行を取得したいのですが
「インデックスが有効範囲にありません」というメッセージでとまります
Sub salegrp()
Workbooks.Open ThisWorkbook.Path & "\〇〇", ReadOnly:=False
MsgBox Sheets("〇〇").Cells(Rows.Count, 1).End(xlUp).Row
End Sub
他のブックの最終行を表示する方法を教えてください
(A列には最終行まで値が入っています)
「インデックスが有効範囲にありません」というメッセージでとまります
Sub salegrp()
Workbooks.Open ThisWorkbook.Path & "\〇〇", ReadOnly:=False
MsgBox Sheets("〇〇").Cells(Rows.Count, 1).End(xlUp).Row
End Sub
他のブックの最終行を表示する方法を教えてください
(A列には最終行まで値が入っています)
277デフォルトの名無しさん (テテンテンテン MM8f-V038)
2020/09/17(木) 11:54:47.91ID:DZPRMbPmM csv開いたてからActiveWork ook.ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Rowすれば
278デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
2020/09/17(木) 12:14:37.64ID:qGYgSA/Y0279デフォルトの名無しさん (ラクッペペ MM8f-gT2D)
2020/09/17(木) 12:24:52.75ID:D1QZID39M Workbooks.Openの返り値をとってそれを操作する
なおRows.Countも省略せずにシート指定する
なおRows.Countも省略せずにシート指定する
280デフォルトの名無しさん (ワッチョイ b7cc-lMKa)
2020/09/17(木) 13:03:15.94ID:1/N+zsdG0 >>277
できました。
できました。
281デフォルトの名無しさん (ワッチョイ 9f01-z5Vf)
2020/09/17(木) 16:10:59.23ID:mN4YvgPv0 >>267
Sub tessstttt()
Dim str1 As String
Dim str2 As String
str1 = "あいうえお"
str2 = "かきくけこ"
MsgBox str1 & str2 '結果「あいうえおかきくけこ」
MsgBox str1 & "かきくけこ" '結果「あいうえおかきくけこ」
MsgBox "あいうえお" & "かきくけこ" '結果「あいうえおかきくけこ」
End Sub
Sub tessstttt()
Dim str1 As String
Dim str2 As String
str1 = "あいうえお"
str2 = "かきくけこ"
MsgBox str1 & str2 '結果「あいうえおかきくけこ」
MsgBox str1 & "かきくけこ" '結果「あいうえおかきくけこ」
MsgBox "あいうえお" & "かきくけこ" '結果「あいうえおかきくけこ」
End Sub
282デフォルトの名無しさん (ワッチョイ 9f01-z5Vf)
2020/09/17(木) 16:17:02.54ID:mN4YvgPv0283デフォルトの名無しさん (ワッチョイ 9f02-5MQP)
2020/09/17(木) 16:44:05.17ID:T9Rqn+gv0 他のbookやsheet絡むととたんに冗長になるんだよなぁ
Range(.Cell(a,b))とか .Cellの前にもブックやシート指定しないとならんし
Range(.Cell(a,b))とか .Cellの前にもブックやシート指定しないとならんし
284デフォルトの名無しさん (ワッチョイ 973d-lnJt)
2020/09/17(木) 17:02:14.36ID:pIQJoJyT0 >>283
むしろ1シートだけしか使わない場合でも、実効中に人がシート変更とかしても大丈夫なようにブック明記した方がいい
むしろ1シートだけしか使わない場合でも、実効中に人がシート変更とかしても大丈夫なようにブック明記した方がいい
285デフォルトの名無しさん (アウアウカー Sa2b-gF9/)
2020/09/17(木) 17:07:16.63ID:N0wmq1hya ブックとシート明示してworksheetオブジェクトの変数作ってそれ経由でアクセスさせるのが鉄板かね〜
286デフォルトの名無しさん (ワッチョイ 9fad-dpHK)
2020/09/17(木) 17:41:26.80ID:dgD4TP5z0 csvの最終行だったらテキスト形式でEOFまで吸い上げてってやった方が動作時間的には良さそうな気がした
287デフォルトの名無しさん (テテンテンテン MM8f-V038)
2020/09/17(木) 18:04:52.95ID:aPn4iHhdM CSVの読み込みをしっかりやるならPowerQuery使おうみたいな話もあったりなかったり
288デフォルトの名無しさん (ワッチョイ 9f01-RDjc)
2020/09/17(木) 18:51:11.07ID:1zO/WKqm0 >>285
てか、基本でしょ
てか、基本でしょ
289デフォルトの名無しさん (アウアウウー Sa5b-lnJt)
2020/09/17(木) 18:59:48.75ID:DNVG/ozSa >>288
鉄板と基本の違い教えて
鉄板と基本の違い教えて
290デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/17(木) 19:13:46.34ID:ncMNPksn0 シート明示してないコードほんと多い
よくやるわ
よくやるわ
291デフォルトの名無しさん (スップ Sdbf-k5ub)
2020/09/17(木) 19:55:58.19ID:iixTl117d292デフォルトの名無しさん (スップ Sdbf-k5ub)
2020/09/17(木) 19:56:59.36ID:iixTl117d >>283
その例ならRangeの前にも"."が必要。
その例ならRangeの前にも"."が必要。
293デフォルトの名無しさん (スップ Sdbf-k5ub)
2020/09/17(木) 19:58:31.27ID:iixTl117d >>286
うん、CSVはLine Inputで1行ずつ+Splitで分解にすることが多い。
うん、CSVはLine Inputで1行ずつ+Splitで分解にすることが多い。
294デフォルトの名無しさん (ワッチョイ 9fad-dpHK)
2020/09/17(木) 20:23:48.98ID:dgD4TP5z0 VBA覚えたての頃はいちいちアクティブシート切り替えてシート指定省いてたけど
Sheet1.Cells(a,b)って書く癖は絶対つけといた方が良いって今は思ってる
可読性が段違いだもん
暫く同じシートのセルをいじくりたおすならWithで目立つように囲ってやりゃあ良いし
Sheet1.Cells(a,b)って書く癖は絶対つけといた方が良いって今は思ってる
可読性が段違いだもん
暫く同じシートのセルをいじくりたおすならWithで目立つように囲ってやりゃあ良いし
295デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
2020/09/17(木) 20:32:12.03ID:0EHVBisp0296デフォルトの名無しさん (ワッチョイ 9fb5-mxOi)
2020/09/17(木) 20:38:51.87ID:23KXp+DW0 なんつーレベルの高い話だよ
初心者が覚えようと思ってどんなもんかとスレを見たのが大間違いか
初心者が覚えようと思ってどんなもんかとスレを見たのが大間違いか
297デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/17(木) 21:39:36.45ID:ncMNPksn0 この先いつまで初心者を名乗るつもりか知らないがいちいちアピールしない方がいいよ
298デフォルトの名無しさん (ワッチョイ 97da-Cup9)
2020/09/17(木) 21:45:39.26ID:DqUtQRPA0299デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
2020/09/17(木) 22:36:46.26ID:qGYgSA/Y0 可読性も考慮するならオブジェクト変数に入れたりWithで囲んだり、頻出する構文なら別Functionに飛ばすという手もある
めんどくさいけどバグを出すよりはマシ
めんどくさいけどバグを出すよりはマシ
300デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
2020/09/18(金) 01:50:57.23ID:V3SekzLi0 そもそもオブジェクト指定のないCellsがいつでもActiveSheetを参照すると思うなよ
シートモジュールに書いたCellsはそのシートを参照するんだぜ
シートモジュールに書いたCellsはそのシートを参照するんだぜ
301デフォルトの名無しさん (JP 0Hdf-iZ3/)
2020/09/18(金) 10:32:05.02ID:68qBgcmgH VBAというよりVBSかもしれませんが
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?
いろいろ試したのですが正規表現の(肯|否)定(先|後)読みに対応していないようなのですが認識に相違ありませんか?
また、擬似的に(肯|否)定(先|後)読みに対応させたコードを誰か公開していませんか?
302デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
2020/09/18(金) 14:09:52.14ID:1dkG1MHP0303デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
2020/09/18(金) 17:55:04.61ID:vGT+RG4a0 VBSはスレ違いになるんだろうけどさー
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー
参照もなーんも効かないところに持ってきて
インデントも正しく書いてないし
綺麗にスパゲティーコードになってるの見ると
殺意を覚えるわー
まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
VBAよりいいのかな?
今、仕事でそれで書かれたコード見てるんだよねー
VB.NetからVBAに戻るとそのインテリセンスの効かなさに辟易するけど
VBSで書かれたものはその比じゃないねー
参照もなーんも効かないところに持ってきて
インデントも正しく書いてないし
綺麗にスパゲティーコードになってるの見ると
殺意を覚えるわー
まぁVBS自体は同じファイルの中に
複数のクラスが書けたりするところは
VBAよりいいのかな?
304デフォルトの名無しさん (アウアウウー Sa5b-l0r7)
2020/09/18(金) 20:53:29.32ID:Ej6zlwK4a 見てるだけで殺意はないだろ
自分で分かりやすく直していけばいい
自分で分かりやすく直していけばいい
305デフォルトの名無しさん (アウアウエー Sadf-vKz6)
2020/09/18(金) 20:57:08.45ID:E6dIN4Hja どんな人が書いたコードでも理解できるのがプロ
306デフォルトの名無しさん (ワッチョイ b7cc-lMKa)
2020/09/18(金) 20:57:17.16ID:nL5nIenz0 C列に"2007/3/26"などのような書式で年月日が入っていますが
それをC=年、D列=月、E列=日にしたいのですが
↓だと年が1905,月が1、日が26日のように変換されてしまいます。
Dim r As Long, dt As date
For r = 2 To 435
dt = CDate(cells(r,3))
Cells(r, 3) = Year(dt)
Cells(r, 4) = Month(dt)
Cells(r, 5) = Day(dt)
Next r
それをC=年、D列=月、E列=日にしたいのですが
↓だと年が1905,月が1、日が26日のように変換されてしまいます。
Dim r As Long, dt As date
For r = 2 To 435
dt = CDate(cells(r,3))
Cells(r, 3) = Year(dt)
Cells(r, 4) = Month(dt)
Cells(r, 5) = Day(dt)
Next r
307デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
2020/09/18(金) 21:01:25.47ID:vGT+RG4a0308デフォルトの名無しさん (JP 0Hdf-iZ3/)
2020/09/18(金) 21:05:10.29ID:3fDNLBctH309デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
2020/09/18(金) 21:10:13.79ID:vGT+RG4a0 ていうかそうしてんじゃん
出力先のセルの書式はどうなってるの?
コードを見た感じじゃ少なくとも3列目は
日付型みたいだけど
出力先のセルの書式はどうなってるの?
コードを見た感じじゃ少なくとも3列目は
日付型みたいだけど
310デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/18(金) 21:14:07.50ID:Kp8J/oyZ0 >>306
year、month、dayの引数のdtの中身は2007/3/26ではない
year、month、dayの引数のdtの中身は2007/3/26ではない
311デフォルトの名無しさん (ワッチョイ f77c-5MQP)
2020/09/18(金) 21:16:37.69ID:Kp8J/oyZ0 または3、4、5列目の表示形式をそれぞれy、m、dにしてる
312デフォルトの名無しさん (ワッチョイ 9fad-dpHK)
2020/09/18(金) 21:29:41.49ID:LhaPjq300 >>306
考えなしに書くからセンス皆無なコードだけど3列目の日付が文字列で入ってるならこんなんどうよ
Dim Ary(2 to 435,1 to 3) As Long,r As Long, a As String
For LBound(Ary,1) to UBound(Ary,1)
a = Sheet1.Cells(r,3).Value
Ary(r,0) = Split(a,“/“)(0)
Ary(r,1) = Split(a,“/“)(1)
Ary(r,2) = Split(a,“/“)(2)
Next
Range(Sheet1.Cells(2,3),Sheet1.Сells(435,5)) = Ary
考えなしに書くからセンス皆無なコードだけど3列目の日付が文字列で入ってるならこんなんどうよ
Dim Ary(2 to 435,1 to 3) As Long,r As Long, a As String
For LBound(Ary,1) to UBound(Ary,1)
a = Sheet1.Cells(r,3).Value
Ary(r,0) = Split(a,“/“)(0)
Ary(r,1) = Split(a,“/“)(1)
Ary(r,2) = Split(a,“/“)(2)
Next
Range(Sheet1.Cells(2,3),Sheet1.Сells(435,5)) = Ary
313デフォルトの名無しさん (ワッチョイ b7ce-W2Jb)
2020/09/18(金) 22:40:09.47ID:1dkG1MHP0 >>306
Sub Macro1()
Range("C2:C435").Copy
Range("D2:E435").Select
ActiveSheet.Paste
Range("C2:C435").NumberFormatLocal = "yyyy"
Range("D2:D435").NumberFormatLocal = "m"
Range("E2:E435").NumberFormatLocal = "d"
End Sub
Sub Macro1()
Range("C2:C435").Copy
Range("D2:E435").Select
ActiveSheet.Paste
Range("C2:C435").NumberFormatLocal = "yyyy"
Range("D2:D435").NumberFormatLocal = "m"
Range("E2:E435").NumberFormatLocal = "d"
End Sub
314デフォルトの名無しさん (アウアウウー Sa5b-lnJt)
2020/09/18(金) 22:48:07.19ID:mNDgEDOXa >>313
くそこーどを貼るのはやめてあげて
くそこーどを貼るのはやめてあげて
315デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
2020/09/18(金) 23:02:36.64ID:V3SekzLi0 >>306
セルに表示されている文字とセルの値は別だって理解が必要
おそらく
C列の表示形式が日付になっているが、そこの値を数値の2007にした
数値の2007は日付にすると1905/6/29 その年だけが表示されている
同様に数値の3は1900/1/3、数値の26は1900/1/26
まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ
セルに表示されている文字とセルの値は別だって理解が必要
おそらく
C列の表示形式が日付になっているが、そこの値を数値の2007にした
数値の2007は日付にすると1905/6/29 その年だけが表示されている
同様に数値の3は1900/1/3、数値の26は1900/1/26
まあ、想定とは違うかもしれんが正しく動いてると思われるな
解決策は、表示したいのは数値なのか日付なのかちゃんと決めて然るべき値と書式を設定しろ
316デフォルトの名無しさん (ワッチョイ 9f2f-qc2B)
2020/09/18(金) 23:05:29.99ID:V3SekzLi0 つヵ、C列の値でC列に書き換えるとかしないで
元の値を別の列にもっとけば、VBAなしで関数だけで出来るだろうけど
元の値を別の列にもっとけば、VBAなしで関数だけで出来るだろうけど
317デフォルトの名無しさん (ワッチョイ 9f01-ybTh)
2020/09/19(土) 04:14:23.53ID:JSd39pzr0 C,D,E列に表示させたいのは「数値」であるにも関わらず
「日付」の表示形式になっているからおかしくなる
C,D,E列の書式設定→表示形式を日付から標準にする
こうするとC列は39167のような形で表示されることになるが
お構いなしにマクロを動かせば、意図した通りの動きになる
でどう?
「日付」の表示形式になっているからおかしくなる
C,D,E列の書式設定→表示形式を日付から標準にする
こうするとC列は39167のような形で表示されることになるが
お構いなしにマクロを動かせば、意図した通りの動きになる
でどう?
318デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
2020/09/19(土) 07:38:40.10ID:kGiNzl5D0 >>305
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ
まぁbとc が同じならaにTrueが、
違えばFalseが入るってことを期待して
書いてるなら見づらいけどまだ許せるよ
でもcにbが代入されてそのままaにbが
代入されるとか思って書いてたらしく
システムバグらせてそのままにしてたりとか
テストどうしてたんだとか思うよねー
正直こんなのに関わりたくないけど
仕事だからやるって感じだねー
理解出来るからこそ腹立たしいこともあるよー
例えばaとbとcってBooleanの変数を定義して
a = b = c とか書いてるやつ
まぁbとc が同じならaにTrueが、
違えばFalseが入るってことを期待して
書いてるなら見づらいけどまだ許せるよ
でもcにbが代入されてそのままaにbが
代入されるとか思って書いてたらしく
システムバグらせてそのままにしてたりとか
テストどうしてたんだとか思うよねー
正直こんなのに関わりたくないけど
仕事だからやるって感じだねー
319デフォルトの名無しさん (ワッチョイ 9f4f-aBI4)
2020/09/19(土) 07:43:05.72ID:kGiNzl5D0 あ、逆だった
bにcが代入されてaにbが代入されると
思ってたらしいってことね
まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー
bにcが代入されてaにbが代入されると
思ってたらしいってことね
まぁこの4日間は連休だし
そうじゃなくてもテレワークだから
気楽に適当にやるつもりだよー
320デフォルトの名無しさん (ワッチョイ b7da-Cup9)
2020/09/19(土) 07:51:21.74ID:oBjg4zik0 仕事の内容でそのソースを直せってことなら書き直せばいいんじゃねーの
そのまま残すと後任者に同じように思われるんだぜ
そのまま残すと後任者に同じように思われるんだぜ
321257 (ワッチョイ bf90-W2Jb)
2020/09/19(土) 10:25:54.04ID:fwfEHGdP0■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 [蚤の市★]
- 「もうキモくてキモくて…」29歳女性が語る“おぢアタック”の実態。「俺ならイケるかも」年下女性を狙う勘違い中年男性に共通点が★4 [Hitzeschleier★]
- JA全農が「新おこめ券」…来年9月末の有効期限を新設、必要経費のみ上乗せ [蚤の市★]
- 【おこめ券】鈴木憲和農相 小泉前農相の備蓄米放出を“反省”「備蓄の円滑な運営を図ってまいります」 [Hitzeschleier★]
- 自民・麻生太郎副総裁 石破政権の1年は「どよーん」 高市政権発足で「何となく明るくなった」「世の中のことが決まり動いている」★2 [Hitzeschleier★]
- 1人3千円の食品高騰対策、何に使える? あいまいなまま衆院通過 [蚤の市★]
- 【実況】博衣こよりのえちえちダンガンロンパ2🧪★7
- トランプ、G7に代わるcore 5を発表 [805596214]
- 【朗報】維新「高市さんは約束を守ってくれている」連立継続へ [519511584]
- ハロワって客層悪すぎるだろwwwwwwwwwwwww
- オナニーするか😔
- VIPスクリプトだらけでワロタwwwwwwwww
