![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
ユーザーフォームを使用して指定した回数分(n回)、ユーザーフォーム内の数値のデータをセルに入力をさせたいのですが、上手く動作せず無限に繰り返してしまいます。
例として、ユーザーフォーム1のtxb1に3を入力し実行、ユーザーフォーム2を表示してtxb1-7に数値データを入力して1回反映させた後、ユーザーフォーム2のtxbをクリアして2~3回目も同様な動作をさせるようにしたいです。
Sub 実行()
Dim i as Integer, n as Integer
i=1
n=userform1.txb1.value
If i>n Then
Exit Sub
Else
i=i+1
ActiveCells.value=userform2.txb1.value
右に1マスずらしtxbの数値を反映する同様な処理のため省略
Unload Userform2
Userform2.show
Userform2.txb1.setfocus
End if
End sub
当方、VBA初心者の為勉強をしながら作成をしているのですが、どこを正せば上手く動くのか分からないためお教えいただきたいです。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
繰り返し処理の記載がないようですが、それが書かれていたとして、考えてみます。
変数iが「ユーザーフォーム1」の「テキストボックス1」に入力された数値を超えた場合に、処理を止めるという事をしたいのですよね。
もしも「ユーザーフォーム1」の「テキストボックス1」が空欄だった場合、永遠に条件を満たさずループする… という可能性はありませんでしょうか。もしくは(数値でなく)文字列が入力された場合は、どうなんでしょうか。
テキストボックスの書式設定がどうなっているか、入力された内容が「数値」であるかどうか、確認されてはいかがでしょうか。
No.2
- 回答日時:
こんばんは
ユーザフォームを利用する場合、通常はユーザからの入力を待ち、テキストボックスに入力された際や、あるいは「処理実行」ボタンなどを用意しておいて、入力終了時にボタンを押すことで処理をするものが多いと思いますが、ご提示のコードはそのような構成にはなっていません。
通常であれば、
Sub TextBox1_Change()
や
Sub CommandButton1_Click()
のようなプロシージャを用意しておいて、そちらで処理するのではないかという意味です。
ご提示のコードの場合、ユーザの入力待ちが無いので、無条件で初期設定のの値をそのまま取得すると思いますけれど、そのあたりはどうなっているのでしょうか?
現状であれば、
>Unload Userform2
>Userform2.show
などの表示操作も意味を持たないと思います。
というか、UserForm1も表示していないですし・・・
一方で、
>無限に繰り返してしまいます。
ご質問文に明示されている範囲では、繰り返すような内容は何も記述されていませんけれど、何か肝心の部分を省略していたりしませんか?
No.1
- 回答日時:
まずは、userform1.txb1.valueがあっているかどうかを確認されるとよいかと思います。
n=userform1.txb1.value
のあとに
msgbox(n)の一文を加えれば確認できるかと思います。
その上で、テキストボックス1に入れた数値の分だけ処理を繰り返す、、という場合はFor~Next構文を使った方が良いです。
まずは例として、これを試してみてください。
※エラー処理はしていません。
Private Sub 実行()
n = userform1.txb1.Value
For i = 1 To n
’ここに繰り返したい処理を書く
’例ではメッセージボックスをn回表示します。
’表示内容は1からnまでカウントアップする感じででます。
MsgBox (i)
Next
End Sub
仮にテキストボックスに3を入れた場合、
1 2 3 と文字とともに3回メッセージボックスが表示されます。
また、txb1からtxb7 は同じ処理をすると思うので、これもfor~nextで簡潔に記述できます。
例:userform2のtxb1からtxb7までの値を都度メッセージボックスで表示する。
for j=1 to 7
msgbox(userform2.Controls(”txb” & j).Value)
next
>例として、ユーザーフォーム1のtxb1に3を入力し実行、ユーザーフォーム2を表示してtxb1-7に数値データを入力して1回反映させた後、ユーザーフォーム2のtxbをクリアして2~3回目も同様な動作をさせるようにしたいです。
ちょっとどのような処理をしたいかがわかりません。
ユーザフォーム1にはtxb1というテキストボックスと、実行ボタンがある。
txb1に数値を入れ(ここでは3)、実行ボタンを押すと「実行」サブルーチンが呼び出される
ユーザーフォーム2にはtxb1からtxb7までのテキストボックス7つと実行ボタンがある。
各テキストボックスに値を入れ、実行ボタンを押すと、所定のセルに各値が入力される。それが終わったらフォーム2の各テキストボックスの値をクリア
される(フォーム2の実行ボタンを押すと、別のサブルーチンが実行されるようにした方がいいと思います)
結果としては、仮にスタートのセルがA1、nが3だったとしたら、
A1~G1まで1回目のフォーム2のtxb1~7
A2~G2まで2回目のフォーム2のtxb1~7
A3~G3まで3回目のフォーム2のtxb1~7
3行7列=21セルに値が入った状態で終わる、、という事でいいのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excel VBA マクロ シート名を変えずにA列にあるセル名の名前でファイルの分割をしたいです 3 2024/02/05 22:10
- Visual Basic(VBA) VBA 1 2024/02/03 22:51
- Visual Basic(VBA) ユーザーフォームに別シートからデータを反映させたい。 10 2023/11/03 08:46
- Visual Basic(VBA) 【ExcelVBA】値を変更しながら連続でPDFを作成し,ファイル名を自動で付して出力するコード 6 2024/07/16 17:12
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBA listBoxについて 2 2024/03/26 16:14
- Visual Basic(VBA) 【ExcelVBA】値を変更しながら連続でPDFを作成し,それらを結合した状態で出力するコード 3 2024/05/20 10:43
- Excel(エクセル) 【マクロ】セルに関数を入れる場合、列を追加した後に実行すると【文字列】になってしまう 1 2024/06/09 16:41
このQ&Aを見た人はこんなQ&Aも見ています
-
好きな人を振り向かせるためにしたこと
大好きな人と会話のきっかけを少しでも作りたい、意識してもらいたい…! 振り向かせるためにどんなことをしたことがありますか?
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
ExcelVBAマクロで実行した時の疑問
Visual Basic(VBA)
-
VBAコードのインデント表示
Visual Basic(VBA)
-
VBA コードどこがおかしいですか?
Visual Basic(VBA)
-
-
4
EXCEL vbaでシート上に配置したボタンの移動については
Visual Basic(VBA)
-
5
vbaマクロについて
Visual Basic(VBA)
-
6
VBAのエラー表示の対処法について
Visual Basic(VBA)
-
7
Excel VBAについて。こんな動作をさせるためにはどう書けばよいでしょうか。
Visual Basic(VBA)
-
8
エクセルVBAコードで教えて下さい!
Visual Basic(VBA)
-
9
エクセル タブの下のメニューを選択 実行するコード
Visual Basic(VBA)
-
10
サブフォルダに格納されているファイルを、ファイル名ごとに条件分岐させたい
Visual Basic(VBA)
-
11
VBA 2次元配列の出力
Visual Basic(VBA)
-
12
VBAのループ処理について教えてください
Visual Basic(VBA)
-
13
不要項目の行削除方法について
Visual Basic(VBA)
-
14
VBA 入力箇所指定方法
Visual Basic(VBA)
-
15
VB.net 文字列から日付型へ変更したい
Visual Basic(VBA)
-
16
質問58753 このコードでうまく動作しません。どうしたら良いですか Private Sub Wor
Visual Basic(VBA)
-
17
VBAなくなるの?
Visual Basic(VBA)
-
18
エクセルVBA
Visual Basic(VBA)
-
19
テキストファイルのフィールド行のみ削除したい
Visual Basic(VBA)
-
20
Excel VBA 選択範囲の罫線色の変更プロージャの動作速度の改善について
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAについてです。 どなたかご...
-
マクロVBAです。 どなたかコー...
-
現在のブックを閉じないで、マ...
-
【ExcelVBA】値を変更しながら...
-
【ExcelVBA】5万行以上のデー...
-
[Excel VBA]特定の条件で文字を...
-
VBA ユーザーフォーム ボタンク...
-
VBAでエクセルのテキストデータ...
-
[VB.net] ボタン(Flat)のEnable...
-
VB.net 文字列から日付型へ変更...
-
Vba 型が一致しません(エラー1...
-
以下のプログラムの実行結果は...
-
エクエルのVBAコードについて教...
-
VBA 最終行の取得がうまくいか...
-
Excel VBA 定義されたプロージ...
-
Vba WorkBooks.Openについて教...
-
質問58753 このコードでうまく...
-
エクセルのVBAコードについて教...
-
エクセルのVBAについて教えてく...
-
VBA Application.Matchについて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.net 文字列から日付型へ変更...
-
VBA 最終行の取得がうまくいか...
-
VBAでエクセルのテキストデータ...
-
【ExcelVBA】5万行以上のデー...
-
VBAについてです。 データのチ...
-
エクセルVBAで在庫の組み換え処...
-
VBAから書き込んだ条件付き初期...
-
エクセルのVBAコードについて教...
-
VBAでユーザーフォームを指定回...
-
エクセルのVBAについて教えてく...
-
vbaマクロについて
-
ExcelのVBAコードについて教え...
-
【VBA】 結合セルに複数画像と...
-
WindowsのOutlook を VBA から...
-
質問58753 このコードでうまく...
-
ExcelのVBAコードについて教え...
-
Excel VBAについて。こんな動作...
-
[Excel VBA]特定の条件で文字を...
-
[VB.net] ボタン(Flat)のEnable...
-
ExcelからVisual Basicを開くと...
おすすめ情報