• ベストアンサー

エクセル vbaについて

いろいろ探してみたのですが、見つかりませんでしたので質問させていただきます。 vbaを使って セル(a10)の数字を変化させたいのです。 変化させる数字はそのときによって変わります。 for next構文でできるのでしょうか? その番号はカウント式で1づつ増加させます。 なので 任意に10を入れると 1,2,3・・・と言うように数字を変化させその数字ごとに印刷をしたいのです。 どなたか教えてくださいよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2の補足について。 最初のSub ボタン3_Click()は不要です。構造的におかしいです。Sub Subとなっているから。 私のは、貼りつけたテキストボックスに、例えば10といれてEnterキーを押すと、それが(それだけで)イベント(キッカケ)となり、コードが実行されます。ボタンのクリックとは関連付けていません。

a32
質問者

お礼

ありがとうございます。できました。本当に助かりました。別にまた質問がありますのでお答えいただけると幸いです。 今回のマクロに新たに付け加えたいのです。よろしくお願いいたします。

a32
質問者

補足

お返事ありがとうございました。早速やってみました。 エクセル画面で、表示→ツールバー→コントロールボックス→テキストボックスを経て適当な大きさにします。ダブルクリックでvba画面が出てきて下記のように貼り付けました。 Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then n = TextBox1.Value For i = 1 To n Cells(10, "A") = i TextBox1.PrintObject = False 'テキストボックスは印刷しない Range("a1:j10").PrintOut '範囲は適当に修正のこと MsgBox i '確認用 Next i End If End Sub シート1に戻りコントロールボックスに数字を入れるためにクリックすると小さな四角が出てきてしまい、その時点で数字を入力しエンターを押すと"参照値が違います"と出てしまいます。 本当に申し訳ありませんが、アドバイスお願いいたします。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

例えばSheet1に、テキストボックスを1つ貼りつけます。 ダブルクリックしますとVBAの画面になり、TextChangeのコードが出ますが、無視して その下の余白部に Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then n = TextBox1.Value For i = 1 To n Cells(10, "A") = i TextBox1.PrintObject = False 'テキストボックスは印刷しない Range("a1:j10").PrintOut '範囲は適当に修正のこと MsgBox i '確認用 Next i End If End Sub を貼りつけます。 デザインモードを脱して、ワークシートSheet1に戻り、テキストボックスに数字を(例えば3)いれてエンターキーを押すと A10セルの(番号か?)1,2,3のものが1部ずつ印刷されます。

a32
質問者

補足

ありがとうございます。試したのですが、マクロのことがよくわからずに下記のように入れたらコンパイル エラー?となりました。 Sub ボタン3_Click() Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer) If KeyCode = 13 Then n = TextBox1.Value For i = 1 To n Cells(10, "A") = i TextBox1.PrintObject = False 'テキストボックスは印刷しない Range("a1:j10").PrintOut '範囲は適当に修正のこと MsgBox i '確認用 Next i End If End Sub お手数おかけしてすみません

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

サンプルは毎回メッセージが出るので、5くらいで試して下さい。 テスト環境で。 Sub Test() Dim LCount, i As Long LCount = Application.InputBox("最後の数字は?", "Count") If IsNumeric(LCount) Then  For i = 1 To LCount    Range("A10").Value = i    'ActiveSheet.PrintOut    MsgBox i  Next i End If End Sub

a32
質問者

お礼

回答ありがとうございました。 このようなマクロもあるんですね。とても参考になりました。

関連するQ&A