No.6ベストアンサー
- 回答日時:
On error についてのサイトを照会しておきます。
http://excelvba.pc-users.net/fol6/6_8.html
それと、多分、テキストにある事例は、ComboboxでなくTextBoxで入力した値を検索する事例ではないでしょうか。
Vlookup関数ですので、検索値がない場合はエラー(#NA)が表示されますよね。
VBAでエラーがでると、終了 デバッグのメッセージがでるので
On Error Resume Next
を記述しているのではないでしょうか。
質問者の場合、ComboBoxですので、必ず検索値が存在しますよね。
つまりエラーは発生しないはずですので、Error処理は不要なのではないでしょうか。
それよりも、Combobox.ListIndex で選択した値が何行目なのかわかるので
Vlookup関数を使用する必要もないのではないかと、思っているしだいです。
この回答への補足
回答ありがとうございます。
検索値が存在しない場合のエラーを防ぐために必要という事ですね。
Vlookup関数を使って、テキストボックスを使用する場合、Rowsourceから選択する事はできないから、エラーが出てくる場合があるので、それを無視するという構文だったんですね。
勉強になります。URLも紹介してくださってありがとうございます。
とりあえず、勉強のために、「Combobox.ListIndex」も試してみます。
本当にありがとうございました。頼りにしていますので、これからもよろしくお願いします。
No.5
- 回答日時:
エクセルVBAでもVLOOKUP関数は使えます。
>11番目(L列)と2番目(L列)を
コンボでいつも2つ以内を選択するのですか。
コンボで選択するとき、例えば会社の場合会社名(人間に判りやすい方)を選択して、会社コードなどを割り出すのが普通でしょう。
逆は不便です。
1つしか選択しない例ですが
それならコンボを2列にしてBoundColumnを2列目とかにすれば良い。
F1:G3
東京1
大阪2
福岡3
ーー
プロパティ
BoundColumn 2
ColumnCount 2
TextColumn 2
ーー
Private Sub ComboBox1_Change()
MsgBox ComboBox1.TextColumn
End Sub
エクセルVBAでは、コンボでMultiSelectは(調べてみますが)出来なかったような記憶がある。
No.4
- 回答日時:
こんばんは。
#1の回答者です。
#1の補足のコードは、スペルが違っています。Worksheetsfunction ではなくて、WorksheetFunction (s)が余分です。
TextBox1.Text=Worksheet[s]function._ ← それと、._ (点とアンダーバー)がくっついています半角スペースを間に入れます。
Private Sub ComboBox1_Change()
On Error Resume Next
TextBox1.Text = WorksheetFunction. _
VLookup(CInt(ComboBox1.Value), Range("一覧"), 2, False)
On Error GoTo 0
End Sub
この回答への補足
返事が遅くなってしまい、申し訳ありません。
おっしゃるとおり訂正したら、無事、思うように動作しました。
本当にありがとうございます。
No.3
- 回答日時:
コピペしたのは
Private Sub ComboBox1_Change()
TextBox1.Value = Range("B" & ComboBox1.ListIndex).Value
End Sub
ですか?まずエラーではないですよね?
>Rowsource上にある表の11番目(L列)と2番目(L列)を、それぞれのテキストボックスに表示させたい
Rowsourceで選択したのは何行目?
表示したいのは 何故にL11とL2セル?
Private Sub ComboBox1_Change()
MsgBox ComboBox1.ListIndex
TextBox1.Value = Range("L" & ComboBox1.ListIndex + 1).Value
End Sub
メッセージボックスで表示される数値と
Textboxに表示された値の行番号の関係はどうなっていますか?
この回答への補足
返事が遅くなってすみません。
おかげさまで問題は解決しました。
>Rowsource上にある表の11番目(L列)と2番目(L列)を、それぞれのテキストボックスに表示させたい
↑はすみません。私のタイプミスです。
正しくは「2番目(C列)」です。本当に申し訳ございません。
一応、問題は解決したものの、ちょっと分からないのが、CInt()はどういう意味なのか?と、TextとValueは同違うのか?って事と、
On Error Resume Next
On Error GoTo 0
は本には『エラーは無視する』という意味なんだそうですが、何故コレが『エラーは無視する』という意味になるのか、また、コレは絶対必要なのか?って事です。
もし、よろしければ、教えていただきたいのですが、、、、、
本当に度々すみません。
私が見ている本には、あまり詳しく記載がないもので、、、、、
恐縮ですが、よろしければ、お願いします。
No.2
- 回答日時:
ワークシート関数(VLOOKUP)をVBAで使う方法もあります。
Private Sub ComboBox1_Change()
TextBox1.Value = WorksheetFunction.VLookup(ComboBox1.Value, Columns("A:B"), 2, False)
End Sub
A列を検索して、B列を取得といった感じですが?
ふと思ったのですが
ComboBoxに表示されているのが、仮にA列だとして、その隣(B列)の値を出したいという質問であれば、ComboxのListIndexが使えると思います。
Private Sub ComboBox1_Change()
TextBox1.Value = Range("B" & ComboBox1.ListIndex).Value
End Sub
この回答への補足
回答ありがとうございます。
おっしゃる通り、表の左端の列から、目的のセル内の値を表示させたいのです。
hallo-2007さんのものを、コピペしてやってみたのですが、上手くいきません。
他の方法はないでしょうか。
図々しく質問してすみません。
No.1
- 回答日時:
こんにちは。
同じような質問がすでに出ていますが、それで応用できませんか?
http://oshiete1.goo.ne.jp/qa5512098.html
#2
もし、本で分からないようでしたら、本の内容を具体的におっしゃってください。
ご質問内容だけでは、ComboBox というのは、Form ツールでも、Control ツールでも、UserForm 上でもありますから、それが特定できません。
この回答への補足
早速の回答ありがとうございます。
コンボボックスとテキストボックスはユーザーフォーム上にあります。
コンボボックスのRowsource上にある表の11番目(L列)と2番目(L列)を、それぞれのテキストボックスに表示させたいのですが、上手くいきません。
本に記載されている内容は、
Private Sub ComboBox1_Change()
On Error Resume Next
TextBox1.Text=Worksheetsfunction._
VLookup(CInt(ComboBox1.Text),Range("一覧"),2,False)
On Error GoTo 0
End Sub
です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) excel vbaでselenium basic 3 2022/10/02 12:35
- その他(Microsoft Office) ワードのマクロについて教えてください。 1 2023/01/21 16:01
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Excel(エクセル) 【エクセルマクロ】既に開いているIEの、サイズや表示位置を変更するには 4 2022/12/01 22:57
- Visual Basic(VBA) 昨日、質問した件『VBA にて、条件付き書式で背景色を設定しているセルの範囲で、背景色付きのセルをカ 4 2022/04/07 14:39
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
「B列が日曜の場合」C列に/...
-
エクセルで最初のスペースまで...
-
VBAで文字列を数値に変換したい
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
エクセル 文字数 多い順 並...
-
エクセル(勝手に太字になる)
-
Excel 別ファイルに自動的に反...
-
Excel、市から登録している住所...
-
Excelで半角の文字を含むセルを...
-
EXCELで 一桁の数値を二桁に
-
A列がない・・・A列が非表示に...
-
文字列に数字を含むセルを調べたい
-
エクセルで文字が混じった数字...
-
2つのエクセルのデータを同じよ...
-
エクセルの項目軸を左寄せにしたい
-
エクセル 同じ値を探して隣の...
-
文字を入力したら数値が自動入...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで二つの数字の小さい...
-
PowerPointで表の1つの列だけ...
-
エクセルで最初のスペースまで...
-
2つのエクセルのデータを同じよ...
-
エクセル 同じ値を探して隣の...
-
エクセル(勝手に太字になる)
-
「B列が日曜の場合」C列に/...
-
エクセル 文字数 多い順 並...
-
EXCELで 一桁の数値を二桁に
-
Excelで半角の文字を含むセルを...
-
エクセルで文字が混じった数字...
-
エクセルの項目軸を左寄せにしたい
-
Excel、市から登録している住所...
-
エクセルで、列の空欄に隣の列...
-
エクセルの表から正の数、負の...
-
エクセルの並び変えで、空白セ...
-
VBAで文字列を数値に変換したい
-
A列がない・・・A列が非表示に...
-
文字列に数字を含むセルを調べたい
-
50人を数回、グループ分けする...
おすすめ情報