![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
お世話になります。
Excel2003バージョンを使っています。
ユーザーフォームで、VLOOKUP関数を使っているのですが、「TEXTBOX2」に間違った文字を入力して該当する検索値がない時は、エラー処理として"範囲外です"とメッセージボックスが出るようにしています。その場合、同時に「TEXTBOX2」に間違って入力した文字もクリアされるようにするにはどうすればいいでしょうか?因みに参照する側のシート名は"名簿"でセルの範囲名が"data"となっています。 何卒よろしくお願いします。
現在のコードは以下の通りです。
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim x As Long
'テキストボックス2の値を取得
x = TextBox2.Value
On Error GoTo ErrHdl
With ActiveSheet
'B列2列目を表示
TextBox3.Value = _
Application.WorksheetFunction.VLookup(x, Worksheets("名簿").Range("data"), 2, False) '参照する表の2列目
'C列目を表示
TextBox4.Value = _
Application.WorksheetFunction.VLookup(x, Worksheets("名簿").Range("data"), 3, False) '参照する表の3列目
'D列目を表示
・・・・・・・
End With
Exit Sub
ErrHdl:
MsgBox "範囲外です"
End Sub
No.3
- 回答日時:
まぁ純粋に趣味の問題ですが、
方法1:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
dim x as long
x = textbox2.value
if application.countif(worksheets("名簿").range("Data").columns(1), x) = 0 then
msgbox "範囲外"
textbox2 = ""
exit sub
end if
textbox3 = application.vlookup(x, worksheets("名簿").range("Data"), 2, false)
textbox4 = application.vlookup(x, worksheets("名簿").range("Data"), 3, false)
End Sub
方法2:
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
dim h as range
set h = worksheets("名簿").range("Data").columns(1).find(what:=textbox2, lookin:=xlvalues, lookat:=xlwhole)
if h is nothing then
msgbox "範囲外"
textbox4 = ""
textbox3 = ""
textbox2 = ""
exit sub
end if
textbox3 = h.offset(0, 1)
textbox4 = h.offset(0, 2)
End Sub
お世話になります。
chayamatiさんの方法でできました。
keithinさんのは今後の参考にさせて頂きます。
ありがとうございました。
No.1
- 回答日時:
もともとをTextBoxでなく ListBoxにして、間違った入力が出来なくする
マウスで、選択させて入力の手間を省く方が便利では
と思うのは私だけでしょうか。
されは、さておいて
Cancel = True
についてWeb 検索してみてください。一例ですが
Set c = Worksheets("名簿").Range("data").Find(TextBox1.Value, LookAt:=xlWhole)
If c Is Nothing Then
MsgBox "入力に間違いがあります"
Cancel = True
Else
TextBox3.Value = ・・・・
TextBox4.Value = ・・・・
・・・
End If
とかでは如何でしょうか。
お世話になります。
回答が来ないものと思っていたところに、hallo-2007さんが一番早く回答を頂いたので嬉しかったですね。
結果的にはchayamatiさんのコードを使わせていただきました。
hallo-2007さんの回答は今後の参考にさせてください。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでレコードを別テーブル...
-
公立小中学校の生徒の住所録を...
-
教員採用の名簿登載について
-
亡くなられた方の表現
-
差し込み印刷 1ページに複数の...
-
同窓会名簿で、亡くなった方の記載
-
Access]2つのテーブルを比較し...
-
同窓会の名簿に欠席者・物故者...
-
幼稚園で園児の住所、電話番号...
-
昔の友達を探したい
-
メールの件名の書き方をお願い...
-
同窓会名簿作成のための、個人...
-
it業界の実態…というかどんな雰...
-
「○日までに」の意味、その日は...
-
補足ありがとうございますと 補...
-
派遣社員です。私語がおおいと...
-
派遣社員です。仕事がこなせず...
-
社会人で坊主はやめてね
-
同期と給料に差がありました。 ...
-
社会福祉法人の略語は(株)のよ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
同窓会名簿で、亡くなった方の記載
-
Accessでレコードを別テーブル...
-
差し込み印刷 1ページに複数の...
-
Access]2つのテーブルを比較し...
-
亡くなられた方の表現
-
同窓会の名簿に欠席者・物故者...
-
エクセルで学年クラスが変わっ...
-
物故者名の一覧表を作成すると...
-
こんな時の言い回し
-
教員採用の名簿登載について
-
名簿図書館って
-
新橋の名簿図書館について
-
国立病院機構の採用者名簿に、...
-
【緊急】エクセルで複数の同じ...
-
卒業者名簿にメールアドレスを...
-
携帯のアドレス帳に「山田さん...
-
大学の同窓会名簿に載らないと...
-
同窓会名簿作成のための、個人...
-
Excel.名簿一覧表から別シート...
-
柔道整復師名簿はみれますか?
おすすめ情報