• 締切済み

VBAでB3からLの最終入力までコピー仕方について

現在、コピー元を"B3:L244"で指定していますが、 B3からL列の最後に書かれている範囲内でコピー出来る様にしたいのですが教えて頂けないでしょうか。 Private Sub CommandButton1_Click() Dim RC As Integer Dim OpenFileName, fileName, Path, SetFile As String Dim wbMoto, wbSaki As Workbook Set wbMoto = ActiveWorkbook 'マスターデータ取り込み元をセット Application.DisplayAlerts = False RC = MsgBox("マスターデータ取込みますか?", vbYesNo + vbQuestion, "確認") If RC = vbYes Then OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") 'ダイアログボックスを表示して、マスターデータファイルを指定します。 If OpenFileName <> "False" Then SetFile = OpenFileName Else MsgBox "キャンセルされました" Exit Sub 'マスターデータの取り込みをキャンセル End If Workbooks.Open fileName:=SetFile, ReadOnly:=True, UpdateLinks:=0 'ダイアログボックスで指定したマスターデータファイルを開きます。 Set wbSaki = Workbooks.Open(Path & SetFile) 'ワークブック間のシート「項目」をコピーします。 wbSaki.Worksheets("Sheet1").Range("B3:L244").Copy wbMoto.Worksheets("1月").Range("B2").PasteSpecial xlPasteValuesAndNumberFormats Application.CutCopyMode = False 'コピー切り取りを解除 wbSaki.Close False 'マスターデータ取り込み先のファイルを閉じる Else MsgBox "処理を中断します" End If Application.DisplayAlerts = True End Sub

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

シート1にコマンドボタンを張り付けるとして Private Sub CommandButton1_Click() With Worksheets("Sheet1") lr = .Range("L100000").End(xlUp).Row .Range("c3:L" & lr).Copy Worksheets("Sheet2").Range("b3") End With End Sub これだけのことじゃないか?VBAでまず必要になる lr = .Range("L100000").End(xlUp).Row  が判らないのか? 初心者ならいきなりコードでなく、疑問点を、もっと文章で書くべきだと思うが。 ファイル関係の部分は略。

  • kkkkkm
  • ベストアンサー率66% (1727/2597)
回答No.3

No2の訂正です。 With wbSaki.Worksheets("Sheet1") .Range(.Cells(3, "B"), .Cells(Rows.Count, "L").End(xlUp)).Copy End With

  • kkkkkm
  • ベストアンサー率66% (1727/2597)
回答No.2

wbSaki.Worksheets("Sheet1").Range(Cells(3, "B"), Cells(Rows.Count, "L").End(xlUp)).Copy で試してみてください。 また Dim OpenFileName, fileName, Path, SetFile As String Dim wbMoto, wbSaki As Workbook ですが、Asが最後の変数にしかないので型の適用は最後の変数だけになります。 Dim wbMoto As Workbook, wbSaki As Workbook のようにそれぞれの変数に型を指定したほうがいいと思います。

回答No.1

セレクトまでのサブルーチンを作ってみた。 Sub B3からL最終セレクト() Dim 最終セル As Long 最終セル = Cells(Rows.Count, 12).End(xlUp).Row Range(Cells(3, 2), Cells(最終セル, 12)).Select End Sub

関連するQ&A