はじめまして。
皆様のお知恵を貸してください!
【1.やりたいこと】
キーを検索し、該当するものがなくなるまで印刷をかけたい
【2.エクセルの中身】
シートは全部で2つあり、①データ ②1)定期 という名前にしてあります。
①データシートに個人情報を入力する欄を設けてあり、A~L列までの表になっています。
K列に1または2の数字を入れており、これをキーとし、1ならA列を参照し、 ②1)定期シートのS4セルに貼り付けてVLOOKUPして印刷、これをキーがなくなるまで連続印刷したいのです。
そこで、以下のように設定してみました。
しかし、VBAのSub/ユーザーフォームの実行(F5)では連続で印刷をかけてくれるのですが、
ボタンにマクロを登録し、ボタンをクリックしてみると、1つしか印刷をかけてくれません。
(VBAのSub/ユーザーフォームの実行(F5)でやっても完璧とは言えず、上から順番に印刷されず、ばらばらに印刷されます。。。)
どうすれば理想どおりに実行できるようになりますでしょうか。
ご教授いただきたくお願い申し上げます。
↓↓
Sub 定期個人票()
Dim sh As Worksheet, i As Long
Set sh = Worksheets("1)定期")
Set FoundCell = Range("$K$3:$K2000").Find(What:=1)
If FoundCell Is Nothing Then
MsgBox "定期受診者なし"
Exit Sub
Else
Set FirstCell = FoundCell
On Error Resume Next
FoundCell.Offset(0, -10).Copy
sh.Range("$S$4").PasteSpecial Paste:=xlPasteValues
sh.PageSetup.PrintArea = Range("$A$1:$Q$52").Address
sh.PrintOut
End If
Do
Set FoundCell = Range("$K$3$K2000").FindNext(FoundCell)
If FoundCell.Address = FirstCell.Address Then
Exit Do
Else
On Error Resume Next
FoundCell.Offset(0, -10).Copy
sh.Range("$S$4").PasteSpecial Paste:=xlPasteValues
sh.PageSetup.PrintArea = Range("$A$1:$Q$52").Address
sh.PrintOut
End If
Loop
End Sub
No.2
- 回答日時:
こんにちは
ちゃんと見てはいませんが・・・
下の方のDoループの中の
>Set FoundCell = Range("$K$3$K2000").FindNext(FoundCell)
もし、実際のコードが質問文でご提示のままだとすると、そこで実行が止まってませんか?
Rangeの範囲がおかしいので・・・
回答ありがとうございます!
おそらくペーストした後に不手際で:が消えたのかもしれません(^_^;)
こちらの確認不足でお手を煩わせてすみません。。。
正しい処理の仕方なのか自信ないですが、続行してくれるようになりました!!
補足に追記させていただきますね!
お時間割いていただきありがとうございます!!!
もし、追記でおかしいところなどあればまた教えて下さると幸いです。
No.1ベストアンサー
- 回答日時:
コードの中身はよく見てませんが、VBAの動く速さでプリントアウトが可能な環境ですか?
プリントアウトをブレークポイント等で止めながら動かすとどうなりますか?
回答ありがとうございます!
プリントアウト自体は、VBAの動く速さで可能な環境です。
ブレークポイントで止めながらやってみたところ、必要枚数出力されました。
ちなみに、ステップインで動かしてみても正常に出力されました。
なぜかボタンで動かすと、②1)定期シートのS4セルがアクティブになったままとなり、①データシートに戻らず、2個目以降が出力されないまま終了してしまいます・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Excel(エクセル) vba 転記するときの最終行について 2 2022/09/03 09:31
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
マクロボタンを作ってのマクロ実行ができない
Excel(エクセル)
-
【Excel VBA】マクロをボタンに登録したがエラーで実行できない
Visual Basic(VBA)
-
excelのマクロで該当処理できなければ飛ばして進むにはどうすればよいのでしょうか
Visual Basic(VBA)
-
-
4
VBAで「致命的なエラー」が出ました。どのくらい致命的なんでしょうか?
Access(アクセス)
-
5
VBA PDFで保存するマクロで実行時エラー 1004
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
みなさま、ご協力ありがとうございました!!
コードを以下に訂正してみたら、正常に動いてくれました!
【旧】Set FoundCell = Range("$K$3:$K2000").Find(What:=1)
【新】Set FoundCell = Sheets("データ").Range("$K$3:$K2000").Find(What:=1)
シートの指定を入れたら、とりあえず動いてくれました(*^_^*)