
はじめて質問させて頂きます。
書き方など至らぬ点があるかと思いますが、どうぞ宜しくお願い致します。
エクセルVBAユーザーフォーム上でやりたいことは下記です。
1.ユーザーフォーム上に配置したテキストボックスで、ワークシートのセル(行データ)を検索します。(ワークシートには、A1(NO)B1(氏名)・・・などのデータが複数入力されています。)
2.リストボックスに検索結果(候補)が表示されます。(NOと氏名が表示されます。重複した氏名もあります。)※部分一致で検索しているため同じ氏名など、リストボックスに複数候補が表示され、クリックして選択します。
3.ユーザーフォーム上に配置したラベルやテキストボックスにクリックした検索結果が表示されます。
ここまではできたのですが、この後、テキストボックスに表示された値を変更して、ワークシート上のセルに反映(上書き)させたいのですが、うまくいきません。
もう1点、ワークシート上の行データには空白セルがあります。(後で入力したいため)
この空白セルに、テキストボックスで氏名を検索後、リストボックスから取得した値と同じ行のセルに「チェックボックス」を使用して、「①や②」といった文字を入力させたいです。
ユーザーフォーム上の作業の流れをまとめると、テキストボックスで検索→リストボックスに候補表示→クリック→ラベルやテキストボックスに表示→検索結果が表示されたテキストボックスで編集→セルに反映させたい です。
ご教示どうか宜しくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
No.1です。
補足コメント読みました。「押さえられておりません」とのことですが、リストボックスに行Noと氏名が表示されていると云うことは、セルの位置を押さえていることになりませんか?
行が特定できるのであれば、次のようなコードで、セルとテキストボックスを関連付けすることができると思いますよ。
TextBox1.ControlSource = "Sheet2!B" & 行目
上記のコードは、Sheet2のB列の行目(例えば3行目の場合は、B3セル)をTextBox1と関連付けます。
ご回答ありがとうございます。
リストボックスに表示された検索結果からのセル連動はできなかったのですが、
ワークシート上のすべての行データをリストボックスに表示させて、
試してみたところ教えて頂いたコードでセルと連動させることができました。
ありがとうございました。
No.2
- 回答日時:
こんにちは。
読んでいて疑問に感じるのは、
1~3まで「ここまで出来た」という人が、リストボックスにした時点で、データを1次元にしたのですから、もうワークシートのデータの情報はValueしか残っていないのですから、そのままでは、もうワークシートのデータとして戻しようがありません。
別に、1~3の内容を否定するつもりはありませんが、そのプロセスのコードを見せていただけていないとすると、結局、こちらとしては、白紙に戻さざるを得ないのですし、製作依頼と何ら代わりなくなってしまいます。
印象としては、エクセルの VBAマクロとして全体的に凝りすぎているような気がします。
今回は、失礼に聞こえるかもしれませんが、ご質問者さんの「アイデア倒れ」だと思います。私自身、何度も経験していることですが。自分のテクニックが足らないままに、自分のイメージを具体化しようとすると、うまくいきません。本来は、その時点で、新しくやり直したほうがよいものができあがります。もちろん、越えられるべきものだという覚悟があるのでしたら、コードを見せるべきだと思います。
ただ、私は私自身で、最初から、トライしてみました。
'//Userform モジュール
Dim FndData() As Variant
Dim List_Indx As Long
Private Sub CommandButton1_Click()
Dim adr As String
If TextBox2.Value <> FndData(0, List_Indx) Then
adr = FndData(1, List_Indx)
Range(adr).Value = TextBox2.Text
TextBox2.Value = ""
List_Indx = -1
End If
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Long
Dim adr As String
For i = 0 To ListBox1.ListCount
If ListBox1.Selected(i) Then
TextBox2.Text = ListBox1.List(i)
List_Indx = i
Exit For
End If
Next
adr = FndData(1, i)
Range(adr).Select
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim FirstAddress As String
Dim i As Long
Dim c As Range
If KeyCode <> 13 Then Exit Sub
i = -1
Erase FndData
With Columns(2)
If TextBox1.Text = "" Then Exit Sub
Set c = .Find("*" & TextBox1.Text & "*", , xlValues, xlWhole, xlByColumns)
If Not c Is Nothing Then
FirstAddress = c.Address
Do
i = i + 1
ReDim Preserve FndData(1, i)
FndData(0, i) = c.Value
FndData(1, i) = c.Address(0, 0)
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> FirstAddress
End If
End With
If i > 0 Then
ListBox1.List = Application.Index(FndData, 1, 0)
End If
End Sub
>リストボックスから取得した値と同じ行のセルに「チェックボックス」を使用して、「①や②」といった文字を入力させたいです。
ここまでできれば、後は、できるはずだと思います。

ご回答ありがとうございます。
おっしゃる通り自分の勉強不足で「アイデア倒れ」を痛感しました。
ご回答を参考に、1から作り直したいと思います。
ありがとうございまいた。
No.1
- 回答日時:
「ここまではできた」とのことですが、この時点で重要なのは、テキストボックスに表示されている値が、どのセルのものなのか押さえているか否かです。
それが押さえられていないのであれば、できたうちには入りません。その辺、どんな状況でしょうか?お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。
Visual Basic(VBA)
-
エクセル VBA ユーザーフォーム リストボックスで選択した値をテキストボックスに自動表示
Visual Basic(VBA)
-
-
4
VBA リストボックスをダブルクリックしデータを修正したいのですが…。
Visual Basic(VBA)
-
5
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
6
VBA リストボックス内の値を複数選択し別シートに転記するには
Visual Basic(VBA)
-
7
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
ListBoxを選択したデータ編集② VBA
Visual Basic(VBA)
-
10
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
11
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
12
EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
Excel(エクセル)
-
13
UserForm1.Showでエラーになります。
工学
-
14
入力済み、選択したセルに連動した行のデータをユーザーフォームで呼び出すには
Excel(エクセル)
-
15
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
16
コンボボックスからテキストボックスに連続して値を出したい
Excel(エクセル)
-
17
エクセルVBAでテキストボックスの値の取得と変更について
Visual Basic(VBA)
-
18
excelのリストボックスで選択した項目をアクティブセルに入力方法
Excel(エクセル)
-
19
エクセルVBA 複数列のリストボックス内を検索して値を複数列表示したい
Excel(エクセル)
-
20
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの「0」だけ非表示、小数...
-
Office2021のエクセルで米国株...
-
エクセルで条件に一致したセル...
-
エクセルで1月0日と表示される!!
-
Excelシートの保護時にデータの...
-
Excelで複数シートの選択セルを...
-
ExcelでTODAY関数を更新させな...
-
日付が未入力の際はゼロか、空...
-
EXCELのハイパーリンクのセルを...
-
複数シートの同じセル内容を1シ...
-
エクセル複数シート(1年)に1...
-
Excelでスクロールすると文字が...
-
エクセルで複数のシートの同じ...
-
ハイパーリンク で『指定された...
-
INDIRECT(空白や()がある文字列...
-
マクロ 新しいシートにデータ...
-
(Excel)あるセルに文字を入力...
-
別シートのセルを絶対参照にする
-
エクセルで別シートからの最大...
-
エクセルで複写のように自動入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Office2021のエクセルで米国株...
-
Excelの「0」だけ非表示、小数...
-
エクセルで条件に一致したセル...
-
Excelで複数シートの選択セルを...
-
エクセルについて
-
エクセルで1月0日と表示される!!
-
Excelシートの保護時にデータの...
-
日付が未入力の際はゼロか、空...
-
ExcelでTODAY関数を更新させな...
-
EXCELのハイパーリンクのセルを...
-
エクセルで、加筆修正したセル...
-
Excelでスクロールすると文字が...
-
複数シートの同じセル内容を1シ...
-
マクロ 新しいシートにデータ...
-
別シートのセルを絶対参照にする
-
ハイパーリンク で『指定された...
-
iPhoneのExcelアプリで、別のシ...
-
エクセルで複写のように自動入...
-
エクセルで指定のセルのみ完全...
-
エクセル ハイパーリンクで画像...
おすすめ情報
ご連絡ありがとうございます。申し訳ありません。押さえられておりません。
フォーム上から、ワークシート上の列を検索し、該当する行のNOと氏名をリストボックスに表示、検索結果候補をクリック後、テキストボックスに表示しているだけです。このテキストボックスに表示された値が、ワークシート上のどのセルかはわかるのですが、表示されたテキストボックスの値とワークシート上セルを連動させることができません。
ワークシート上のすべての行データをリストボックスに表示させて、クリックした行データからワークシート上のセルに反映(連動)させることはできたのですが、今回の内容ではリストボックスの検索結果(候補)をクリックするたびに、テキストボックスの値表示も変更されます。これと連動してワークシート上のセルがアクティブになればと考えているのですが、これがどうしてもできません。お力添え頂きたく宜しくお願い致します。
、