Dim path As String ,buf As String, i As Long Dim mysheet As Worksheet, srcbook As Workbook, srcsheet As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)'フォルダを選択する If .Show = 0 Then MsgBox "キャンセルされました。" Exit Sub End If path = .SelectedItems(1) End With
Set mysheet = ThisWorkbook.Worksheets("comp") buf = Dir(path & "B*.xls")
でぐぐる 0409蟻人間 ◆T6xkBnTXz7B0 2020/05/31(日) 04:00:28.58ID:KExNe49d エクセルにはリファレンスマニュアルが付属していて、追加でインストールするとF1ヘルプで言語仕様まで見られる。 マニュアルがパソコンに入ってなかったら、管理者からエクセルのシーディーを借りてね。 0410デフォルトの名無しさん2020/05/31(日) 05:00:56.16ID:pJwiV8F0>>398 sub() って文法的に作れないはず マクロが動かないのは文字列のせいじゃないかもよ 0411デフォルトの名無しさん2020/05/31(日) 08:40:31.29ID:6kaO8G32 ごめんなさい sub test ()でした 0412デフォルトの名無しさん2020/05/31(日) 08:57:53.05ID:C8J9R7KI Sub Test0001() Dim i As Integer
For i = 1 To 2 Dim ary()
MsgBox "ここにブレークポイント設定"
ary = Sheet1.Range(Cells(1, i), Cells(5, i)) Next i End Sub
こうやってForの中でaryを宣言し直せば、aryは初期化されると思い込んでたんだけどダメなのな 2回目にMsgBoxで止まったときにaryみるとA列のデータがaryに残ってしまってる これってメモリ上に残ってて同じ所を参照し直すからなのかな Eraseすれば消えるからいいんだけど、気づくのに時間かかったわ こんな初歩的なこと分かってないでよく今まで組んできたもんだ 0413デフォルトの名無しさん2020/05/31(日) 09:44:52.93ID:8XtoheO9 すんません今時ブロックスコープない方がアレなんで 0414デフォルトの名無しさん2020/05/31(日) 09:49:53.97ID:4iioSPSZ>>398 それはLEFT()が動かないのと同じ理屈。 普通LEFT(A1,5)とか書くから。 0415デフォルトの名無しさん2020/05/31(日) 10:44:01.62ID:GCI/GpSg>>412 そういう動作を知るためのテストなんじゃね 残っていても上書きされるんだから問題ないし 0416デフォルトの名無しさん2020/05/31(日) 10:47:02.74ID:GCI/GpSg>>411 sub test("文字列") ってことか? 0417デフォルトの名無しさん2020/05/31(日) 11:53:35.71ID:df9CBrpd>>398 呼び出し元とプロシージャそれぞれ一行ずつ書いてくれよ 0418デフォルトの名無しさん2020/05/31(日) 12:34:25.47ID:GcFwCYXw>>412 VBAのDimは書いた場所に関係なく、コード開始時に1回だけ実行される仕様 モジュールの最後に書いても結果は変わらない Sub Test() Dim a() For i = 0 To 9 Dim b() Next Dim c() End Sub 0419デフォルトの名無しさん2020/05/31(日) 12:42:20.77ID:C8J9R7KI>>413 あーなるほど そこを考えるんですか、勉強になりましたわ ただ、改めて疑問に思ったのは、同じブロックスコープ内で再度宣言してもエラーでないのはどういうことなんだろーとか Forの中での宣言だと繰り返しといっても宣言部分は無視されるってことかな ま、同じ事しないようにちゃんとおぼえておこ・・・