Excel VBA 質問スレッド №2035 (解決済)

コマンドボタンで入力方法変更について

投稿者 : 鈴木 初心者     投稿日時 : 2024/10/24(Thu) 11:46:02     OS : Windows 10     EXCEL : Office 365
質問よろしくお願いいたします。

現在、別シート(営業所リスト)に営業所名だけを入れており
フォームで立ち上げ あ行 か行 ・・・のコマンドボタンを押すと
営業所リストにある営業所名を選んでテキストボックスAに反映するようになっております。
営業所だけではなく 営業所の住所もテキストボックスBに反映するようにしたいです。

よろしくお願いいたします。

■現在の仕様

 A    B     C    D    E    F    G    H    I    J
1 あ    か   さ    た   な    は   ま    や   ら    わ
2 A営業所 B営業所 C営業所 D営業所 E営業所 F営業所 G営業所 H営業所 I営業所 J営業所
3 1営業所 2営業所 3営業所 4営業所 5営業所 6営業所 7営業所 8営業所 9営業所 10営業所

Option Explicit 'SupplierForm1
Private Sub CommandButton1_Click() 'あボタン
    ListBox1.Clear
    Call MyListUp(1)
End Sub
Private Sub CommandButton2_Click() 'かボタン
    ListBox1.Clear
    Call MyListUp(2)
End Sub
Private Sub CommandButton3_Click() 'さボタン
    ListBox1.Clear
    Call MyListUp(3)
End Sub
Private Sub CommandButton4_Click() 'たボタン
    ListBox1.Clear
    Call MyListUp(4)
End Sub
Private Sub CommandButton5_Click() 'なボタン
    ListBox1.Clear
    Call MyListUp(5)
End Sub
Private Sub CommandButton6_Click() 'はボタン
    ListBox1.Clear
    Call MyListUp(6)
End Sub
Private Sub CommandButton7_Click() 'まボタン
    ListBox1.Clear
    Call MyListUp(7)
End Sub
Private Sub CommandButton8_Click() 'やボタン
    ListBox1.Clear
    Call MyListUp(8)
End Sub
Private Sub CommandButton9_Click() 'らボタン
    ListBox1.Clear
    Call MyListUp(9)
End Sub
Private Sub CommandButton10_Click() 'わボタン
    ListBox1.Clear
    Call MyListUp(10)
End Sub
Private Sub MyListUp(ByVal MyC As Long)
    Dim i As Long
    Load SupplierForm01
    With Worksheets("営業所リスト")
        SupplierForm01.Caption = "「 " & .Cells(1, MyC) & " 」の選択"
        For i = 2 To .Cells(.Rows.Count, MyC).End(xlUp).Row
            SupplierForm01.ListBox1.AddItem .Cells(i, MyC)
        Next i
    End With
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    MainForm.TextBoxA.Text = Me.ListBox1.Text
    Unload Me
End Sub


■変更後の営業所リスト

 A    B     C    D    E    F    G    H    I    J
1 あ    住所  か    住所  さ    住所  た    住所  な    住所
2 A営業所 A住所  B営業所 B住所  C営業所 C住所  D営業所 D住所  E営業所 E住所
3 1営業所 1住所  2営業所 2住所  3営業所 3住所  4営業所 4住所  5営業所 5住所

スポンサーリンク
[返信 1] Re : コマンドボタンで入力方法変更について
投稿者 : さんこう     投稿日時 : 2024/10/24(Thu) 13:09:22
>営業所だけではなく 営業所の住所もテキストボックスBに反映するようにしたいです。

「営業所リスト」から、TextBoxAに設定した営業所名を探して、

その右隣セルの値をTextBoxBに反映させればよろしいかと思います。

[返信 2] Re : コマンドボタンで入力方法変更について
投稿者 : 鈴木 初心者     投稿日時 : 2024/10/24(Thu) 14:39:14
■[返信 1] さんこうさん(2024-10-24 13:09:22)の記事
> >営業所だけではなく 営業所の住所もテキストボックスBに反映するようにしたいです。

> 「営業所リスト」から、TextBoxAに設定した営業所名を探して、

> その右隣セルの値をTextBoxBに反映させればよろしいかと思います。


ご返答ありがとうございます。

> 「営業所リスト」から、TextBoxAに設定した営業所名を探して、

> その右隣セルの値をTextBoxBに反映させればよろしいかと思います。
下記のどの部分をどのように変更するのかわかりません。
大変恐れ入りますが教えていただけますでしょうか。
よろしくお願いいたします。

Private Sub MyListUp(ByVal MyC As Long)'営業所リストからデータを読み取る
    Dim i As Long
    Load SupplierForm01
    With Worksheets("営業所リスト")
        SupplierForm01.Caption = "「 " & .Cells(1, MyC) & " 」の選択"
        For i = 2 To .Cells(.Rows.Count, MyC).End(xlUp).Row
            SupplierForm01.ListBox1.AddItem .Cells(i, MyC)
        Next i
    End With
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)'上記で選ばれたテキストをテキストボックスに反映する
    MainForm.TextBox3.Text = Me.ListBox1.Text
    Unload Me
End Sub

[返信 3] Re : コマンドボタンで入力方法変更について
投稿者 : さんこう     投稿日時 : 2024/10/24(Thu) 15:01:55
>下記のどの部分をどのように変更するのかわかりません。

>Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)'上記で選ばれたテキストをテキストボックスに反映する
> MainForm.TextBox3.Text = Me.ListBox1.Text

ここへ追加するといいでしょう

> Unload Me
>End Sub


参考になれば。

・TextBoxAに設定した営業所名を探す

Findメソッドを使うのがよろしいかと思います。

<VBA Findメソッド>
https://www.google.com/search?q=vba+find%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89


・右隣セルの値

Offsetプロパティで取得できます。

<VBA Offsetプロパティ>
https://www.google.com/search?q=VBA+Offset%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3

[返信 4] Re : コマンドボタンで入力方法変更について
投稿者 : 鈴木 初心者     投稿日時 : 2024/10/24(Thu) 16:33:24
ありがとうございます。

教えていただいたアドレス先を見てみました。
どのような内容なのかはわかったのですが、それをどのように活かすのかがわかりませんでした。

元々のVBA文が教えていただいたのをそのまま貼り付けているため
プログラムの基礎がわかっておりません。

申し訳ございません。

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    MainForm.TextBoxA.Text = Me.ListBox1.Text
  MainForm.TextBoxB.Text = 'Findメソッドで営業所リストから営業所名を探す。Offsetプロパティで営業所名隣の住所を取得
    Unload Me
End Sub

このような意味なのだと思いました。

よろしくお願いいたします。

■[返信 3] さんこうさん(2024-10-24 15:01:55)の記事
> >下記のどの部分をどのように変更するのかわかりません。

> >Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)'上記で選ばれたテキストをテキストボックスに反映する
> > MainForm.TextBox3.Text = Me.ListBox1.Text

> ここへ追加するといいでしょう

> > Unload Me
> >End Sub


> 参考になれば。

> ・TextBoxAに設定した営業所名を探す

> Findメソッドを使うのがよろしいかと思います。

> <VBA Findメソッド>
> https://www.google.com/search?q=vba+find%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89


> ・右隣セルの値

> Offsetプロパティで取得できます。

> <VBA Offsetプロパティ>
> https://www.google.com/search?q=VBA+Offset%E3%83%97%E3%83%AD%E3%83%91%E3%83%86%E3%82%A3



[返信 5] Re : コマンドボタンで入力方法変更について
投稿者 : さんこう     投稿日時 : 2024/10/24(Thu) 16:50:27
>どのような内容なのかはわかったのですが、それをどのように活かすのかがわかりませんでした。

「どのような内容なのかはわかった」のであれば、いろいろ試してみるといいでしょう。


Sub Test_Find()
    MsgBox Worksheets("営業所リスト").Cells.Find("A営業所")
    MsgBox Worksheets("営業所リスト").Cells.Find("A営業所").Offset(0, 1)
End Sub

[返信 6] Re : コマンドボタンで入力方法変更について
投稿者 : 鈴木 初心者     投稿日時 : 2024/10/24(Thu) 17:25:48
さんこうさま

教えていただいたのを参考に色々と試させていただきます。
ありがとうございました。

■[返信 5] さんこうさん(2024-10-24 16:50:27)の記事
> >どのような内容なのかはわかったのですが、それをどのように活かすのかがわかりませんでした。

> 「どのような内容なのかはわかった」のであれば、いろいろ試してみるといいでしょう。


> Sub Test_Find()
> MsgBox Worksheets("営業所リスト").Cells.Find("A営業所")
> MsgBox Worksheets("営業所リスト").Cells.Find("A営業所").Offset(0, 1)
> End Sub





当掲示板について
  • Excel VBA に関する掲示板です。Excel VBA に関する質問や疑問、それに対する解決方法など気軽に投稿してください。
  • 記事内ではHTMLのタグは使用できません。
  • 記事は一度投稿すると修正できません。内容を訂正したい場合は返信で対応してください。
  • Sub〜End Sub、Function〜End Function は自動的にプログラムコードとみなし、枠で囲って見やすくします。
  • Excel VBA とは関係ないことや、他人が不快に思うようなことなど、管理人が適当でないと判断した記事は削除する場合があります。
スポンサーリンク
返信入力フォーム
お 名 前  :
内  容   :

ステータス  :

認証コード  : キャプチャ画像 




( 処理日時 : 2025-07-06 06:01:53 )
タイトルとURLをコピーしました