【マクロ】特定シートから値を抽出し、別シートへ反映して印刷
このようなマクロを組みたいです。
作成しましたがうまく動きません。
どなたか修正していただけませんか?
【やりたいこと】
シート名1『データベース』
シート名2『通知書』
(1)『データベース』
4行目からデータベースが作成された表
C列は社員番号の列
↓
(2)『データベース』シートのA列に『1』のフラグを立てる
↓
(3)『通知書』のセルB1に自動的に(2)で立てた行のC列の社員番号が反映され
同時に通知書シートを印刷をする。
【組んでみたマクロ】
Dim i As Integer 'カウント用変数
Dim lastrow As Integer '最終行が入る変数
i = 4 '最初に始まる行数を指定
lastrow = ActiveSheet.Range("A65536").End(xlUp).Row '最終行を取得する
For i = 4 To lastrow '最終行まで繰り返す
If Worksheets("データベース").Range("A" & i & "") = 1 Then 'A列に「1」があったものは以下の処理をする
'別シートの特定セルを取得する
Worksheets("通知書").Range("B1") = "=INDIRECT(""データベース!""&""C" & i & """)" '社員番号
'印刷する
Sheets("通知書").PrintOut
Else 'A列に「1」がなかったら以下の処理をする
End If 'A列に何かあるかの判別終了
Next i '繰り返しの終わり。i(カウント用変数)に1を足す
End Sub
No.2ベストアンサー
- 回答日時:
どういう動作をしてしまっているのかが書かれていないので判らないです。
強いて言うならここかもです。
↓なにがアクティブなシートなのか不明
lastrow = ActiveSheet.Range("A65536").End(xlUp).Row '最終行を取得する
シートを指定すると、どうでしょうか?
lastrow = Worksheets("データベース").Range("A65536").End(xlUp).Row '最終行を取得する
No.1
- 回答日時:
【手直しマクロ】
sub macro1r1()
’「行番号」の最大値はIntegerの上限値を超える可能性があるので直すこと
Dim i As Long
Dim lastrow As Long
’「現在のシート」がデータベースではないと失敗するので直すこと
lastrow = worksheets("データベース").Range("A65536").End(xlUp).Row
’「For i =」でiは初期化されるので,事前に初期値をセットする必要はない
For i = 4 To lastrow '最終行まで繰り返す
’簡素化
If Worksheets("データベース").Range("A" & i) = 1 Then
’適正化および簡素化
Worksheets("通知書").Range("B1").value = worksheets("データベース").range("C" & i).value
’念のため
worksheets("通知書").calculate
Sheets("通知書").PrintOut
’簡素化
End If
Next i
End Sub
以上のように直した方が良い箇所は幾つか見受けられますが,致命的にマクロが間違っている箇所は(Integerを除いて)ありません。
肝心の
>うまく動きません。
の具体的な症状,いったいこのマクロでどうあるべき所がどうなってしまって何が問題になっているのか,ご相談にしっかりと明記するようにしてください。
●通知書の印刷結果が全く間違えている
単純にこのマクロに関係なく,シートに投入してある数式等が間違っている場合もよくあります。
マクロ以前に手動で通知書の所定のセルにデータを記入し,数式等が正しく計算結果を出すことを再確認してください。
●通知書の印刷結果が時々更新されていない
この手のマクロにすると,画面の更新が間に合わないまま印刷に走ってしまい印刷結果が適正でなくなる場合があります。
手直し例ではシートの再計算を明示的に行わせましたが,場合によっては更に「application.wait now + timeserial(0,0,3)」などのようにして,少し待ちを入れた方が良い事もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
複数シートの保護・解除
-
EXCELでマクロを使わずに図形の...
-
シートを保護した時でも並べ替...
-
VBA シート名を先月の名前に...
-
マクロでの全シート内検索
-
EXCELのエラー
-
エクセルシートのセルに現在時...
-
マクロ 各シートの決められた位...
-
エクセル2013でマクロのボタン...
-
エクセルのマクロでMACアドレス...
-
EXCELの起動時に常に同じ...
-
エクセルのチェックボックス
-
VBAで条件によってシート見出し...
-
エクセルを開いたとき常に同じ...
-
EXCELでワークシートを開いたら...
-
エクセルでシートの並び替えで...
-
エクセル・複数のシートを一度...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
エクセルを開いたとき常に同じ...
-
エクセルでシートの並び替えで...
-
VBAで条件によってシート見出し...
-
マクロを特定の複数シートで実...
-
Excelのマクロの呼び出し元を知...
-
EXCELでワークシートを開いたら...
-
複数シートの保護・解除
-
エクセルで複数のSheetを一括フ...
-
エクセル2013でマクロのボタン...
-
VBA シート名を先月の名前に...
-
EXCELでマクロを使わずに図形の...
-
EXCELの起動時に常に同じ...
-
EXCELのエラー
-
メッセージボックスでシート名...
-
エクセルVBAでcmbBoxのプロパテ...
-
マクロ 各シートの決められた位...
-
エクセルで回数をカウントする...
おすすめ情報