
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
”戻り値”が変化したときに、マ...
-
ExcelVBAを使って、値...
-
Excel VBA、 別ブックの最終行...
-
Excelで指定した日付から過去の...
-
Excelのプルダウンで2列分の情...
-
DataGridViewのセル編集完了後...
-
Excel VBAで、 ヘッダーへのセ...
-
セル色なしの行一括削除
-
ExcelのVBAで数字と文字列をマ...
-
Excelのハイパーリンクにマクロ...
-
VB.NETで、EXCELの右寄せ
-
i=cells(Rows.Count, 1)とi=cel...
-
実行時エラー438 オブジェクト...
-
VBA ユーザーフォーム ボタンク...
-
エクセルVBAで、非表示にし...
-
VBAで検索して指定の位置に行を...
-
Excel vbaで特定の文字以外が入...
-
Word版VBで表の任意の箇所を...
-
Google Apps Script:Googleスプ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
特定行の色を変えたい(FlexGrid)
-
i=cells(Rows.Count, 1)とi=cel...
-
Excelで指定した日付から過去の...
-
エクセルvbaで、別シートの最下...
-
VBA実行後に元のセルに戻りたい
-
Application.Matchで特定行の検索
-
”戻り値”が変化したときに、マ...
-
VBAでセルをクリックする回...
-
任意フォルダから画像をすべて...
-
Excel VBAで、 ヘッダーへのセ...
-
TODAY()で設定したセルの日付...
-
【Excel VBA】指定行以降をクリ...
-
Excel vbaで特定の文字以外が入...
-
ExcelのVBAで数字と文字列をマ...
-
Excel VBA、 別ブックの最終行...
-
DataGridViewの各セル幅を自由...
-
VBA ユーザーフォーム ボタンク...
-
連続する複数のセル値がすべて0...
おすすめ情報
昨日,追加で質問させていただきましたが,なんとか解決できました。
昨日,質問させていただきましたが,なんとか,希望するセルで最後は終わるようにできました。
ありがとうございます。