
エクセルVBA がうまく作動しません。
入力したいセルをクリックすると、ユーザーフォームが開き、ふりがなの部分一致検索で顧客名(漢字)と住所が表示されクリックすると、セルに顧客名(漢字)が表示されるVBA を作りたかったのですが…
問題①リストボックスをクリックしてもセルに反映していない
わかる方、ご指導お願いします。
Sheet1に入力したいセルがあります。
Sheet2のA列に顧客コード、B列に顧客名(漢字)、C列にふりがな、D列に住所が入っています。
Const 顧客一覧の見出し行 As Long = 1
Const 顧客番号の列番号 As Long = 1
Const 顧客名漢字の列番号 As Long = 2
Const 顧客名ふりがなの列番号 As Long = 3
Const 住所の列番号 As Long = 4
Const セルに転記するリストボックスの列番号 As Long = 2 '顧客名=1 住所=2
Const 入力シートの名前 As String = "Sheet1"
Const 顧客一覧シートの名前 As String = "Sheet2"
Private 入力シート As Worksheet
Private 顧客一覧シート As Worksheet
'リストボックスがクリックされたら
Private Sub ListBox1_Click()
'リストに何も無ければ処理を抜ける
If ListBox1.Text = "" Then Exit Sub
'選択中のセルに顧客名を入力する
ActiveCell.Value = ListBox1.List(ListBox1.ListIndex, セルに転記するリストボックスの列番号 - 1)
End Sub
'入力フォームの初期化時
Private Sub UserForm_Initialize()
Set 入力シート = ThisWorkbook.Sheets(入力シートの名前)
Set 顧客一覧シート = ThisWorkbook.Sheets(顧客一覧シートの名前)
End Sub
'ふりがな入力用テキストボックス の中身が変わったら
Private Sub TextBox1_Change()
Dim 探すふりがな As String
'テキストボックスの内容から前後のスペースを取り除いて変数に入れる
探すふりがな = Trim(TextBox1.Value)
'空白なら何もせず処理を抜ける
If 探すふりがな = "" Then Exit Sub
'リストボックスをクリアする
ListBox1.Clear
'ふりがなが一致する顧客番号を集める
Dim 行番号たち() As Long: 行番号たち = ふりがなが一致する顧客を含む行番号たちをゲット(探すふりがな)
'1件も見つからなかった場合は処理を抜ける
If UBound(行番号たち) = 0 Then Exit Sub
'ふりがなが一致する顧客の情報をリストボックスに表示する
リストボックスをセットする 行番号たち
End Sub
Private Sub リストボックスをセットする(行番号たち() As Long)
ListBox1.ColumnCount = 2
ReDim リスト(UBound(行番号たち), 1)
Dim i As Long
For i = 1 To UBound(行番号たち)
リスト(i - 1, 0) = 顧客一覧シート.Cells(行番号たち(i), 顧客名漢字の列番号)
リスト(i - 1, 1) = 顧客一覧シート.Cells(行番号たち(i), 住所の列番号)
Next
ListBox1.List = リスト
End Sub
Private Function ふりがなが一致する顧客を含む行番号たちをゲット(探すふりがな As String) As Long()
Dim 一番最後の行番号 As Long: 一番最後の行番号 = 一番最後の行番号をゲット
ReDim 行番号たち(0) As Long
Dim i As Long, cnt As Long
'顧客一覧の中から一行ずつふりがなが一致する顧客番号を探す
For i = 顧客一覧の見出し行 + 1 To 一番最後の行番号
'この行のふりがな
Dim ふりがな As String: ふりがな = 顧客一覧シート.Cells(i, 顧客名ふりがなの列番号)
'この行のふりがながテキストボックスの入力内容を含む場合
If ふりがな Like "*" & 探すふりがな & "*" Then
cnt = cnt + 1
ReDim Preserve 行番号たち(cnt) '配列の要素を一つ増やす
行番号たち(UBound(行番号たち)) = i '配列の最後の要素に行番号を入れる
End If
Next
ふりがなが一致する顧客を含む行番号たちをゲット = 行番号たち
End Function
Private Function 一番最後の行番号をゲット() As Long
一番最後の行番号をゲット = 顧客一覧シート.Cells(2, 顧客名ふりがなの列番号).End(xlDown).Row
End Function
No.2ベストアンサー
- 回答日時:
そのコードの作者です。
このコードのままだと、住所が転記されるはずです。
次の定数を1に変更してください。
Const セルに転記するリストボックスの列番号 As Long = 2 '顧客名=1 住所=1
転記する項目を後から変更できるようにしていましたが、定数を顧客名(1)に戻すのを忘れていました。すみません。
No.1
- 回答日時:
こんばんは
コードはほとんど見ていませんが・・・
>問題①リストボックスをクリックしてもセルに反映していない
とおっしゃるのは、ここ(↓)のことでしょうか?
>Private Sub ListBox1_Click()
>If ListBox1.Text = "" Then Exit Sub
>ActiveCell.Value = ListBox1.List(ListBox1.ListIndex, セルに転記するリストボックスの列番号 - 1)
>End Sub
実質たったの2行しかないので、デバッグも簡単では?
・そもそもListBox1になにも入っていないか
(というか、次にList属性を読んでるけど、Text属性に何か入っているのが正しいのでしょうか?)
・ListBox1.Listの参照位置を間違っているか
・参照位置を位置は合っているけれど、空文字になっているか
辺りではないのでしょうか?
(それまでの処理がどうなっているのか知りませんけれど)
まさか、ActiveCellがとんでもないところになっているとかのオチではないですよね?
これだけ丁寧にコメントを入れて作成なさっているのですから、ご自分で直ぐに気がつかれるものと思いますけれど。
単なる思い込みで、チェックし忘れている所があるだけではないのでしょうか?
それとも、実際の原因は別のところにあるのを、「クリックイベントに問題あり」と勘違いなさっているのか・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームの表示を追加したい 2 2023/03/26 23:18
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 貼り付けた値が消えていく 以下はソースファイルの2番目のシートのB6から最終行を取得 ターゲットファ 2 2023/07/27 12:23
このQ&Aを見た人はこんなQ&Aも見ています
-
LISTBOXの内容が更新されません。
Visual Basic(VBA)
-
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
VB リストボックス選択項目が取得できない。
その他(Microsoft Office)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
6
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
7
UserForm1.Showでエラーになります。
工学
-
8
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
9
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
10
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
11
[エクセルVBA] コンボボックスのリストの更新方法について
Excel(エクセル)
-
12
EXCELのVBAでシートコピーをしたとき元のマクロを削除するには?
Excel(エクセル)
-
13
特定のシートのみ再計算させない方法は?
Excel(エクセル)
-
14
excelのリストボックスで選択した項目をアクティブセルに入力方法
Excel(エクセル)
-
15
EXCEL VBA コンボボックス、テキストボックスが未入力のときメッセージを表示する方法
Excel(エクセル)
-
16
エクセルVBAでフォームのListboxをスクロールするには?
その他(Microsoft Office)
-
17
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
18
Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
顧客CDのCDって?
-
エクセルで「3次元配列」表の...
-
エクセルの数式で教えてください。
-
エクセルで並び替えするとハイ...
-
<新設税理士事務所です>ミロ...
-
EXCELでバーコードを作成すると...
-
バーコードコントロールが印刷...
-
エクセル バーコード作成で他の...
-
バーコードってダブらない?
-
読み取ったQRコード/バーコード...
-
たばこの銘柄とバーコード番号...
-
コンビニバイトで商品バーコー...
-
EXCELで作成したバーコードの更...
-
電子請求書を送ったら原紙をほ...
-
スーパーのセルフレジの使い方
-
コンビニ決済の用紙で支払いの...
-
Access2016Runtimeをインストー...
-
振込請求書が破れてしまいました
-
差し込み印刷のバーコードを小さく...
-
ソフト面、ハード面は英語でど...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで「3次元配列」表の...
-
顧客CDのCDって?
-
<新設税理士事務所です>ミロ...
-
エクセルの数式で教えてください。
-
VBA リストボックス反映できない
-
エクセルで並び替えするとハイ...
-
現在、日興証券で重大なトラブ...
-
データ型が一致しない?
-
事業内容に適した、見積・請求...
-
VBA。リストボックスの値を別の...
-
エクセルデータから逆出力
-
お客さんの来店間隔が知りたい...
-
エクセルマクロ ブックをアクテ...
-
突合結果はプルーフリストのことか
-
顧客データと請求書、売上帳を...
-
SQLでリストビューに読み込...
-
エクセル入力支援機能について。
-
iphone4で1万件登録の電話帳作...
-
エクセルVBA テキストボックス検索
-
EXCELシート内の数字での並び替...
おすすめ情報