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
ありがとうございます。
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
二点の座標から距離や角度を求...
-
C言語で非線形方程式を解くプロ...
-
VB.NET)コンボボックスの連動に...
-
演奏記号の・・・・
-
VBAでcallで呼び出したsubを終...
-
VBA public変数はどのようなこ...
-
整数を二つ読み込み、それらの...
-
C#のループでtextboxに値を入れ...
-
アクセスできない保護レベルエ...
-
レコードセットにnullの場合
-
visual basic初心者です。 visu...
-
プロシージャまたは関数の引数...
-
チェックボックスを操作できな...
-
C言語のサフィックスについて
-
String型の値にスラッシュをつ...
-
【VB6.0】 あるフォームから他...
-
配列に複数の値があるか簡潔に...
-
VB.NETでのイベントの途中終了
-
subsequentとnextの違いってな...
-
エクセルVBAでテキストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
二点の座標から距離や角度を求...
-
VB.NET)コンボボックスの連動に...
-
VBA for next
-
for文の質問です。
-
エクセル・VBAでテキストボック...
-
複数条件のオートフィルタ(VBA)
-
検索結果の指定列をリストボッ...
-
エクセルのVBAでの7×7の魔方陣...
-
VC++ (byte)(col & 0xFF) の意味
-
C#を勉強していて、指定したフ...
-
codbo2を買うか迷ってますbo2が...
-
VBA ユーザーフォーム
-
4変数の非線形方程式のときかた
-
線の太さ
-
このプログラムがうまく作動し...
-
一行飛ばしで合計
-
Linuxのプログラミング
-
matlabで価格時系列
-
ドラゴン曲線を再帰で書く
-
VBA public変数はどのようなこ...
おすすめ情報