
エクセル2010を使っております。
以下の動作を自動記録したプロシージャが次のものですが、これに改良を加えたくて、
相談させていただきました。
(1)一覧というシートにおいて、A3セルからCtrl + ↓でA列の入力行の最下行に異動して、
そのセルの値をコピーし、A3セルに貼りつける、
(2)請求書というシートを選び、印刷する。
(3)一覧というシートに戻り、A列の入力行のうちの最下行に異動する。
※A3セルに値を貼りつけると、3行目のB列以降→請求書シートという順にデータが飛び、
4行目からのデータを適宜に印刷したい思っております。
Sub 印刷()
Range("A3").Select
Selection.End(xlDown).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(xlDown).Select
End Sub
改良したい点としては、以下のとおりです。
(1)A列の入力行の最下行ではなく、カーソルのある行(編集可能にしているとは限らない)の
A列の値をA3セルに貼りつけるようにするにしたい。
(2)印刷した後、一覧シートのA列、最下行(印刷した行)にカーソルが移動するようになっていますが、体感的な動きとしてはそれと同じく、印刷した行(最初にカーソルのあった行)のA列にカーソルが移動するようにしたい。
どなたか、教えていただけると助かります。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
まず基本方針として、セレクトやセレクション、アクティブなんたらを使わない(選択を動かさない)マクロを書けるようにします。
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
ありがとうございます。
しかし、回答していただいた内容が理解できませんでした。
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列に
戻らないのではないでしょうか。
No.2
- 回答日時:
(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列に移動してその値を
コピーするという記述は入っていますか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Visual Basic(VBA) マクロで最終行を取得してコピーしたい 3 2022/04/06 19:07
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Excel(エクセル) Excel VBAプルダウンの値を変えながら2枚ずつ印刷する方法? 4 2022/05/27 13:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでセル内の特定数値を...
-
このマクロを訂正できますでし...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
Excelで隣のセルと同じ内容に列...
-
エクセル 同じ数字を他の列に自...
-
エクセルでオートフィルタのボ...
-
Excel 文字列を結合するときに...
-
エクセルで、2種類のデータを...
-
Excelで半角の文字を含むセルを...
-
エクセルで時刻(8:00~20:00)...
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセル(勝手に太字になる)
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
Excelのオートフィルタで非表示...
-
エクセルで特定の文字が入って...
-
EXCELで 一桁の数値を二桁に
-
エクセルのオートフィルタで最...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
背景色の有無を判断をして別の...
-
任意のセルに小計、合計と入力...
-
結合のループ処理のマクロ
-
エクセルのユーザー定義で
-
Excelで全シートから検索し列で...
-
Excelで作成したフォームからデ...
-
EXCELで2つの数値のうち大きい...
-
エクセルで二つの数字の小さい...
-
Excelで隣のセルと同じ内容に列...
-
PowerPointで表の1つの列だけ...
-
エクセルでオートフィルタのボ...
-
EXCELで 一桁の数値を二桁に
-
エクセルで、2種類のデータを...
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルで最初のスペースまで...
-
エクセルのオートフィルタで最...
-
2つのエクセルのデータを同じよ...
-
Excel強制終了
-
エクセルで文字が混じった数字...
-
Excelで中央揃えが出来ない?
おすすめ情報