
こんにちは。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
ユーザーフォームに別シートからデータを反映させたい。
Visual Basic(VBA)
-
VLOOKUP関数とテキストボックスの連携
Excel(エクセル)
-
-
4
VBA コンボボックスとテキストボックスを連結させたい
Visual Basic(VBA)
-
5
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
6
テキストボックスの番号を使ったFor~Next文について
Visual Basic(VBA)
-
7
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
8
ユーザーフォームでTextBox1にカーソルを移動したい
Excel(エクセル)
-
9
入力済み、選択したセルに連動した行のデータをユーザーフォームで呼び出すには
Excel(エクセル)
-
10
Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。
Visual Basic(VBA)
-
11
エクセルVBAでオプションボタンを無効にする方法
Excel(エクセル)
-
12
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
13
テキストボックスがセルと連動したりしなかったりする
Visual Basic(VBA)
-
14
VBAでユーザーフォームにセル値を表示させるには
Visual Basic(VBA)
-
15
Excel VBAのユーザーフォームでVLOOKUP
Visual Basic(VBA)
-
16
VBAでテキストボックス内の編集をする方法
Visual Basic(VBA)
-
17
worksheetFunctionクラスのVlookupプロパティを取得できません エラーへの対応
Visual Basic(VBA)
-
18
VBAユーザーホームテキストボックスにカーソルを自動で表示したい
Visual Basic(VBA)
-
19
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
20
エクセルのユーザーフォームでVLOOKUPと同じ機能をするには?
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
エクエルのVBAコードについて教...
-
ワードの図形にマクロを登録で...
-
vbsでのwebフォームへの入力制限?
-
ダブルクリックで貼り付けた画...
-
vba textboxへの入力について教...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】開いているブックの...
-
えくせるのVBAコードについて教...
-
Excelのマクロについて教えてく...
-
VBAでセルの書式を変えずに文字...
-
複数のExcelファイルをマージす...
-
Vba Array関数について教えてく...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
VBAの「To」という語句について
-
VBAでFOR NEXT分を Application...
-
VB.net 文字列から日付型へ変更...
-
【ExcelVBA】5万行以上のデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスできない保護レベルエ...
-
visual basic初心者です。 visu...
-
エクセルVBAでテキストボッ...
-
【VB.NET】テキストボックスに...
-
VBAで入力数値について
-
ユーザーフォームへのデータ入...
-
VBSのプログラム
-
VBでの入力値制限について
-
VBAで選択箇所がある場合の重複...
-
【C#】コンボボックスにおけるS...
-
コンボボックスからテキストボ...
-
Excel ユーザーフォームで計算 ...
-
テキストボックスを空白にする方法
-
整数かどうかチェックする
-
VBA 文字列から日付に変更
-
VBAのユーザーフォームで、テキ...
-
VB2005テキストボックスへのコ...
-
visual studio 2008 C# で、値...
-
TextBoxの内容を右寄せ
-
VBでローマ字入力とかな入力を...
おすすめ情報