質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

解決済

ExcelVBAで任意の行を別シートの最下行移動するセルボタン作成

matuemon
matuemon

総合スコア4

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

1回答

0グッド

0クリップ

273閲覧

投稿2022/11/26 19:24

前提

ExcelVBAで指定した一行を別のシートの一番下の行に移動するボタンをエクセルのセルに設定するマクロを作成したいです。

実現したいこと

・任意の表を作った後に該当するセル(Sheet1のH5~最後の行)にマクロボタンの機能を持たせる。
・マクロボタンの機能は、ダブルクリックしたセルの行の指定範囲のセル(C~G)をコピーする。
・コピーしたセルの内容を別シート(Sheet2)の予め作った表の最終行の下に追加でペーストする。

該当のソースコード

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

Dim PushCell As Long

PushCell = sheet(1). Activecell. Column

If Not (Range(H5).End(lastRowNum)) Then Exit Sub

Else
Range((PushCell)Row(“3:7”)).Copy
Destination := CopyOut

End Sub

‘以上セルのマクロボタン化及び機能

Sub SelectUnderUsedRange2()
Dim iRow
Dim iCol
Dim r As Range
Dim CopyOut As Range

Set r = Sheet(2).UsedRange iRow = r.Rows.Count + r.Row iCol = r.Column CopyOut = Cells(iRow, iCol).Select

End Sub

‘以上貼り付け先シート選択

Sub SelectUnderRow()

Dim lastRowNum As Long

lastRowNum = Cells(Rows.Count, 3).End(xlUp).ROW
'以上最終行番号を取得

End Sub
‘以上ボタン化指定最終範囲選択

試したこと

実験シートを作成して実行してみましたが、何も起きませんでした。

補足情報(FW/ツールのバージョンなど)

Excel 2019を使用しています。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

hatena19

2022/11/27 03:55

コードの一部のみコードブロックになってます。コード全体がコードブロックに入るように修正してください。 また、コードは実際のものをコピーしてください。現在のコードだとコンパイルエラーで実行すらできません。

回答1

0

ベストアンサー

ご希望の処理のサンプルコードです。

vba

1Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 2 'ダブルクリックしたセルがH列以外または、5行目より上なら処理しない 3 If Target.Column <> 8 Or Target.Row < 5 Then Exit Sub 4 5 'Sheet2の表のC列の最終行を取得 6 Dim lastRow As Range 7 Set lastRow = Worksheets("Sheet2").Cells(Rows.Count, 3).End(xlUp) 8 9 'ダブルクリックした行のC列からG列をSheet2の表の最終行の次行にコピー 10 Range(Cells(Target.Row, "C"), Cells(Target.Row, "G")).Copy Destination:=lastRow.Offset(1) 11 12 'ダブルクリックの既定の処理を停止 13 Cancel = True 14End Sub

Target引数には、ダブルクリックしたセルが格納されています。

コピー先の表の最終行の取得は定番の方法です。

コードの意味をコメントにしていますので、それをもとに研究してください。

投稿2022/11/27 07:48

hatena19

総合スコア32005

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

matuemon

2022/11/27 09:41

ありがとうございます。これを元にもっと勉強します。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。