![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
こんにちは。
vbaで以下のような動作を行うためのコードを教えてください。
りんご 赤
みかん オレンジ
ぶどう 紫
上記のようなリストがあるとします(A列に果物名、B列に色)。
ユーザーフォームにテキストボックス1とテキストボックス2を配置し、
テキストボックス1に「りんご」と打ち込むと、自動的にテキストボックス2に「赤」が
入力される。
テキストボックス2に「みかん」ならテキストボックス2に「オレンジ」が…
という感じのマクロを書きたいです。
よろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
一例です。
シート上に
A B
りんご 赤
みかん オレンジ
ぶどう 紫
と準備
Private Sub TextBox1_Change()
TextBox2.Value = WorksheetFunction.VLookup(TextBox1.Value, Range("A1:B10"), 2, False)
End Sub
とワークシート関数を使う
No.3
- 回答日時:
これは、VBAなどで言われる連想配列と呼ばれるものだと思います。
連想配列には、様々なバリエーションがあります。
そういう前提で問題を解くと、こんなコードになります。
'---------
Dim objDic As Object '上部に←これを忘れないこと(モジュール変数と言います)
Private Sub UserForm_Initialize()
Set objDic = CreateObject("Scripting.Dictionary")
'' , A , B
objDic.Add "りんご", "赤"
objDic.Add "みかん", "オレンジ"
objDic.Add "ぶどう", "紫"
objDic.Add "バナナ", "黄色"
End Sub
'//これは、カンマ区切りで、VBEに貼り付けてしまってもよいでしょう。
'//もし、それではやっていられないなら、シートからインポートします。
Dim objDic As Object '★上部に←これを忘れないこと
Private Sub UserForm_Initialize()
Dim i As Long
Set objDic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1")
'2行目から
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
On Error Resume Next
objDic.Add .Cells(i, 1).Value, .Cells(i, 2).Value
On Error GoTo 0
Next
End With
End Sub
'-----------------------
'テキストボックス用
Private Sub TextBox1_Change()
Dim s_Text As String
If TextBox1.Text <> "" Then
s_Text = Trim(TextBox1.Text)
If objDic.Exists(s_Text) Then
TextBox2.Text = objDic.Item(s_Text)
Else
TextBox2.Text = ""
End If
End If
End Sub
No.2
- 回答日時:
No.1です。
投稿後気づきました。
>A列に果物名、B列に色・・・
ですね。
前回のコードは消去し、テキストボックス1のコードを↓に変更してください。
Private Sub TextBox1_Change()
Dim c As Range
Set c = Range("A:A").Find(what:=TextBox1, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
TextBox2.Text = c.Offset(, 1)
End If
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.1
- 回答日時:
こんにちは!
一例です。
テキストボックス1のコードを↓のようにしてみてはどうでしょうか?
Private Sub TextBox1_Change()
With TextBox2
Select Case TextBox1
Case "りんご"
.Text = "赤"
Case "みかん"
.Text = "オレンジ"
Case "ぶどう"
.Text = "紫"
End Select
End With
End Sub
※ 細かいエラー処理はしていません。m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス 意図せずサブプロシージャを移動してしまうのを止めたい 1 2022/09/02 09:19
- Visual Basic(VBA) ユーザーフォームで銀行に対応した支店コードの入力ができません Sheet1のA列に銀行名、B列に銀行 5 2022/07/28 17:50
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
- Visual Basic(VBA) Vba テキストボックスの文字列をボタンで入力するとテキストボックスの端の文字列が更新されない 2 2022/05/21 23:32
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- Visual Basic(VBA) Excel VBA 複数選択したリストボックスからテキストボックスに転記したいです。 3 2023/03/19 18:31
- Visual Basic(VBA) ExcelVBAでユーザーフォームでテキストボックスなどからセルに連続して入力するコーディングの際の 2 2022/06/29 22:51
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
-
ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい
Access(アクセス)
-
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
-
4
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
5
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
6
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
7
リストボックスをクリックすると、他フォームに値代入
Excel(エクセル)
-
8
ユーザーフォームのTextに数値を入れるとセルにエ
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
別のユーザーフォームのコマンドボタンを押す
Visual Basic(VBA)
-
11
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
12
ExcelのVBAでフォームが表示されない
Excel(エクセル)
-
13
コンボボックスからテキストボックスに連続して値を出したい
Excel(エクセル)
-
14
ユーザーフォームへのデータ入力を繰り返す方法
Visual Basic(VBA)
-
15
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
16
スペースとスペースの間の文字を抽出する関数
Excel(エクセル)
-
17
UserForm1.Showでエラーになります。
工学
-
18
エクセルVBAリストボックスに表示された検索結果をクリックして、該当するセルをアクティブセルにしたい
Excel(エクセル)
-
19
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
20
入力した値をコンボボックスにすぐに反映させる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
visual basic初心者です。 visu...
-
整数かどうかチェックする
-
ユーザーフォームへのデータ入...
-
VBAで入力数値について
-
テキストボックスに大文字を
-
【VB.NET】テキストボックスに...
-
VBでローマ字入力とかな入力を...
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
ACCESS 除算での小数点切上げ方法
-
テキストボックスとカーソルの制御
-
visual studio 2008 C# で、値...
-
コンボボックスからテキストボ...
-
256色で任意の色を作成する時、...
-
VBAのフォーム カーソル移動
-
ドラゴン曲線を再帰で書く
-
VBA public変数はどのようなこ...
-
他のフォームから別のフォーム...
-
チェックボックスを操作できな...
-
C言語のサフィックスについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
VBAで入力数値について
-
visual basic初心者です。 visu...
-
ユーザーフォームへのデータ入...
-
Excel ユーザーフォームで計算 ...
-
【VB.NET】テキストボックスに...
-
テキストボックスを空白にする方法
-
テキストボックスに大文字を
-
コンボボックスからテキストボ...
-
VB2005テキストボックスへのコ...
-
VBでローマ字入力とかな入力を...
-
VBでの入力値制限について
-
VBAのフォーム カーソル移動
-
TextBoxの内容を右寄せ
-
Vba テキストボックスの文字列...
-
整数かどうかチェックする
-
TEXTBOXの表示形式の変...
-
ACCESS 除算での小数点切上げ方法
-
テキストボックスとカーソルの制御
おすすめ情報