Excel VBAのことで伺います。office365を使用しています。
以下のとおりマクロを作りましたが,次の動きをするマクロにしたいと思っています。
コピペ元のセル番地を格納する変数が必要だと思うのですが,どのようにそれを宣言すれば良いか等ご教示願います。(今の状態だと,常にB5セルにカーソルが移動して終了してしまいます)
① 「回答」シートにおいてカーソルのある行のA列の値を,B5セルにコピペ
② 「様式」シートの範囲指定した箇所を印刷
③ 「回答」シートの①の動作のときにカーソルのあった行のA列のセル(要は,コピペ元のセル)に戻る。
以下 現状のコード
----------------------------------------------------------------------------------------------
Sub 印刷()
Sheets("回答").Cells(Selection.Row, 1).Select
Selection.Copy
Sheets("回答").Range("B5").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets("様式").Select
Application.CutCopyMode = False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Application.Goto Sheets("回答").Range("B5")
End Sub
No.2ベストアンサー
- 回答日時:
連投すみません
書き換えてしまったので追記します
>コピペ元のセル番地を格納する変数が必要だと思うのですが
今回の処理の場合必要ではなさそうですが方法としては2つあります
セル番地を格納する方法
Sub 印刷()
Dim セル番地 As String
セル番地 = Selection.Address
・
・
Application.Goto Sheets("回答").Range(セル番地)
セルオブジェクト自体を格納する方法
Dim セル As Range
Set セル = Selection
・
・
Application.Goto セル
注意 Selectionは状態を示すものなので セルでない場合があります
(図を選択しているなどの状態)このような場合プログラムはエラーが返されます
エラーを回避するためにはSelectionを使う前に対象(今回セル)を確認する必要があります
ありがとうございます。
しかし,書いていただいたコードですと,カーソルのあるセルが変数として保存され,最後はそのセルに戻るコードだと思います。
最後は,カーソルのある行のA列に戻るにはどのようなコードにすれば良いかご教示いただけないでしょうか?
教えていただいた「セル番地を格納する方法」の方で考えていますが,
変数定義の際に,
セル番地=Cells(ActiveCell.Row, 1)
としても,デバックで止まってしまいます。
No.3
- 回答日時:
こんばんは
すでに回答が出ていますけれど・・
①文字通りに「カーソルのある行」のA列と解釈しました
(A列以外であっても、その行のA列を採用します)
以下のコードではSelectionではなく、確実なActiveCellを使用しています。
②「範囲指定した箇所を印刷」とありますが、ご提示のコードでは
範囲指定をしていません。
ですので、シートに印刷範囲を指定してあるものと解釈し、
そのままにしてあります。
③最初にカーソルが別の列に合っても、その行のA列を選択した状態になります。
以下、ご参考までに。
※ 「回答」シートを表示した状態でないと動作しません。
Sub 印刷()
If ActiveSheet.Name <> "回答" Then Exit Sub
Cells(ActiveCell.Row, 1).Select
Range("B5").Value = Selection.Value
Worksheets("様式").PrintOut
End Sub
ありがとうございます。
①,②についてですが,おっしゃるとおりの意図・状態で質問させていただきました。
伺いたいのですが,実は今回の紙媒体で印刷するコードに加え,PDFの作成を行うコードも作りたいと思っています。
今の状態では,以下のようにそのコードを書いていますが,様式シートでselectを使っているため,カーソルが様式シートにある状態でマクロが終わってしまいます。
当初の質問どおり「最初にカーソルのあった行のA列」でマクロが終わるようにするにはどのようにしたら良いでしょうか。
また,このコードだと,作成したPDFが表示されますが,そのときの表示倍率を60%程度にすることはできますか?
いろいろと申し訳ないですが,ご教示いただけますようお願い申し上げます。
Sheets("様式").Select
Application.CutCopyMode = False
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=myfolder & "回答\" & text & ".pdf", OpenAfterPublish:=True, IgnorePrintAreas:=False
No.1
- 回答日時:
>コピペ元のセル番地を格納する変数が必要だと思うのですが,どのようにそれを宣言すれば良いか等ご教示願います。
これについてはそのような構想でも良いと思いますが そもそもSelectしなければ解決できます
① 「回答」シートにおいてカーソルのある行のA列の値を,B5セルにコピペ
コードを見ると値貼り付けのようですのでValue=Valueで代入する
② 「様式」シートの範囲指定した箇所を印刷
現行で良いがSelectをしない様に書く
③ 「回答」シートの①の動作のときにカーソルのあった行のA列のセル(要は,コピペ元のセル)に戻る。
Selectをしなければ③は不要になります
1つ気になることは カーソル これがセル内に表示される状態のときはマクロは実行できないはずですので選択せるとします
コード全体を添削すると
Sub 印刷()
Sheets("回答").Range("B5").Value = Sheets("回答").Cells(Selection.Row, 1).Value
Sheets("様式").PrintOut Copies:=1, Collate:=True
End Sub
選択しているセルの値を指定セルに代入して様式シートをPrintOutをしています
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセル VBAでシートのコピーを作りたい 1 2023/05/18 07:42
- Excel(エクセル) Excelでnullになるような式のセルをマクロで空白行と認識させるにはどうすればいいですか? 3 2023/03/13 13:42
- Excel(エクセル) エクセルのマクロについて教えてください。 2 2023/02/26 13:19
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/03/02 08:40
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/01/26 09:50
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- Visual Basic(VBA) マクロを短くする 1 2023/01/15 00:11
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBAコードが作動しません。修正したいのですが何処に原因かあるか教えて下さい。
Visual Basic(VBA)
-
ファイル名の日付について教えて頂けますかExcel
Visual Basic(VBA)
-
マクロのエラー
Visual Basic(VBA)
-
-
4
VBAの質問です、複数のテキストボックスに同じコメントを
Visual Basic(VBA)
-
5
引数に数値、文字列の混在
Visual Basic(VBA)
-
6
エクセルファイルのデータ転記について
Visual Basic(VBA)
-
7
10行目にフィルターを使用して見出しがあります。列はA:DFで11行目以降(2000行ぐらい)はデー
Visual Basic(VBA)
-
8
Excel VBA 文字列のセルを反映させたいです
Visual Basic(VBA)
-
9
ご教授お願いします。#NUM!が解消されません。
Visual Basic(VBA)
-
10
VBAユーザーホームテキストボックスにカーソルを自動で表示したい
Visual Basic(VBA)
-
11
excelのVBAについて、以下のコードに追加をお願いいたします。
Visual Basic(VBA)
-
12
VBA
Visual Basic(VBA)
-
13
ExcelVBAのFindFirstエラーについて
Visual Basic(VBA)
-
14
Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです
Visual Basic(VBA)
-
15
for 文の 繰り返し処理に使えるのかどうかについて
Visual Basic(VBA)
-
16
エクセルVBAの配列について
Visual Basic(VBA)
-
17
以下のコードを実行しても、オブジェクト変数または、withブロック変数が設定されていませんとエラーが
Visual Basic(VBA)
-
18
VBAコードについて
Visual Basic(VBA)
-
19
【ExcelVBA】インデックスが有効範囲にありません。の理由が分かりません
Visual Basic(VBA)
-
20
VBAで質問があります
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
Excle VBA Findメソッドについて
-
Excelで指定した日付から過去の...
-
VBA コピーして次の値まで貼り...
-
VBAコマンドボタンを押すたびに...
-
VBAの計算で@が出てしまう件
-
DataGridViewの各セル幅を自由...
-
【Excel】指定したセルの名前で...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
Excelのハイパーリンクにマクロ...
-
ExcelのVBAで数字と文字列をマ...
-
EXCELで変数をペーストしたい
-
指定文字以外のカウント
-
指定した条件で行セルを非表示...
-
【VBA】指定したセルと同じ値で...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
【Excel】指定したセルの名前で...
-
VBAの計算で@が出てしまう件
-
Excelのプルダウンで2列分の情...
-
EXCELで変数をペーストしたい
-
VBA ユーザーフォーム ボタンク...
-
VBAでセルをクリックする回...
-
Excel VBA、 別ブックの最終行...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
-
VBAを使用した時間管理
-
”戻り値”が変化したときに、マ...
-
Sub 要具ライフ() ActiveSheet....
おすすめ情報
昨日,追加で質問させていただきましたが,なんとか解決できました。
昨日,質問させていただきましたが,なんとか,希望するセルで最後は終わるようにできました。
ありがとうございます。