
はじめて質問させて頂きます。
書き方など至らぬ点があるかと思いますが、どうぞ宜しくお願い致します。
エクセル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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Excel(エクセル) VLOOKUP が機能しない、その原因は何 ? 8 2022/10/19 12:06
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) 検索のユーザーフォームの表示について 1 2023/03/27 23:31
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) Excelヘルプの原文を表示する最速の方法(手順)には? 1 2023/08/11 11:30
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。
Visual Basic(VBA)
-
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
エクセル VBA ユーザーフォーム リストボックスで選択した値をテキストボックスに自動表示
Visual Basic(VBA)
-
-
4
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
5
VBA リストボックスをダブルクリックしデータを修正したいのですが…。
Visual Basic(VBA)
-
6
VBA リストボックス内の値を複数選択し別シートに転記するには
Visual Basic(VBA)
-
7
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
VBAコンボボックスで選択した値をシートに転記したい
Visual Basic(VBA)
-
10
ListBoxを選択したデータ編集② VBA
Visual Basic(VBA)
-
11
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
12
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
13
エクセルVBAでテキストボックスの値の取得と変更について
Visual Basic(VBA)
-
14
excelのリストボックスで選択した項目をアクティブセルに入力方法
Excel(エクセル)
-
15
EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
Excel(エクセル)
-
16
UserForm1.Showでエラーになります。
工学
-
17
エクセルVBA 複数列のリストボックス内を検索して値を複数列表示したい
Excel(エクセル)
-
18
入力済み、選択したセルに連動した行のデータをユーザーフォームで呼び出すには
Excel(エクセル)
-
19
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
20
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】列を折りたたみ非表...
-
9月17日でサービス終了らし...
-
【マクロ】アクティブセルの時...
-
ページが変なふうに切れる
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルの循環参照、?
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報
ご連絡ありがとうございます。申し訳ありません。押さえられておりません。
フォーム上から、ワークシート上の列を検索し、該当する行のNOと氏名をリストボックスに表示、検索結果候補をクリック後、テキストボックスに表示しているだけです。このテキストボックスに表示された値が、ワークシート上のどのセルかはわかるのですが、表示されたテキストボックスの値とワークシート上セルを連動させることができません。
ワークシート上のすべての行データをリストボックスに表示させて、クリックした行データからワークシート上のセルに反映(連動)させることはできたのですが、今回の内容ではリストボックスの検索結果(候補)をクリックするたびに、テキストボックスの値表示も変更されます。これと連動してワークシート上のセルがアクティブになればと考えているのですが、これがどうしてもできません。お力添え頂きたく宜しくお願い致します。
、