エクセル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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
コンボボックスにリストが表示されません・・・
Excel(エクセル)
-
VB リストボックス選択項目が取得できない。
その他(Microsoft Office)
-
LISTBOXの内容が更新されません。
Visual Basic(VBA)
-
-
4
EXCEL2013 VBA ListBox 未選択
Excel(エクセル)
-
5
VBAコンボボックスの内容が反映されない
その他(プログラミング・Web制作)
-
6
入力した値をコンボボックスにすぐに反映させる方法
Excel(エクセル)
-
7
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
UserForm1.Showでエラーになります。
工学
-
10
EXCEL リストボックスのRowSouce欄が表示されない
Excel(エクセル)
-
11
複数選択のListBoxでClickイベントが拾えません
Visual Basic(VBA)
-
12
VBA リストボックス内の値を複数選択し別シートに転記するには
Visual Basic(VBA)
-
13
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
14
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
15
リストボックスの選択解除
Visual Basic(VBA)
-
16
エクセルVBA ListBox最初と最後を選択
Excel(エクセル)
-
17
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
18
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
19
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
20
ドロップダウンリストの文字を大きくしたい(VBA)
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA リストボックス反映できない
-
<新設税理士事務所です>ミロ...
-
顧客管理システム(ASP、パッケ...
-
顧客の管理ソフト?
-
エクセルデータ。容量を減らす...
-
アクセス2007 フォームで入力...
-
データ型が一致しない?
-
Excel 印刷時に挿入
-
VBA。リストボックスの値を別の...
-
ソフトウェア開発会社とはどん...
-
読み取ったQRコード/バーコード...
-
ANAの2次元バーコードがスマホ...
-
振込請求書が破れてしまいました
-
4進数風なバーコードは何ですか?
-
コンビニ決済の用紙で支払いの...
-
コンビニバイトで商品バーコー...
-
QRコードとバーコードについて
-
(食品などについている)バー...
-
国内線航空券をJALのアプリにて...
-
レシートにバーコード
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで「3次元配列」表の...
-
<新設税理士事務所です>ミロ...
-
顧客CDのCDって?
-
VBA。リストボックスの値を別の...
-
エクセルで並び替えするとハイ...
-
エクセルの数式で教えてください。
-
エクセルVBA テキストボックス検索
-
VBA リストボックス反映できない
-
EXCELシート内の数字での並び替...
-
エクセルで顧客の継続率
-
Excel 指定した固有番号で、複...
-
対象月の2桁表示について
-
アクセスでのデータ抽出方法
-
エクセルでのデータ作成(数値...
-
顧客名簿管理、郵便振込取扱票...
-
エクセルでのデータ拾い
-
【ExcelVBA】顧客別に抽出デー...
-
エクセルデータ。容量を減らす...
-
顧客データと請求書、売上帳を...
-
お客さんの来店間隔が知りたい...
おすすめ情報