
ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。
既にシート3行目の「田中博」の追加情報を別のユーザーフォーム「frm_旅行」で入力するため、検索リストから「田中博」を選択し、「frm_基本❷」に表示後、「旅行」ボタンをクリックし「frm_旅行」に表示させたいのですができません。新規行数の「4」となってしましまいます。何処を修正したら良いか教えてください。
<frm_基本のコード>
Private Sub 旅行_Click() '← 検索ボタン押下時の処理追加
frm_旅行.Show vbModal '← 旅行フォームを表示する
If rtnNo > 1 Then
'検索フォームから渡された行番号のデータをセットする
With Worksheets("master")
Me.lbl行番号.Caption = rtnNo
Me.txt_氏名 = .Cells(rtnNo, 3)
End With
End If
End Sub
Private Sub UserForm_Initialize() '← フォームを表示した時の処理追加
'行番号ラベルに最終行+1をセット
Me.lbl行番号.Caption = Worksheets("master").Range("B1").CurrentRegion.Rows.Count + 1
End Sub
Private Sub cmd検索_Click() '← 検索ボタン押下時の処理追加
frm検索.Show vbModal '← フォームを表示する
If rtnNo > 1 Then
'検索フォームから渡された行番号のデータをセットする
With Worksheets("master")
Me.lbl行番号.Caption = rtnNo
Me.txt_氏名 = .Cells(rtnNo, 3)
Me.txt_住所 = .Cells(rtnNo, 4)
Me.txt_電話番号 = .Cells(rtnNo, 5)
End With
End If
End Sub
Private Sub cmd_save_Click() '← 登録ボタン押下時の処理
Dim wRow As Long
'フォーム上の各データをシートへ送る
With Worksheets("master")
wRow = Me.lbl行番号.Caption
.Cells(wRow, 9) = Me.txt_氏名
.Cells(wRow, 24) = Me.txt_住所
.Cells(wRow, 26) = Me.txt_電話番号
End With
Unload Me
End Sub
Private Sub cmd_close_Click()
Unload Me
End Sub
<frm_検索のコード>
Private Sub UserForm_Initialize() '← フォームを表示した時の処理追加
rtnNo = 0 '← フォーム間のデータ受け渡し用変更の初期化
Call SetListBox '← リストボックスに表示する処理を実行(下部に処理記述)
End Sub
Private Sub txt_氏名_Change() '← 検索する氏名を入力した時の処理追加
Call SetListBox '← リストボックスに表示する処理を実行(下部に処理記述)
End Sub
Private Sub lst_リスト_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
rtnNo = Me.lst_リスト.Text 'リストボックスから氏名をダブルクリック選択した時の処理追加
Unload Me '← フォームを閉じる
End Sub
Private Sub SetListBox() '← リストボックスに表示する処理追加
Dim wRow As Long
Dim wLstRow As Long
Me.lst_リスト.Clear '← リストボックスを初期化
wLstRow = 0
For wRow = 2 To Worksheets("master").Range("B1").CurrentRegion.Rows.Count
If Me.txt_氏名 = "" Then
'検索する氏名が入力されていない場合は、
'「master」シートの2行目~最終行の行番号と顧客名をリストボックスにセット
Me.lst_リスト.AddItem ""
Me.lst_リスト.List(wLstRow, 0) = wRow
Me.lst_リスト.List(wLstRow, 1) = Worksheets("master").Cells(wRow, 3)
wLstRow = wLstRow + 1
Else
If InStr(1, Worksheets("master").Cells(wRow, 3), Me.txt_氏名, vbTextCompare) > 0 Then
'検索する対象者名が一部一致した場合、行番号と対象者名をリストボックスにセット
Me.lst_リスト.AddItem ""
Me.lst_リスト.List(wLstRow, 0) = wRow
Me.lst_リスト.List(wLstRow, 1) = Worksheets("master").Cells(wRow, 3)
wLstRow = wLstRow + 1
End If
End If
Next
End Sub

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教える店舗&オフィスのセキュリティ対策術
中・小規模の店舗やオフィスのセキュリティセキュリティ対策について、プロにどう対策すべきか 何を注意すべきかを教えていただきました!
-
VBA ユーザーフォームからSubプロージャ―に値を引き渡す方法
Visual Basic(VBA)
-
VBAで、シート間の転記するコードをFOR~NEXTで教えてください。
Visual Basic(VBA)
-
初めてマクロを入力しますが、テキストとおりに入力したのに構文エラーです。修正を教えてください。
Visual Basic(VBA)
-
-
4
【VBAエラー】Nextに対するForがありません 対策について
Visual Basic(VBA)
-
5
Excel VBAのデバッグ
Visual Basic(VBA)
-
6
FileSearch2007に変わる構文について
Visual Basic(VBA)
-
7
VBAについて教えてください
Visual Basic(VBA)
-
8
このマクロの説明文を教えてほしいです。
Visual Basic(VBA)
-
9
Activesheet.Pasteで困っています
Visual Basic(VBA)
-
10
エクセル VBA 難しいです
Visual Basic(VBA)
-
11
Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです
Visual Basic(VBA)
-
12
VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。
Visual Basic(VBA)
-
13
vba
Visual Basic(VBA)
-
14
フォルダのサイズを一覧にしたかったのですが
Visual Basic(VBA)
-
15
エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示
Visual Basic(VBA)
-
16
エクセル365のVBAで困っています。どう修正したらよいか添削をお願いします
Visual Basic(VBA)
-
17
VBA 配列を使ったコードに直していただけますか
Visual Basic(VBA)
-
18
【至急】 当方初心者です。 マクロについて知恵をお貸しください。 ★したい動作 ①リストE列2行目か
Visual Basic(VBA)
-
19
ExcelVBA 日付変更
Visual Basic(VBA)
-
20
VBAでのMATCH関数
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
【Excel】特定の文字を含むセル...
-
5
UMLでの例外処理
-
6
findは動くがfindnextがマクロ...
-
7
DoEventsがやはり分からない
-
8
VB.NET Excelを読み込んでDataT...
-
9
switch の範囲指定
-
10
EXCEL VBA マクロ 実行する度に...
-
11
月度は何て読みますか?
-
12
リョウ・・・量?料?
-
13
Lispでリストの中身もすべて反...
-
14
メルカリのメルカードで買い物...
-
15
音声マークを一括非表示にしたい。
-
16
VBの質問#if 0 then ってどう...
-
17
セルの値が0はクリアするマクロ
-
18
IQテストの数列
-
19
Access 日付/時間型を検...
-
20
【Find関数】あるのに見つから...
おすすめ情報
公式facebook
公式twitter