- ベストアンサー
VBAで動作した行のA列にカーソルを移動する方法
- VBAを使用してエクセル2010で動作した行のA列にカーソルを移動する方法について相談させてください。
- 現在、一覧シートのA3セルからCtrl + ↓でA列の入力行の最下行に移動し、そのセルの値をコピーしてA3セルに貼り付けるプロシージャがあります。
- 改良したい点は、最下行ではなくカーソルのある行のA列の値をA3セルに貼り付けること、また、印刷後にカーソルを印刷した行のA列に移動することです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
まず基本方針として、セレクトやセレクション、アクティブなんたらを使わない(選択を動かさない)マクロを書けるようにします。 sub 印刷ver2() ’転記する range("A3").value = cells(activecell.row, "A").value ’印刷する worksheets("請求書").printout end sub 何らかの理由でどーしても「これを選びたい」なら、それはそれとしてマクロの動作とは別に行います。 sub 印刷ver2a() if activesheet.name <> "一覧" then msgbox "一覧シートの対象データを選択してから実行" exit sub end if cells(activecell.row, "A").select range("A3").value = activecell.value worksheets("請求書").printout end sub
その他の回答 (1)
- bin-chan
- ベストアンサー率33% (1403/4213)
(1) 先頭から2行目のSelection.End(xlDown).Selectをコメントアウトする。(行頭に’を付ける) (2) 最後から2行目をSelection.End(xlRight).Selectにする
お礼
ありがとうございます。 Sub 印刷() Range("A3").Select Selection.Copy Range("A3").Select ActiveSheet.Paste Application.CutCopyMode = False Sheets("請求書").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Sheets("一覧").Select Selection.End(xlRight).Select End Sub で良いということでしょうか? これで動かしてみたのですが、うまくいきませんでした。 4行目以降のどこかのセルにカーソルがあったときに、その行のA列に移動してその値を コピーするという記述は入っていますか?
お礼
ありがとうございます。 しかし、回答していただいた内容が理解できませんでした。 sub 印刷ver2a() if activesheet.name <> "一覧" then msgbox "一覧シートの対象データを選択してから実行" exit sub end if cells(activecell.row, "A").select range("A3").value = activecell.value worksheets("請求書").printout end sub とありますが、メッセージボックスは必要ありません。 また、このプロシージャだと、請求書を印刷したあとに、印刷した行のA列に 戻らないのではないでしょうか。