![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
たびたび申し訳ありません。
エクセルVBAのコードについて質問です。
以前別の質問で、「ユーザーフォームのテキストボックス1に入力した値を、エクセルシート1のA行の範囲で探す」と言うコードについて、
Dim Trg As Range
Set Trg = Sheets("Sheet1").Range("A:A").Find(TextBox1.Value)
といった書き方を教えていただきました。
✳︎テキストボックス1には0001が、エクセルのA行には0001〜0009が入っているイメージです。
通常であればこれで問題ないのですが、
textbox1は、書式設定をしており、number formatを0000(「1」と入力すると「0001」と表示する)と設定しています。
→実行した場合に「textbox1.value」も「textbox1.text」も「0001」と認識されます。
エクセルのデータも、セルの書式設定により、1〜9と入力したものを0001〜0009と表示させておりますが、実行の結果、こちらは、「0001」ではなく「1」と認識されるため、
findメソッドの実行結果がエラーになります。(検索結果がnothingになる)
解決方法として、エクセルのデータ自体を「‘0001」と文字列形式にすれば良いのは分かります。
ただ、できれば今の表示形式(number format0000)を保持したまま、処理できる方法を模索したいと思っています。
何か良い方法があれば、コードなどを教えていただけないでしょうか。
長々と失礼しました。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
すみません、No.1に誤記がありました。
下記でどうでしょうか。
Dim Trg As Range
Dim strWork As String
'数値の場合のみ"0001"->"1"の変換をする
strWork = textbox1.Text
If IsNumeric(strWork) Then strWork = CStr(Val(strWork))
Set Trg = Sheets("Sheet1").Range("A:A").Find(strWork)
No.4
- 回答日時:
例えば、
Dim r As Range
Set r = Range("A:A").Find(what:=TextBox1.Value, LookIn:=xlFormulas, LookAt:=xlWhole)
If Not r Is Nothing Then
r.Select
End If
Findメソッドの引数で『値』ではなく『数式(xlFormulas)』を明確に指定してあげるとか?
No.3
- 回答日時:
こんばんは、
>textbox1は、書式設定をしており、number formatを0000(「1」と入力すると「0001」と表示する)と設定しています。
>エクセルのデータも、セルの書式設定により、1〜9と入力したものを0001〜0009と表示させておりますが、
書式設定、.Range("A:A").Findをそのまま使うなら
If Not IsNumeric(TextBox1.Value) Then Exit Sub
Set Trg = Sheets("Sheet1").Range("A:A").Find(CInt(TextBox1.Value))
If Not Trg Is Nothing Then
For i = 2 To 4
Not IsNumericやNot Trg Is Nothingは
ご質問の場合のエラー対策です。
No.1
- 回答日時:
下記でどうでしょうか。
Dim Trg As Range
Dim strWork As String
'数値の場合のみ"0001"->"1"の変換をする
strWork = textbox1.Text
If IsNumeric(strWork) Then strWork = CStr(strWork)
Set Trg = Sheets("Sheet1").Range("A:A").Find(strWork)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2023/05/23 16:28
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/02 10:20
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB
-
C#のループでtextboxに値を入れ...
-
String型の値にスラッシュをつ...
-
g95プログラムからg++関数を呼...
-
VBA public変数はどのようなこ...
-
他のフォームから別のフォーム...
-
エクセルVBAでテキストボッ...
-
チェックボックスを操作できな...
-
VB.NETでのイベントの途中終了
-
テキストボックスに入る文字を...
-
テキストボックスに大文字を
-
visual basic初心者です。 visu...
-
プロシージャまたは関数の引数...
-
Picture box の サイズを変更
-
256色で任意の色を作成する時、...
-
C言語のサフィックスについて
-
演奏記号の・・・・
-
タイムアウトする仕組みを作りたい
-
VBAのフォーム カーソル移動
-
pthread_cond_waitとptherad_co...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#のループでtextboxに値を入れ...
-
String型の値にスラッシュをつ...
-
VB
-
VBA テキストボックスで計算
-
datagridview の任意の行に三...
-
g95プログラムからg++関数を呼...
-
テキストボックスを下から上へ...
-
再質問 エクセルVBAのコードを...
-
vb.net 文字コードから漢字へ変換
-
C# コントロール取得
-
VBA public変数はどのようなこ...
-
エクセルVBAでテキストボッ...
-
VBAでcallで呼び出したsubを終...
-
sublimit textっていうエディタ...
-
他のフォームから別のフォーム...
-
VB.NETでのイベントの途中終了
-
C言語のサフィックスについて
-
三項でたとえば交換って
-
【VB6.0】 あるフォームから他...
-
アクセスできない保護レベルエ...
おすすめ情報
皆様回答本当にありがとうございました。
色々な書き方があることがわかったので、
自分でも使えるように、勉強したいと思います。