- 締切済み
VBAによるエクセルデータの貼り付けについて
会社で使用しているエクセルにボタンがあり、そのボタンを押すと指定したフォルダー内のファイルのデータをコピーし、貼り付けるようVBAコードが設定されています。 指定したファイルのデータを下記のどの部分でセルを指定しているのかを教えてください。 Sub 読込() Dim WorkFileNAME, FolderNAME, DBYear, DBMonth, ItemNO(45) As String Dim WorkSheetNAME As String Dim i As Integer Dim BASECelladd1, BASECelladd2 As String BASECelladd1 = "C4" BASECelladd2 = "D3" WorkFileNAME = ActiveWorkbook.Name WorkSheetNAME = ActiveSheet.Name Worksheets(WorkSheetNAME).Select FolderNAME = Range("J1").Value & "\" & Range("T1").Value DBYear = Range("D1").Value DBMonth = Range("E1").Value i = 0 Do While i <= 45 ItemNO(i) = Range(BASECelladd1).Cells(i + 1, 1).Value i = i + 1 Loop Data11READ WorkFileNAME, WorkSheetNAME, FolderNAME, DBYear, DBMonth, ItemNO, BASECelladd1, BASECelladd2 End Sub
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- over_the_galaxy
- ベストアンサー率25% (104/408)
最終行のdata11readだと思いますが、変わってますね。 おそらく別のサブプロシージャを呼び出し、そこで処理してると思うのですが、普通は call data11read( WorkFileNAME, WorkSheetNAME, FolderNAME, DBYear, DBMonth, ~省略) のように記述して呼び出すルールになってます。質問文の書き方で動作しているのでしょうか。 どこかにdata11readについて詳細がかかれてませんか?例えば sub dataread11() のように。
- WindFaller
- ベストアンサー率57% (465/803)
こんばんは。 >指定したファイルのデータを下記のどの部分でセルを指定しているのかを教えてください。 BASECelladd1 = "C4" と変数に代入していますから、.Cell(1,1)は、C4からということはわかります。 そこから、0が始まりですから、46セル下に行くということです。ふつう、自分で分からなくなった時は、こんな一文を加えます。 '// Do While i <= 45 Range(BASECelladd1).Cells(i + 1, 1).Select '* 'この下に、メニュー--デバッグ--ブレークポイントか、左端枠をワン・クリックして '●をつければ、そこでマクロが止まりますので、その後、ワークシート上で確認します。 ItemNO(i) = Range(BASECelladd1).Cells(i + 1, 1).Value i = i + 1 Loop '// ただし、ご自身が書いたものではないでしょうけれども、このコードは、凝っている書き方の割には、無駄が多すぎます。 WorkSheetNAME = ActiveSheet.Name Worksheets(WorkSheetNAME).Select ここは、すでに、ActiveSheetで良いということになっていますから、この2行は不要です。 また、ボタンの種類にもよりますが、ActiveX コントロールでしたら、ActiveSheetしか基本的には、働かないです。それから、変数名は、もう少しわかりやすくしたほうが、修正がしやすいです。 i のカウンター変数を配列にも使うのですから、For i =0 ~ To 最終値 でよいです。 つまり、ItemNO(i)に格納する方法は、Do ~ Loop までを、こうすればよいのです。 ' i = 0 '←不要 For i = 0 To 45 ItemNO(i) = Range(BASECelladd1).Offset(i).Value Next i