こんにちは。
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も見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
-
ExcelVBA コンボボックスに入力があったらリンクしてテキストボックスを更新したい
Access(アクセス)
-
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
-
4
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
5
リストボックスをクリックすると、他フォームに値代入
Excel(エクセル)
-
6
UserForm1.Showでエラーになります。
工学
-
7
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
8
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
9
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
10
入力した値をコンボボックスにすぐに反映させる方法
Excel(エクセル)
-
11
VBAでユーザーフォームを再表示させたい。
Excel(エクセル)
-
12
ユーザーフォームへのデータ入力を繰り返す方法
Visual Basic(VBA)
-
13
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
14
コンボボックスからテキストボックスに連続して値を出したい
Excel(エクセル)
-
15
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
16
エクセルVBAでテキストボックスの値の取得と変更について
Visual Basic(VBA)
-
17
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
18
エクセルでフォーム中のテキスト値の保存方法
Excel(エクセル)
-
19
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
20
スペースとスペースの間の文字を抽出する関数
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスできない保護レベルエ...
-
Vba 電卓のテキストボックスに...
-
ユーザーフォームへのデータ入...
-
VBでの入力値制限について
-
VBAで入力数値について
-
ACCESS 除算での小数点切上げ方法
-
VBSのプログラム
-
エクセルVBAでテキストボッ...
-
VBでローマ字入力とかな入力を...
-
visual basic初心者です。 visu...
-
Functionの戻り値を配列にした...
-
VBA public変数はどのようなこ...
-
他のフォームから別のフォーム...
-
C言語のサフィックスについて
-
チェックボックスを操作できな...
-
C#のループでtextboxに値を入れ...
-
VB.NETでのイベントの途中終了
-
レコードセットにnullの場合
-
ClickとChangeイベントの違いは...
-
【VB6.0】 あるフォームから他...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
VBAで入力数値について
-
ユーザーフォームへのデータ入...
-
アクセスできない保護レベルエ...
-
【VB.NET】テキストボックスに...
-
visual basic初心者です。 visu...
-
Excel ユーザーフォームで計算 ...
-
コンボボックスからテキストボ...
-
テキストボックスを空白にする方法
-
【C#】コンボボックスにおけるS...
-
VBAのユーザーフォームで、テキ...
-
テキストボックスに大文字を
-
テキストボックス1の値に対する...
-
テキストボックスとカーソルの制御
-
整数かどうかチェックする
-
Vba テキストボックスの文字列...
-
VBAのフォーム カーソル移動
-
VBSのプログラム
-
ACCESS 除算での小数点切上げ方法
-
TextBoxの内容を右寄せ
おすすめ情報