アクティブのシートある範囲をコピーして、追加データとしてシート2のB列の最終セルの下(空白)に値として貼り付けたいと思っています。
オートシェイプでは動くのですが、ActiveXコントロールやフォームコントロールではエラーが出ます。よろしくお願いします。
Private Sub CommandButton1_Click()
Range("C2:J2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Sheets2").Select
Range("B1").Select
Selection.End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
End Sub
No.3ベストアンサー
- 回答日時:
続けてお邪魔します。
>元データーを1行以上と変えたい場合は・・・
項目行は存在しないのでしょうか?(1行目からのデータになっている)
余計なお世話で2行目が項目行だと思って
>lastRow = .Range("C2").End(xlDown).Row
とし、C2セルから下へ見ていって最終行を取得していました。
すなわち3行目以降にデータがない場合は何もしないコードになっていました。
1行目からというコトであれば
>If lastRow > 2 And wS.Range("B1") <> "" Then
の行を
>If lastRow >=1 And wS.Range("B1") <> "" Then
に変更してください。
※ 余計なお世話かもしれませんが・・・
個人的には最終行を取得する場合、途中に空白セルが存在しない!と判っていれば
>lastRow = .Cells(Rows.Count, "C").End(xlUp).Row
のように下から上に向かってのコードを記載する方が多いです。m(_ _)m
No.2
- 回答日時:
No.1です。
>原因は何なのでしょうか・・・
シートモジュールで別シートの操作ができない場合があります。
はっきり覚えていませんが、シートモジュールで他のシートを操作するコードを記載した場合エラーになったことが何度もありました。
その場合は標準モジュールにマクロコードを記載し、シートモジュールでそのマクロを呼び出せば
改善されることがほとんどだったので経験上前回のような回答をしました。
おそらくですが、
フォームコントロールやActiveXコントロールはシートモジュールと同じ状態になるのでは?
※ あくまで当方の個人的見解です。
参考になるかどうかわかりませんが、↓のサイトを覗いてみてください。
http://excel-ubara.com/excelvba4/EXCEL251.html
http://vbae.odyssey-com.co.jp/column/no15_1.html
この程度でごめんなさい。m(_ _)m
No.1
- 回答日時:
こんばんは!
操作したいコードを「標準モジュール」に記載し、コマンドボタンをクリックでそのマクロを呼び出せば大丈夫だと思います。
まず標準モジュールに↓のコードを記載しておきます。
Sub Sample1()
Dim lastRow As Long, myRng As Range, wS As Worksheet
Set wS = Worksheets("Sheet2") '←「Sheet2」は実際のシート名に!//
With Worksheets("Sheet1") '←フォームコントロールまたはActiveXコントロールが挿入されているシート名//
lastRow = .Range("C2").End(xlDown).Row
If lastRow > 2 And wS.Range("B1") <> "" Then '←Sheet2のB1セルが空白の場合、エラーになる・・・//
Set myRng = Range(.Cells(2, "C"), .Cells(lastRow, "J"))
myRng.Copy
wS.Range("B1").End(xlDown).Offset(1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
wS.Activate
wS.Range("B1").Select
End If
End With
End Sub
そしてコマンドボタンのコードを
Private Sub CommandButton1_Click()
Call Sample1
End Sub
としてみてください。
※ 標準モジュールのコード内のシート名は実情に合わせてください。
※ 元データが3行以上ある場合にマクロが実行されるようにしています。
尚、Sheet2のB1セルが空白の場合、エラーになると思いますので、
敢えてB1セルが空白以外の場合・・・という条件を付け加えています。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Visual Basic(VBA) データのある範囲を選択するVBAについて 2 2022/09/03 00:20
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) エクセルで最下行にデータを追加するVBA 6 2023/05/09 09:30
- Excel(エクセル) ②Excel 簡単にシートコピーしたら前日の残高と日付を変更させたい→マクロの記録でエラーが出ます 8 2022/07/16 20:40
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access-VBAでExcelファイ...
-
マクロのコマンドボタン《Activ...
-
エクセルマクロ(超初心者)
-
VBAでVlookup機能を使うときに...
-
エクセル マクロについて、 Inp...
-
エクセルマクロ 変数をワーク...
-
エクセルで品番を入れると、そ...
-
エクセル マクロ オートフィ...
-
VBAマクロ実行時エラーの修正に...
-
マクロの「SaveAs」でエラーが...
-
エクセルで特定の文字列が入っ...
-
VLOOKUPの列番号の最大は?
-
エクセルVBAが途中で止まります
-
エクセルで離れた列を選択して...
-
[EXCEL]ボタン押す→時刻が表に...
-
Excelで数字を入れたら対応する...
-
Worksheets メソッドは失敗しま...
-
エクセルVBA 配列からセルに「...
-
Excelで、あるセルの値に応じて...
-
【Excel関数】UNIQUE関数で"0"...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access-VBAでExcelファイ...
-
コンボボックスへ降順に表示す...
-
エクセルVBAでオブジェクトが必...
-
エクセルマクロ(超初心者)
-
マクロのコマンドボタン《Activ...
-
複数シートを一括で保護を掛け...
-
エクセルのVBAの関数について
-
エクセルのVBAについて教えてく...
-
Excell VBA にて配列に定数を代...
-
指定されたシートの削除
-
マクロ実行後、画面がちかちか...
-
VBAでVlookup機能を使うときに...
-
EXCELに関する質問
-
エクセルマクロ 変数をワーク...
-
マクロのイベントトリガー
-
【EXCEL-VBA】ワークシートに別...
-
エクセルVBA 別シートの最終セ...
-
Auto_Openマクロ
-
Excelに関数使用を調べる方法
-
ExcelVBA その回のみ...
おすすめ情報
回答ありがとうございます。
>※ 元データが3行以上ある場合にマクロが実行されるようにしています。
元データーを1行以上と変えたい場合はどこを変えればいいでしょうか
よろしくお願いします。