![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?a65a0e2)
j = 7
For i = 10 To 11
If Me.Controls("ComboBox" & i).Text = "低" Then
Sheet1.Cells(j, "D") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("E7").Value = ""
Sheet1.Range("F7").Value = ""
Sheet1.Range("E8").Value = ""
Sheet1.Range("F8").Value = ""
ElseIf Me.Controls("ComboBox" & i).Text = "中" Then
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("D7").Value = ""
Sheet1.Range("F7").Value = ""
Sheet1.Range("D8").Value = ""
Sheet1.Range("F8").Value = ""
ElseIf Me.Controls("ComboBox" & i).Text = "高" Then
Sheet1.Cells(j, "F") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("D7").Value = ""
Sheet1.Range("E7").Value = ""
Sheet1.Range("D8").Value = ""
Sheet1.Range("E8").Value = ""
ElseIf Me.Controls("combobox" & i).Text = "中間" Then
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("D7").Value = ""
Sheet1.Range("F7").Value = ""
Sheet1.Range("D8").Value = ""
Sheet1.Range("F8").Value = ""
End If
Next i
j = j + 1
としています。
combobox10とcombobox11の条件によって入力させるセルを指示しているつもりなのですが、この場合、combobox10が"低"でcombobox11が”高”の場合ですと、F7だけ”高"の表記で終わってしまいます。
やりたいのは、combobox10が低の場合はD7、中の場合はE7、高の場合はF7、中間の場合はE7
combobox10が低の場合はD8、中の場合はE8、高の場合はF8、中間の場合はE8に入力したいです。
For nextがいまいちマスターできません。ご教授お願いいたします。
No.4ベストアンサー
- 回答日時:
やりたい事が反映しているかどうか確信が持てませんが、
参考にしてみて下さい。
Private Sub CommandButton1_Click()
'対象のシートをセット
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
'対象のセルをまとめてクリア
ws.Range("D7:F8").ClearContents
'2回繰り返す
Dim i As Long
For i = 1 To 2
Dim txt As String
'コンボボックス10 => 10 = 1 + 9
'コンボボックス11 => 11 = 2 + 9
txt = Controls("ComboBox" & i + 9).Text
'コンボボックス10 => 7行目 = 1 + 6
'コンボボックス11 => 8行目 = 1 + 2
Select Case txt
Case "低": ws.Range("D" & i + 6) = txt
Case "中", "中間": ws.Range("E" & i + 6) = txt
Case "高": ws.Range("F" & i + 6) = txt
End Select
Next
End Sub
![「VBA for next」の回答画像4](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/6/543049544_5fce65e10dbec/M.jpg)
ありがとうございます。
Select Caseを使えばいいんですね。
変数が複数あると自分には指示することができていなかったんですが、ご提示されたものを使えばなんとなく理解できました。説明も詳しくいただきありがとうございます。
No.7
- 回答日時:
No.5&6です。
少し気になったと言うところで。
Comboboxは実際にはもっと存在しているとの事。
ならば1つのComboboxに使われている値は実際にはどれ程?
コード内でComboboxの値を用いた判定方法ですと、実際の数が多いならその行数も増えますでしょうし値に変更が生じれば修正も必要となります。
修正漏れやミスは痛手を受けるかもと感じました。
と初級レベルは思いました。
あとは重複する列を使用する値についての扱いなら、
ElseIf Me.Controls("ComboBox" & i).Text = "中" Then
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("D7").Value = ""
Sheet1.Range("F7").Value = ""
Sheet1.Range("D8").Value = ""
Sheet1.Range("F8").Value = ""
'~略~
ElseIf Me.Controls("combobox" & i).Text = "中間" Then
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("D7").Value = ""
Sheet1.Range("F7").Value = ""
Sheet1.Range("D8").Value = ""
Sheet1.Range("F8").Value = ""
↓
ElseIf Me.Controls("ComboBox" & i).Text = "中" or Me.Controls("combobox" & i).Text = "中間" Then '★纏めてしまう
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("D7").Value = ""
Sheet1.Range("F7").Value = ""
Sheet1.Range("D8").Value = ""
Sheet1.Range("F8").Value = ""
ElseIf Me.Controls("ComboBox" & i).Text = "高" Then
Sheet1.Cells(j, "F") = Me.Controls("ComboBox" & i).Text
Sheet1.Range("D7").Value = ""
Sheet1.Range("E7").Value = ""
Sheet1.Range("D8").Value = ""
Sheet1.Range("E8").Value = ""
'以下ナシ
'ElseIf Me.Controls("combobox" & i).Text = "中間" Then
'Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
'Sheet1.Range("D7").Value = ""
'Sheet1.Range("F7").Value = ""
'Sheet1.Range("D8").Value = ""
'Sheet1.Range("F8").Value = ""
と『論理演算子』
https://excelwork.info/excel/logical_operator/
を用いるのも手ではありますかね。
No.6
- 回答日時:
No.5です。
>Listindex使ったことないのでどうやったらいいかわからないです。
書き出したい列順とComboboxに追加している順番が同じであると言う事でなければ、この方法はスル~ですけどね。
それにComboboxの値で実はセルに書き込むことが出来ない場合とかもダメではありますので、その辺を考えると既出の回答の方がわかりやすいのかもです。
なんせジジィの考え方ですから、No.5のやり方は古いのかも知れませんし。
No.5
- 回答日時:
初級レベル故に考え方がボケている自信はありますが。
Comboboxは2つですし、それぞれで書き込む『行』は同じで『列』と『書き込む値』を変えたいのでしょうから、
.ListIndex
.Text
を使って基準列からのOffsetと書き込む値を指定すれば宜しいのでは?
と検証できない初級者は考えてしまいます。
⇒For~Nextいるのかな?とか。
実際はもっとComboboxは存在している?
ありがとうございます。
Comboboxは複数あります。自分でなんとかしようと思いましたがわからないところだけを学んであとは自分でなんとかしてみたかったので質問させていただきました。
Listindex使ったことないのでどうやったらいいかわからないです。
No.3
- 回答日時:
>End ifの後にj=j+1を指示する事がわからないです。
>素人考えですが、条件を満たす為にEnd ifの前と感じるのですが違うのですね。
i=10の時、j=7
i=11の時、j=8
にする必要があります。
その為、Next jの1行前で、jに1を加算します。
そうなんですね。なんとなくわかった気がします。
”中間”というときだけ”中”と同じE7またはE8を使用します。
ご提示いただいたものを参考に
j = 7
Sheet1.Range("D7:E8").Value = ""
For i = 10 To 11
If Me.Controls("ComboBox" & i).Text = "低" Then
Sheet1.Cells(j, "D") = Me.Controls("ComboBox" & i).Text
ElseIf Me.Controls("ComboBox" & i).Text = "中" Then
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
ElseIf Me.Controls("ComboBox" & i).Text = "高" Then
Sheet1.Cells(j, "F") = Me.Controls("ComboBox" & i).Text
End If
If Me.ComboBox10.Text = "中間" Then
Sheet1.Range("D7:F7").Value = ""
Sheet1.Range("E7") = Me.ComboBox10.Text
End If
If Me.ComboBox11.Text = "中間" Then
Sheet1.Range("D8:F8").Value = ""
Sheet1.Range("E8") = Me.ComboBox11.Text
End If
j = j + 1
Next i
としてやってできたのですが、なんかスッキリしません。
No.2
- 回答日時:
動作確認していませんが、以下でどうでしょうか。
j = 7
Sheet1.Range("D7:E8").Value = ""
For i = 10 To 11
If Me.Controls("ComboBox" & i).Text = "低" Then
Sheet1.Cells(j, "D") = Me.Controls("ComboBox" & i).Text
ElseIf Me.Controls("ComboBox" & i).Text = "中" Then
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
ElseIf Me.Controls("ComboBox" & i).Text = "高" Then
Sheet1.Cells(j, "F") = Me.Controls("ComboBox" & i).Text
ElseIf Me.Controls("combobox" & i).Text = "中間" Then
Sheet1.Cells(j, "E") = Me.Controls("ComboBox" & i).Text
End If
j = j + 1
Next i
いつもお世話になります。ありがとうございます。
まだ試してないんですが、この様にするのですね。
End ifの後にj=j+1を指示する事がわからないです。
素人考えですが、条件を満たす為にEnd ifの前と感じるのですが違うのですね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Excel(エクセル) vba userformで漢字を全角カタカナに 2 2022/07/24 15:38
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VC++ (byte)(col & 0xFF) の意味
-
VBA public変数はどのようなこ...
-
エクセルVBAでテキストボッ...
-
レコードセットにnullの場合
-
visual basic初心者です。 visu...
-
プロシージャまたは関数の引数...
-
VB6でForm_Load中にイベントを...
-
テキストボックスかラベル上の...
-
チェックボックスを操作できな...
-
String型の値にスラッシュをつ...
-
TEXTBOXの表示形式の変...
-
Functionの戻り値を配列にした...
-
プロシージャを呼び出したプロ...
-
【VBScript】変数のスコープ
-
テキストボックス1の値に対する...
-
C#のループでtextboxに値を入れ...
-
ボールが壁に当たって跳ね返る...
-
EXCEL2010 VBA SelectionChange...
-
VBでの入力値制限について
-
他のフォームから別のフォーム...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二点の座標から距離や角度を求...
-
C#を勉強していて、指定したフ...
-
テキストファイルの読み込みと...
-
複数条件のオートフィルタ(VBA)
-
VC++ (byte)(col & 0xFF) の意味
-
VB.NET)コンボボックスの連動に...
-
ドラゴン曲線を再帰で書く
-
検索結果の指定列をリストボッ...
-
カラーの16進表記の足し算
-
エクセルのVBAでの7×7の魔方陣...
-
エクセル ユーザーフォーム ...
-
エクセル・VBAでテキストボック...
-
VBA for next
-
ExcelのVBAについて質問です。
-
C言語について教えてください。
-
for文の質問です。
-
2次元配列を返す関数について
-
texで図と表を並べたい
-
エクセルVBAでテキストボッ...
-
VBA public変数はどのようなこ...
おすすめ情報