- 締切済み
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
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
シート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)
No2の訂正です。 With wbSaki.Worksheets("Sheet1") .Range(.Cells(3, "B"), .Cells(Rows.Count, "L").End(xlUp)).Copy End With
- kkkkkm
- ベストアンサー率66% (1727/2597)
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 のようにそれぞれの変数に型を指定したほうがいいと思います。
- m5048172715
- ベストアンサー率16% (860/5261)
セレクトまでのサブルーチンを作ってみた。 Sub B3からL最終セレクト() Dim 最終セル As Long 最終セル = Cells(Rows.Count, 12).End(xlUp).Row Range(Cells(3, 2), Cells(最終セル, 12)).Select End Sub