
【マクロ】特定シートから値を抽出し、別シートへ反映して印刷
このようなマクロを組みたいです。
作成しましたがうまく動きません。
どなたか修正していただけませんか?
【やりたいこと】
シート名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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Excel(エクセル) マクロで最終行から上に検索を逆にしたい 1 2022/05/17 18:27
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのVBAで集計をしたい
-
コマンドボタンがデザインモー...
-
VBAでシート毎に演算した項目を...
-
マクロを複数シートに実行する...
-
EXCELのエラー
-
【Excel VBA】シート見出しの色...
-
一回のループで次のオブジェク...
-
【マクロ】特定シートから値を...
-
マクロの変数定義エラー
-
Excelマクロ/選択したシートを...
-
エクセルのセル1の指定のセルの...
-
エクセルで出力時にページ数を...
-
EXCEL起動と同時にワークシート...
-
エクセルを開いたとき常に同じ...
-
VBA アクティブなセルのシート...
-
テキストボックスの名前
-
特定のシートをAuto_Openでアク...
-
複数シートの保護・解除
-
エクセル・・・・印字部数の任...
-
マクロ 全シートの指定範囲をコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コマンドボタンがデザインモー...
-
エクセルのVBAで集計をしたい
-
エクセルを開いたとき常に同じ...
-
マクロを複数シートに実行する...
-
【 Excel】シートの見出しに自...
-
Excelのマクロの呼び出し元を知...
-
EXCELでマクロを使わずに図形の...
-
マクロ 各シートの決められた位...
-
エクセルでシートの並び替えで...
-
EXCELのエラー
-
EXCELでワークシートを開いたら...
-
メッセージボックスでシート名...
-
マクロを特定の複数シートで実...
-
VBA シート名を先月の名前に...
-
マクロで複数シートに条件付き...
-
エクセルで、マクロボタンの表...
-
VBAで条件によってシート見出し...
-
【Excel】複数あるシート上の住...
-
エクセルVBAでcmbBoxのプロパテ...
-
エクセルのチェックボックス
おすすめ情報