エクセルにてループ処理をしたいと考えています。
sheet1には連番が振ってあるデータが格納してあります。
sheet2にはsheet1の連番をB1に入力すれば必要なデータだけが出るようにvlookupで表示されるようにしてあります。
sheet3にはフォーマットが作ってあり、sheet2で表示されたデータがsheet3の対応した場所にデータが入るように作ってあります。
sheet2のA1に5 A2に20と入力したら連番5から20までsheet3が印刷するVBAを組みたいです。
変数の代入が間違っていると思うのですが、何が間違っているのか
わからないので、質問しました。
以下にためしで組んでみたものがありますので、ご教授お願いします。
Dim temp1
Dim temp2
Dim temp3
Sheets("sheet2").Select
temp1 = Range(A1).Value
temp2 = Range(A2).Value
temp3 = temp2 - temp1
While temp3
Sheets("sheet2").Select
Range(B1).Value = temp1
Sheets("sheet3").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
temp1 + 1
Wend
初歩的なミスをしていると思うのですが、よろしくお願いします。
No.2ベストアンサー
- 回答日時:
最後のtemp + 1の結果をtempに代入していませんね。
あと,temp3の値を変更していないために無限ループです。
こういう場合には,For文をつかうとよいです。
単純に書き直した物 (実際の動作確認無し) だと,こんな感じでしょうか。
Dim first
Dim last
Dim current
Sheets("sheet2").Select
first = Range(A1).Value
last = Range(A2).Value
For current = first To last
Sheets("sheet2").Select
Range(B1).Value = current
Sheets("sheet3").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next
この回答への補足
ご回答ありがとうございます。
上記プログラムを走らせてみましたが、
first = Range(A1).Value
の部分でエラーを起こして止まってしまいました。
Rangeメソッドは失敗しました
'Global'オブジェクト
と出ます。
Dimの前でSub印刷()というものがあるだけなんですが、
まだ何か問題があるのでしょうか?
rangeの書き方を直したら上のプログラムでうまく動きました。
無限ループは何回かハマって、四苦八苦してました。
的確な指摘ありがとうございました。
No.3
- 回答日時:
> first = Range(A1).Value
> の部分でエラーを起こして止まってしまいました。
そりゃ当然でしょう。
Range("A1")と、"" で囲むのを忘れてます。
他の部分もそうですね。
これではRangeメソッドは失敗します。
指摘されると、本当に単純なミスしてました。
VBAは初めてさわるので、指摘いただいたおかげで
うまくいくようになりました。
ご回答ありがとうございました。
No.1
- 回答日時:
While temp2 >= temp1 "変更箇所
Sheets("sheet2").Select
Range(B1).Value = temp1
Sheets("sheet3").Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
temp = temp1 + 1 "変更箇所
これでどうでしょう。
お返事ありがとうございます。
上のRangeでのミスがあり、試したときはエラーで
動きませんでした。
しかし、作り方の勉強にはなりました。
ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaのvlookup関数エラー原因を教えていただけないでしょうか。 3 2022/04/25 16:16
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Visual Basic(VBA) このプログラムなんですがsheetにデータを置いて表示できるようにしてありますがsheetに101を 2 2023/02/23 20:13
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
Accessで該当データにフラグを...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
MSCommを用いたRS-232-Cデータ転送
-
S9タイプからXタイプにデータ...
-
EXCELVBAでSQLserverからデータ...
-
[C言語] コメント文字列を無視...
-
PLSQLで文字列置換
-
VBAを使ってOutlookメール本文...
-
fortranでフーリエ変換→パワー...
-
VBA 毎日取得するデータを順番...
-
カンマからスラッシュに
-
C# ソケット通信でデータ受信時...
-
HTMLでテキストボックスで...
-
PDOオブジェクトは使い回し可能?
-
Excelのマクロでワードのテキス...
-
Excelの関数で表示されているデ...
-
GETはできるがPOSTができない、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
教えて下さい
-
配列でデータが入っている要素...
-
【エクセル】測定時間がバラバ...
-
メモ帳(テキストデータ)をExc...
-
VBA 空白セルを削除ではない方...
-
多量のSUMIF式を軽くしたい
-
Excelのマクロでワードのテキス...
-
エクセルで2つの時系列のデー...
-
この行は既に別のテーブルに属...
-
VBAを使ってOutlookメール本文...
-
シーケンサにパソコンからアク...
-
EXCELVBAでSQLserverからデータ...
-
ブレーカー落ちで壊れたりしな...
-
[C言語] コメント文字列を無視...
-
オープンチヤットでデータ削除...
-
モジュラス103の算出方法について
-
javaでDBからデータを取ってき...
-
カンマからスラッシュに
-
VBA 毎日取得するデータを順番...
-
Android携帯をUSBメモリ代わりに
おすすめ情報