プロが教える店舗&オフィスのセキュリティ対策術

Excelのユーザーフォームについて教えてください。
【仕様】
シート1のセル
E3:E300にはF列に文字が入ると番号が連番で表示される
F3:F300にはユーザーフォーム1のテキストボックス1に入力された値をセルに反映
G3:G300にはユーザーフォーム1のテキストボックス2に入力された値をセルに反映

【作成済】
ユーザーフォーム1
テキストボックス1
テキストボックス2
コマンドボタン

ユーザーフォーム2
コンボボックス1
コンボボックス2
テキストボックス
コマンドボタン

ここまでは作成しています。
問題は、
①ユーザーフォーム2のコンボボックス1にE3~E500のうち、値が入力されているセルのみを反映させる(E3:E300内で空白があるセルは表示しない)
②ユーザーフォーム2のテキストボックスにユーザーフォーム2のテキストボックス1で選択されたE列に対応するF列の値を表示させる
③ユーザーフォーム2のコンボボックス2にはユーザーフォーム2のコンボボックス1で選択されたE列に対応するG列の値を表示させる
上記3点がどうしても不明です。
力をお貸しください。

A 回答 (2件)

こんにちは!



要するにユーザーフォーム2だけの操作で良いのですね。

>②ユーザーフォーム2のテキストボックスにユーザーフォーム2のテキストボックス1で選択されたE列に対応するF列の値を表示させる

の「テキストボックス1で選択された・・・」は「コンボボックス1で選択された・・・」ですよね。

一例です。
ユーザーフォーム2のコードを↓にしたらどうなりますか?

Private Sub UserForm_Initialize()
 Dim i As Long
  For i = 3 To 500
   If Cells(i, "E") <> "" Then
    ComboBox1.AddItem Cells(i, "E")
   End If
  Next i
End Sub

Private Sub ComboBox1_Change()
 Dim c As Range
  Set c = Range("E:E").Find(what:=ComboBox1, LookIn:=xlValues, lookat:=xlWhole)
   TextBox1 = c.Offset(, 1)
   ComboBox2 = c.Offset(, 2)
End Sub

※ 個人的には、G列データを表示させるのはコンボボックス(コンボボックス2)でなくて、
テキストボックスでもいいような気がしますが・・・

細かい検証はしていませんので、
お望みどおりにならなかったらごめんなさい。m(_ _)m
    • good
    • 0
この回答へのお礼

助かりました

ありがとうございました!
E3:E300が正しいです。
教えて頂いた方法で1発で上手く行きました!
本当にありがとうございます。3日間苦戦してたので本当に助かりました。

お礼日時:2019/11/22 16:51

No.1です。



投稿後気づいたのですが、
<仕様>のほうはE300までになっていますが、
質問文の①ではE500となっていますね。

前回のコードは500にしていますが、
実情に合わせて変更してください、m(_ _)m
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A