エクセルのVBA初心者です。
アドバイスいただきたいのですが、
下記のソースは、E1のセルの値を1から20まで増加させながら印刷していくものです。
Dim 番号 As Integer
For 番号 = 1 To 20
Sheets("宛名印刷").Range("E1").Value = 番号
Sheets("宛名印刷").PrintOut
Next 番号
これだと20で終わってしまいますが、
例えばA8に開始番号、A11に終了番号を入力し、
For 番号 = [開始番号] To [終了番号]
という印刷をさせるにはどのような記述にすればよいのでしょうか。
VBAを知っている方には初歩過ぎるかもしれませんがよろしくお願いします。
No.2ベストアンサー
- 回答日時:
Dim 番号 As Integer
Dim cnt_ini As Integer
Dim cnt_end As Integer
cnt_ini = Sheets("宛名印刷").Range("A8").Value
cnt_end = Sheets("宛名印刷").Range("A11").Value
For 番号 = cnt_ini To cnt_end
Sheets("宛名印刷").Range("E1").Value = 番号
Sheets("宛名印刷").PrintOut
Next 番号
で、いかがでしょうか??
ありがとうございます。
私の環境にあわせてあるみたいで、よくわからないままそのままコピペしただけで動きました。
よく中身を見てみると
cnt_ini
cnt_end
は変数のことですね?
cntとiniの命名由来って教えていただけませんか。
cnt_start、cnt_endって使い方でもいいんですか?
No.4
- 回答日時:
(1)セルに直接入力された値
(2)数式計算されて結果、セルに見えている値
(3)どこかのセルから参照してきた値
どれも、セルA1の値の場合は、Range(”A1").Valueで取れます。
Value(値)という意味では、来歴は問題にする必要はありません。
ーー
ある変数をAとして、A1セルが1である場合
A=1
とかくのと
A=Range("A1")
とかくのと
同じなのです。
ーー
ですから、
A8に開始番号、A11に終了番号を入力し、
であれば
For i=Range("A8").Value To range("A11")
と
For i=2 to 18
(セルA8の値が2で、セルA11の値が18の場合)
と同じです。
ーー
後者は、A8やA11の値を、他の数に、プログラムで、摩り替えると、その値で実行できる。
固定定数でプログラムを書くと、変える場合は、色々な場所(行)のプログラムの書き換えをしないといけない。だからできるだけ(熟達者は)その場所では、変数で値をセットしているが、それより前に、その変数に定数を代入したり、定数として名前をつけて定義したりしている。(2段構え法、これは私の自称)
ーー
セルの値の扱い方の理解がVBAの第1歩で、重要ですから、これを乗り切ること。ただ質問者は、まだ解説書などもあまり読んでいない感じを受ける。
本でなくとも、WEBにもVBAの記事はあふれている。時間を割いて、適したものを探し、まねること。
詳しい解説ありがとうございます。
理解が更に深まりました。
プログラミング自体は昔かじったことがあるのですが、ソースをできるだけスマートに書かないと後々自分自身の書いたソースをいじるのも大変ですものね。
同じ結果でも色々な工夫ができますね。
No.1
- 回答日時:
こんにちは。
値をそのまま代入すればいいと思います。
-------------------------------------------------------------
Sub Sample()
Dim NumStart As Long
Dim NumEnd As Long
Dim x As Long
NumStart = ThisWorkbook.Sheets("宛名印刷").Range("A8").Value
NumEnd = ThisWorkbook.Sheets("宛名印刷").Range("A11").Value
For x = NumStart To NumEnd
ThisWorkbook.Sheets("宛名印刷").Range("E1").Value = x
ThisWorkbook.Sheets("宛名印刷").PrintOut
Next
End Sub
-------------------------------------------------------------
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルの印刷マクロについて質問があります。 現在、下記のマクロで印刷しています。Sheet1のD6 5 2023/06/12 10:59
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 数式が消える 1 2023/03/19 16:55
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) エクセルでキーリストからデータを取り出して1枚1枚印刷するには? 11 2022/06/27 09:52
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- その他(音楽・ダンス・舞台芸能) チケットに座席番号のみを印刷する方法 4 2023/02/10 11:21
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
Excelで指定した日付から過去の...
-
特定のセルが空白だったら、そ...
-
VBAでセルをクリックする回...
-
【Excel VBA】指定行以降をクリ...
-
VBからEXCELのセルの値を取得す...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定の文字を条件に行挿入とそ...
-
TODAY()で設定したセルの日付...
-
【Excel】指定したセルの名前で...
-
Excel VBA、 別ブックの最終行...
-
VBAの計算で@が出てしまう件
-
DataGridViewのセル編集完了後...
-
Excelのプルダウンで2列分の情...
-
Excel ユーザーフォームをモー...
-
EXCELのVBA-フィルタ抽出後の...
-
VB6のDataGridコントロールが良...
-
”戻り値”が変化したときに、マ...
-
Sub 要具ライフ() ActiveSheet....
-
RC表示に変数を入れる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報