http://oshiete.homes.jp/qa3451770.html
こちらで質問した者なのですが
(benelli様ありがとうございました)
VBAでユーザーフォームでの検索を作成し
このユーザーフォーム内にテキストボックスを作成して
そのテキストボックスに入力した数字を検索できるようにしたいです。
よろしくお願い致します。
No.4ベストアンサー
- 回答日時:
質問の表現が判りにくい。
前の質問とまた繰り返しているのは、前問が判りにくくて、パスした回答者が多かったのではないかな。
「エクセルのシートの検索で、「検索語」をユーザーフォームのテキストボックスで指定したい」というのが判りやすい表現と思う。
エクセルのセルの検索のVBAコードの質問らしい。
ーー
それであれば、マクロの記録状態にして、編集ー検索の操作を行い、記録されたマクロを見る。その中で、クロ検索語を指定するWhat:=○○
の○○をユーザーフォームのテキストボックスの値で指定するように
すればよい。
ただそれだけのこと。
ーー
ただし
(1)数字に限定しないといけないのか。その場合、テキストボックスの値は文字列だから注意。
(2)2つ以上の該当が無いのか、あればどうするのか
(3)検索して該当があればどうする(このセルと見るだけでよい)のか。
質問振りからして、回答者に、そこまで回答してもらわないと、判らないレベルではないですか。
(4)検索を実行というキッカケを与えるコマンドボタンなどのことも書いてないが、きちっと書くべきです。
ーーー
ユーザーフォームにテキストボックス1つ、ボタン2つ、1つは最初の検索、2つめは第二以後の検索用。
H列に、見つかったセルのアドレスを出してます。本番では何か処理したい作業のコードを入れてください。
検索範囲はRange("A1:D9")にしてます。広げるなり、Cellsにするなりしてください。
ーー
標準モジュールの初めに(モジュール外の最初に入れる。パブリック変数)
Public adr
Public k
Public fadr
を入れる。
ーー
第1検索用 標準モジュールに
Sub Macro4()
MsgBox "テキストボックスで" & UserForm1.TextBox1.Text & "と入力しました"
k = 1
If IsNumeric(UserForm1.TextBox1.Text) Then
n = Val(UserForm1.TextBox1.Text)
Else
MsgBox "数字を指定してください"
End If
Range("A1:D9").Select
Selection.Find(What:=n, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False).Activate
Cells(k, "H") = ActiveCell.Address
k = k + 1
adr = ActiveCell.Address
fadr = adr
End Sub
ーー
ユーザーフォームの第1ボタン用
Private Sub CommandButton1_Click()
Macro4
End Sub
ーー
第2ボタン用
Private Sub CommandButton2_Click()
Range("A1:D9").Select
Selection.FindNext(After:=Range(adr)).Activate
Cells(k, "H") = ActiveCell.Address
k = k + 1
adr = ActiveCell.Address
If adr = fadr Then
MsgBox "検索はこれ以上なし"
End If
End Sub
ーーー
一応2,3のデータでテストしてますが、エクセルVBAでも検索の
コードは難しいところと、私は思ってます。ですから上記に誤りがあり、適切に動かなければ、全体を無視してください。
本件質問の既出回答でも、自力で修正ができないようなのだが、それでは回答をもらっても無駄になります。
本件質問が質問者にとって、レベルの高過ぎる課題を選んんだと思います。
No.3
- 回答日時:
こんにちは。
#2の回答者です。
>試して見たけど、出来ませんでした。
>大変参考になりました。
ちょっと脱線しますが、なぜ、検索にUserFormで、そういう方法が必要なのか、ということが大事であって、それは、私のコードは、初歩的な内容ですが、コードの仕組みを読めなければ、参考にしなくてもよいと思います。
要点としては、
TextBox と、CommandButton の名称と
コードとしては、モジュール・レベルの変数によってセル位置の記憶をさせているか、TextBoxの変更があった場合に、TextBox イベントで、モジュールレベルの変数をクリアさせているか、というところです。
最初から別に作ったほうがわかりやすいと思います。
既存のものを変えるというのは、そのまま貼り付けるという方法ではできないと思います。理解がないと、既存のものは変更できないです。
私のコードの趣旨は、検索値が複数ある場合に、CommandButton を押すことによって、次のものを探すということです。
No.2
- 回答日時:
こんばんは。
数字以外は、検索しないように、IsNumeric(strTxt) をつけました。
CommandButtonで、検索するようにしました。
------------------------------------------------------
'Option Explicit
Dim NewAdr As String '←モジュールの一番上に
Private Sub CommandButton1_Click()
Dim c As Range
Dim strTxt As Variant
If NewAdr = "" Then NewAdr = "A1"
strTxt = TextBox1.Text
If strTxt <> "" And IsNumeric(strTxt) Then
Set c = Cells.Find(TextBox1.Text, Range(NewAdr), xlValues, 2, , , False, False)
If Not c Is Nothing Then
NewAdr = c.Address
c.Select
End If
End If
End Sub
Private Sub TextBox1_Change()
NewAdr = ""
End Sub
No.1
- 回答日時:
以前の質問をそのまま利用するとして、
以前の例では探したい文字列が "2" で固定されていましたよね。
これを、ユーザーフォームに配置したテキストボックスから取得するようにするだけですが...。
詳しい状況がわからないので自分ならこうします、というそれっぽい答えを書いてしまいますが、
FindStr = "2"
の部分を
FindStr = UserForm1.TextBox1.Text
のように、ユーザーフォーム内に配置したテキストボックスの Text プロパティを参照するように変更します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
年月日を持つテーブルから年月...
-
ACCESS2003 でクエリの抽出条件...
-
SQL*Loader
-
AccessにてExcelファイル名にパ...
-
ACCESS マクロで検索に...
-
Accessの検索フォームで。
-
アクセス マクロのメッセージ...
-
VBAからクエリのパラメータを設...
-
Access、検索用フォームでのあ...
-
アクセスである文字を含む検索2
-
Access2000で文字列中の半角ス...
-
アクセス2000でテキストボック...
-
データベースのINT型項目にNULL...
-
Access レポート印刷するときに...
-
passwordが入れられません・・・・
-
レコードを保存するコード ア...
-
フォームで入力しても反映されない
-
YahooのIDがロックされてしまい...
-
サブフォームに対してGoToRecor...
-
「フォームを作成できませんで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
年月日を持つテーブルから年月...
-
Accessのフォームで、空欄のレ...
-
検索フォームで空白を抽出したい
-
SQL*Loader
-
アクセスのフォームにカンマ区...
-
access 検索フォームで検索が...
-
VBAからクエリのパラメータを設...
-
アクセス マクロのメッセージ...
-
ACCESS2003 でクエリの抽出条件...
-
ACCESS マクロで検索に...
-
AccessにてExcelファイル名にパ...
-
パススルークエリの動的パラメ...
-
Access2000で文字列中の半角ス...
-
複数条件検索について
-
Accessで検索画面を作る方法
-
ACCESSのフォーム上で複数検索...
-
クエリの条件式に複数のコンボB...
-
AccessのデータをExcelテンプレ...
-
Accessの検索フォームで。
-
Access2007のサブフォームのReq...
おすすめ情報