![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは。
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:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
-
4
ユーザーフォームのTextに数値を入れるとセルにエ
Excel(エクセル)
-
5
ユーザーフォームに入力したデータを保持する方法
Visual Basic(VBA)
-
6
エクセルVBA「リストボックスで選択した値をテキストボックスで変更してシート上セルに反映したい」
Excel(エクセル)
-
7
別のシートから値を取得するとき
Visual Basic(VBA)
-
8
Excel VBAにてUserFormのTextBoxにセルの値を色情報込みで反映させる方法があれば教えてください。
会計ソフト・業務用ソフト
-
9
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
10
ユーザーフォームへのデータ入力を繰り返す方法
Visual Basic(VBA)
-
11
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
12
UserForm1.Showでエラーになります。
工学
-
13
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
14
別のユーザーフォームのコマンドボタンを押す
Visual Basic(VBA)
-
15
VBA。リストボックスの値を別のユーザーフォームのテキストボックスに反映したい。
Access(アクセス)
-
16
ListView 項目の選択/選択解除について
Visual Basic(VBA)
-
17
コンボボックスからテキストボックスに連続して値を出したい
Excel(エクセル)
-
18
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
19
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
20
VBAのフォームでTextBoxがいっぱいある時
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel ユーザーフォームで計算 ...
-
visual basic初心者です。 visu...
-
零元のはいっている
-
subsequentとnextの違いってな...
-
他のフォームから別のフォーム...
-
テキストボックスかラベル上の...
-
Excel VBAでsub,dimは何の略?
-
演奏記号の・・・・
-
2次元配列のデータをファイルへ...
-
xmlの値を配列に格納したいんで...
-
xmlの値を配列変数に格納し...
-
アクセスのフィールドに値をペ...
-
サブドメインのindexはSEO的に...
-
texで図と表を並べたい
-
4変数の非線形方程式のときかた
-
マウスポインタの変更
-
パーソナルXLSBのfuctionを呼び...
-
チェックボックスを操作できな...
-
C言語のサフィックスについて
-
文字列を繰り返して表示する VBA
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAでテキストボッ...
-
アクセスできない保護レベルエ...
-
VBAで入力数値について
-
【VB.NET】テキストボックスに...
-
VBでの入力値制限について
-
テキストボックスに大文字を
-
visual basic初心者です。 visu...
-
ユーザーフォームへのデータ入...
-
Excel ユーザーフォームで計算 ...
-
コンボボックスからテキストボ...
-
VBAのフォーム カーソル移動
-
テキストボックスを空白にする方法
-
VB2010 TextBoxの数字の表示...
-
【C#】コンボボックスにおけるS...
-
VBでローマ字入力とかな入力を...
-
VB2005テキストボックスへのコ...
-
VBAのユーザーフォームで、テキ...
-
整数かどうかチェックする
-
Xcodeのテキストボックスの値に...
-
VB.NETのテキストボックスで、...
おすすめ情報