プロが教えるわが家の防犯対策術!

エクセルの検索でブック内の検索をする機会が多く、毎回そのたびに検索オプションの検索場所→ブックを選択するのが面倒で困っています
マクロ録画を試したのですが録画した値を検索してしまい、特定のセルに入力した値をマクロでブック内検索する方法がわかりません
マクロで簡単に検索する方法、もしくはデフォルトで検索オプションの検索場所をシートからブックに変更する方法をご教授願います

質問者からの補足コメント

  • ご指摘がありましたので、補足させてください
    毎回というのは、エクセルを開くたびにということです
    マクロについては録画と再生ぐらいしか活用したことが
    なく、高望みで申し訳ありません

      補足日時:2018/02/14 06:15

A 回答 (5件)

わたしも検索をよく使うので、自作のツールを作って使っています。

そこそこ複雑なので、すべてを載せることはできませんが、簡易版をご紹介します。

適当なブックに、下記のVBAを張り付けて下さい。
次に、検索を行うブックを開きます。そこで適当なセルを右クリックすると「★★★検索★★★」のメニューが表示されるので、それを選択します。すると「検索と置換」のダイアログが表示されます。後は普通の操作です。
ちなみに、空白以外のセルを選択した状態で上記の操作を行うと、そのセルの値が「検索する文字」として使用されます。
とりあえず、検索場所を「ブック」にする努力はしていますが、状況によっては「ブック」にならない時があります。その際は、検索場所を指定するオプションを閉じた状態で使用してください。
飛び道具的なツールなので、動作原理が分かっていないと上手に使えないのですが、慣れると便利ですよ。

【標準モジュール】
Sub 初期設定()
Dim i As Long
Application.CommandBars("Cell").Reset
With Application.CommandBars("Cell").Controls.Add(Before:=1, Temporary:=True)
.Caption = "★★★検索★★★"
.OnAction = "Show検索"
End With
End Sub
Sub Show検索()
SendKeys ("^f%t%h{DOWN}%t%n")
SendKeys (Selection(1).Text)
SendKeys ("%i")
End Sub

【ThisWorkbook】
Private Sub Workbook_Deactivate()
Call 初期設定
End Sub
    • good
    • 0
この回答へのお礼

ママチャリさん
早速ご教授ありがとうございます
大変申し訳ありませんがわたしの環境ではこのVBRは構文エラーで
確認することができませんでした
せっかく教えていただいたのに申し訳ありません

お礼日時:2018/02/10 17:01

No. 1です。

Excel 2013で確認してみました。しかし、ちゃんと動作してしまったので原因が想像できません。VBA を書く場所とか、正しいですか?
それから、エラーメッセージは「構文エラー」ですか?もっと長いメッセージでていませんか?
    • good
    • 1
この回答へのお礼

ママチャリさんありがとうございます
おっしゃられる通り、私に問題があります
というのも、マクロは録画でしか活用したことがないのでVBAはさっぱりなんです
書き込んだ場所は、VBAを開いて挿入タブから標準モジュールを選択してコピペ
しました
書き方、使い方がわからないのでもうしばらくお付き合いしていただけると助かり
ます よろしくお願いします

お礼日時:2018/02/14 06:00

解答ではありません。



この題材は、もうかなり昔(2007以降)から知られているものです。

結論からすると、ご質問者さんが望まれているような設定はありません。

>デフォルトで検索オプションの検索場所をシートからブックに変更する方法デフォルトで検索オプションの検索場所をシートからブックに変更する方法

それを何年も前から探しているのですが、私は解決しません。もう少し具体的にいうと、「ダイアログの設定を任意に変更させること」ただし、それは、あくまでも私個人の実験的なものであって、実用性としては不要だと思っています。理由は次に書きます。

ご質問者さんに疑問な内容は、
>毎回そのたびに検索オプションの検索場所→ブックを選択するのが面倒で困っています

一回、ブックを選択して、検索が成功すれば、後は、同じようになりませんか?その設定は残っているはずなのです。毎回そのたび、ということはないはずです。

それで、海外のサイトのいくつかを読んでみて、私が期待しているような方法で解決している所はありませんでした。アングラな方法はあるとは思いますが、それは除外します。
アドインで新たに作る方法を提示している人がいましたが、それは論外です。

#1さんのコードは、構文エラーになるはずはないので、ご質問さんの設定の問題かとは思います。私も同様なものは作っていますが、私自身は、ショートカットキーでつなげる方法は、フォーカスが外れる可能性があるので、成功率は50%程度になってしまうのではないかと思います。ここが開いている間には成功は難しいかと思っています。
    • good
    • 0
この回答へのお礼

#4さん
おっしゃられる通り構文エラーは私の問題です
毎回~についても私の言葉足らずですみません
エクセルを開くたびに書き込めばよかったですね
続けて検索すればブックが維持されるのは承知しています
「設定ではない」ということだけでも教えていただけたので
大変感謝しています ありがとうございました

お礼日時:2018/02/14 06:09

》 検索オプションの検索場所→ブックを選択する


えッ?検索場所を選択できる?その Excel のバージョンは?
ちなみに、私のは 2013。その直前は 2002。
    • good
    • 0
この回答へのお礼

mike_gさんこんにちは。
わたしも同じ2013です
検索(双眼鏡のアイコン)を開いていオプションをクリックすると
検索場所をシートかブックか選択できます
わたしの悩みはデフォルトでシートになっているので毎回ブック
に変更するのが面倒で困っています

お礼日時:2018/02/11 11:32

No. 1です。

それは残念ですね。
後学のために、次のことを教えてください。
構文エラーになったは、どの行ですか。
ご使用のOSは?
Excelのバージョンは?
    • good
    • 1
この回答へのお礼

ママチャリさんありがとうございます
検索したいブック(VBAを張り付けたものとは別のファイル)を開き
適当なセルで右クリックし★★★検索★★★をクリックすると
構文エラーが出てしまいます
構文エラーは Sub Show検索() のようです
win10
エクセル2013

お礼日時:2018/02/11 11:21

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qエクセルで検索窓のようなものを作る

エクセルのシートにテキストボックスとコマンドボタンを配置してシート上のデータを検索することは可能でしょうか?今現在はB列に、複数の文字データが入力してあるので、オートフィルタのオプションから「を含む」で検索してます。
イメージとしては、オートフィルタのオプションから「を含む」を選んでから検索しなくても予めシートに用意してあるテキストボックスに検索したい文字を入れてボタンを押すと、オートフィルタで検索したときと同じような結果が得られるようにしたいと思ってます。

例)
 
 A    B    C    
--------------
1     血液型     

2      A

3      B

4      O

5      AB

上のような表があったとして、テキストボックスにAと入力してボタンを押すとB2とB5が表示されるようにしたと思ってます。いい方法があればご教示願います。

Aベストアンサー

シートにテキストボックス1個、コマンドボタン2個を配置します。
これは出来ますね。
コマンドボタン1個目は検索ボタン、2個目は解除ボタンです。

ツール→マクロ→Visual Basic Editorを選択して
シートに以下のコードを貼り付ける。

------------------ ここから下 ----------------------
Option Explicit

Private Sub CommandButton1_Click()
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="=*" & TextBox1.Value & "*", Operator:=xlAnd
End Sub

Private Sub CommandButton2_Click()
Selection.AutoFilter
End Sub
---------------- ここまで ------------------

エクセル2000です。
機能は「を含む」です。つまり文字列のどこにでもテキストボックスに入力した文字が含む行を表示します。
ではでは

シートにテキストボックス1個、コマンドボタン2個を配置します。
これは出来ますね。
コマンドボタン1個目は検索ボタン、2個目は解除ボタンです。

ツール→マクロ→Visual Basic Editorを選択して
シートに以下のコードを貼り付ける。

------------------ ここから下 ----------------------
Option Explicit

Private Sub CommandButton1_Click()
Rows("1:1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:="=*" & TextBox1.Value & "*", Operator:=xlAn...続きを読む

Q【Excel】検索で、対象を常に【値】にするにはどうするば良いでしょうか?

こんにちは、みなさん!!

【質問】
エクセルで検索機能を良く使います。その時、対象を値にして検索をかけていますが、最初から、対象を値にしておく方法はありますか?
Versionは2002、2003です。

ご存知の方いらっしゃいましたらよろしくお願いします。

Aベストアンサー

Excelの既定の設定自体を変更する方法はありません。
個人利用ベースの話なら、Excel起動と同時に開く「個人用マクロブック」personal.xlsの
ThisWorkbookモジュールに以下のマクロを置いておけば良いです。
Private Sub Workbook_Open()
  Cells.Find "", , xlValues
End Sub
http://www.officepro.jp/excelmacro/rec/index5.html

Qエクセル_検索機能で、検索場所と検索対象を固定したい

エクセルの検索機能を使用しようと開くと、常に「検索場所:シート」「検索対象:数式」となっています。
あるデータファイルのみ、検索機能を開くと、常に「検索場所:ブック」「検索対象:値」にしたいのです。
ネットで色々調べた結果、以下の書き方で、検索ダイアログボックスが開くことがわかったのですが、
「検索場所」と「検索対象」の指示の仕方がわからないのです。

どうすれば、良いでしょうか。どうぞよろしくお願い致します。

Sub 検索()
Application.Dialogs(xlDialogFormulaFind).Show
End Sub

Aベストアンサー

#1です。
あれ。そんなところにチェックが入りますか。

Sub 検索()
Cells.Find "", , xlValues, , , , , False
CommandBars.FindControl(ID:=1849).Execute
Application.SendKeys "%T{TAB 2}{DOWN 2}%D{TAB}"
Application.SendKeys "%T{TAB 2}{DOWN 2}%D{TAB}"
End Sub

これでどうですか?

QEXCEL 検索時の設定

EXCEL2003を使用しています。
検索する時、オプションの『セル内容が完全に同一であるものを検索する』がオンになってたりオフになってたりで、わずらわしさを感じています。デフォルトでオフの設定にする方法がありましたら教えて下さい。

Aベストアンサー

こんばんは。

>検索文字列はセルの文字列と一致しているものではなく

本来、こういう無料掲示板では、ここまで長く伸ばして、後だしの要求はしないほうがよいです。後で、内容を変えられると、書いてきたことが無意味になってしまいます。ここの掲示板は、また、質問者のリピーターも2割程度しかありません。

マクロは、勢いで書くものですから、間をあけられるのが一番つらいです。一旦、締めて、改めて質問されるほうが、まだ書きやすいです。(気が乗ればでずが)

私は、ある程度マクロが分かるつもりの人には、回答はしないようにはしているのですが、今回、思うことがあったので書きました。それは、DataObject オブジェクトでエラーが発生する原因を防ぐために考えてみました。「ある程度分かるつもりの人」が、一番、トラブルや評価がされないことが多いです。

今回、二度目のご質問になっていると思いますが、今後質問される時は、回答者を振り回さないようにしてください。

>少しこちらの作業を説明させて頂くと、検索文字列はセルの文字列と一致しているものではなく、他シートや他ブックのセル内に数行にわたって入力された文字列の中の数文字で、毎回探す語句は違います。

もし、ご自身で直せなければ、こういうことは、言わなければ分かりません。私の#11で書いたコードの似たようなものは、インターネット掲示板で有名な方も同様のコードを書いています。ただし、私は、誰のものを真似たものでもなく、オリジナルの工夫をしています。その程度は、ほんの少し変えれば済む問題です。

#7のコードのExcel 2003 用のものですから、それ以外を書き換えるつもりはありません。ただ、自分の中では、久々の会心の作だと思っていますが、意味が分からないとか、動かないとか言われても、何も言うことがありません。


二つのシートをまたいで検索をすると、エラーが発生することがありますが、改めて検索すれば、大丈夫です。

'-------------------------------------------------------

''Option Explicit
Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Long) As Long
Private Const CF_TEXT As Long = 1

  Dim FirstAdd As String
  Dim strText As Variant
  Dim c As Range

Sub TestFind1()
  Dim objData As Object
  Dim myURange As Range
  Dim lastRng As Range
  Dim numFlg As Integer
  On Error GoTo ErrHandler
  Set myURange = ActiveSheet.UsedRange
  
   With myURange
     Set lastRng = .Cells(.Cells.Count)
   End With
  
  If c Is Nothing Then
    If IsClipboardFormatAvailable(CF_TEXT) <> 0 Then
      With GetObject("new:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}")
        .GetFromClipboard
        strText = .GetText
      End With
    End If
    'バイナリコードの除去
    strText = WorksheetFunction.Clean(strText)
    If IsNumeric(strText) Then '数値の場合(数字全部)
      numFlg = 1
    Else '文字の場合(文字の一部)
      numFlg = 2
    End If
    '全半角のスペースの除去
    '   Do
    '    strText = Replace(strText, Space(1), "", , , 1)
    '   Loop Until InStr(1, strText, Space(1), 1) = 0
    
    Set c = myURange.Find( _
    What:=strText, _
    After:=lastRng, _
    LookIn:=xlValues, _
    LookAt:=numFlg, _
    MatchCase:=False, _
    SearchOrder:=xlByRows, _
    MatchByte:=False)
    
    If Not c Is Nothing Then
      FirstAdd = c.Address
      c.Select
    Else
      MsgBox strText & "は見つかりませんでした。", 48
      Set c = Nothing
    End If
  
  Else
    Set c = myURange.FindNext(c)
    If FirstAdd = c.Address Then
      If MsgBox("シートの最後まで検索しました。" & vbCrLf _
        & "最初に戻りますが、検索しますか?", 64 + vbYesNo) = vbNo Then
        strText = ""
        Set c = Nothing
        Set lastRng = Nothing
      Else
        c.Select
      End If
    End If
    If Not c Is Nothing Then
      c.Select
    End If
  End If
ErrHandler:
  If Err.Number <> 0 Then
    MsgBox Err.Number & " : " & Err.Description
    Set lastRng = Nothing
    Set c = Nothing
  End If
  Set myURange = Nothing
End Sub

こんばんは。

>検索文字列はセルの文字列と一致しているものではなく

本来、こういう無料掲示板では、ここまで長く伸ばして、後だしの要求はしないほうがよいです。後で、内容を変えられると、書いてきたことが無意味になってしまいます。ここの掲示板は、また、質問者のリピーターも2割程度しかありません。

マクロは、勢いで書くものですから、間をあけられるのが一番つらいです。一旦、締めて、改めて質問されるほうが、まだ書きやすいです。(気が乗ればでずが)

私は、ある程度マクロが分かるつも...続きを読む

QExcelのワークシート上に検索窓とボタンを作りたい

Excelのワークシート上に検索窓とボタンを作ろうとしています。
コントロールツールボックスからテキストボックスとコマンドボタンを1つずつ配置しました。ボタンを押すと検索用マクロが動作してテキストボックスに入力した文字を別のシート上から検索する仕組みです。計画どおりの動作をするようになったのですが、使い勝手についていくつか不満があるので解消したいのです。

1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。

2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。

3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。

自分でも色々調べてみたのですが、どうにも分かりません。よろしくお願いします。

Aベストアンサー

こんにちは。
こういうのはユーザーフォームで作ったほうが簡単なんですが。

>1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。

これはシートのActivateイベントで、TextBox1.Activateするだけです。

>2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。

テキストボックスのKeyDownイベントで押されたキーを取得できる。
KeyDownイベントの引数KeyCodeには押されたキーコードが入りますからこれが13(=vbKeyReturn)だったら検索マクロを実行すれいいです。

>3.カーソルがテキストボックス内にある状態でTabキーを押すと、コマンドボタンにフォーカスが移るようにしたい。

同様にKeyDownイベントでTabが押されたことを取得して、コマンドボタンをアクティブにします。Tabキーのコードは9(=vbKeyTab)

Private Sub CommandButton1_Click()
検索マクロ
End Sub

Private Sub CommandButton1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then 検索マクロ
End Sub


Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyReturn Then 検索マクロ
If KeyCode = vbKeyTab Then Me.CommandButton1.Activate
End Sub

Private Sub Worksheet_Activate()
Me.TextBox1.Activate
End Sub

こんにちは。
こういうのはユーザーフォームで作ったほうが簡単なんですが。

>1.検索窓のあるシートを開いたとき、カーソルがテキストボックス内にある状態にしたい。

これはシートのActivateイベントで、TextBox1.Activateするだけです。

>2.カーソルがテキストボックス内にある状態でEnterキーを押すと、検索用マクロが動作するようにしたい。

テキストボックスのKeyDownイベントで押されたキーを取得できる。
KeyDownイベントの引数KeyCodeには押されたキーコードが入りますからこれが13(=vb...続きを読む

QEXCELマクロで全シート対象の検索マクロを教えて

EXCELマクロで全シート対象の検索マクロを教えてください。
アプリケーションダウンロードタイプでも自作マクロの
どちらでもよいです。

Aベストアンサー

無力のため、いつもFind、FindNextには苦労するのですが、思い切ってあげてみます。VBAの経験がおありなら、欠点は修正してもらえるかもと思って。
標準モジュールに
Sub test01()
s = InputBox("検索文字列=")
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
Set x = sh.Cells.Find(what:=s)
If x Is Nothing Then GoTo p1
MsgBox sh.Name & x.Address
b = sh.Name & x.Address
sh.Activate
x.Activate
'---
Do
Set y = sh.Cells.FindNext(after:=ActiveCell)
If y Is Nothing Then GoTo p1
If sh.Name & y.Address = b Then GoTo p1
MsgBox sh.Name & y.Address
y.Activate
Loop
p1:
Next
End Sub
シート名タブの左側のシートから探していきます。
上記はMggBoxで表示にしてますが、特別セルにセルアドレス値を出すなど適当に修正してください。
少数例でテストしてますが、十分テストしてください。

無力のため、いつもFind、FindNextには苦労するのですが、思い切ってあげてみます。VBAの経験がおありなら、欠点は修正してもらえるかもと思って。
標準モジュールに
Sub test01()
s = InputBox("検索文字列=")
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
Set x = sh.Cells.Find(what:=s)
If x Is Nothing Then GoTo p1
MsgBox sh.Name & x.Address
b = sh.Name & x.Address
sh.Activate
x.Activate
'---
Do
Set y = sh.Cells.FindNext(after:=ActiveCell)
If y Is Nothing T...続きを読む

QExcelでの検索について

検索のウインドウですが
常に表示しておきたいのですが、最前面に出てしまうので邪魔な時が多いです。
クリップボードのように右端に表示させるか
ツールバーに表示させるようにする方法はありますでしょうか??

住所録と予約の注文をエクセルで管理しておりまして
固定電話に着信があった時にナンバーディスプレイで電話番号を確認し、電話番号の下4桁を検索してから電話を受けるとスムーズに注文がとりやすいのです。

邪魔にならなくてすぐに使えるように検索ウインドウを表示しておきたいのですが…

Aベストアンサー

こんばんは。

マクロで作ってみました。

>クリップボードのように右端に表示させるか
>ツールバーに表示させるようにする方法はありますでしょうか??

こんな感じでしょうか?
一通りの検索機能はあります。次の検索も可能です。

最初だけ、Auto_Open を実行してください。後は、設定したブックを開けば、検索ボックスが現れます。そのブックを閉じると、検索ボックスはなくなってしまいます。

設定されるまで、少し、時間が掛かります。

'標準モジュールに入れてお使いください。

Private c As Range
Private Fadd As String
Private Fdata As String

Sub Auto_Open()
 Call CommandMenu_Add
End Sub

Sub Auto_Close()
Dim myCBCtrl As CommandBarControl
 On Error Resume Next
 With Application.CommandBars("WorkSheet Menu Bar")
   .Controls("検索ツール(&K)").Delete
   .Controls("次検索...").Delete
 End With
 On Error GoTo 0
End Sub
'-----------------------------------
'実行メニュー
'-----------------------------------
Sub CommandMenu_Add()
Dim myCB As CommandBar
Dim cnt As Integer
Dim myCBCtrl As CommandBarControl
 On Error Resume Next
 '二重設定の回避
 With Application.CommandBars("WorkSheet Menu Bar")
   .Controls("検索ツール(&K)").Delete
   .Controls("次検索...").Delete
 End With
 On Error GoTo 0
 '
 Set myCB = Application.CommandBars("WorkSheet Menu Bar")
 cnt = myCB.Controls.Count
 With myCB.Controls.Add(Type:=msoControlEdit, Before:=cnt + 1, Temporary:=True)
  .Caption = "検索ツール(&K)"
  .TooltipText = "現在のシートの文字を検索します"
  .OnAction = "MyFind"
 End With
 With myCB.Controls.Add(Type:=msoControlButton, Before:=cnt + 2, Temporary:=True)
  .Caption = "次検索..."
  .OnAction = "myNextFind"
  .TooltipText = "次検索..."
  .Style = msoButtonCaption
 End With
Set myCBCtrl = Nothing
End Sub
Private Sub myFind()
Dim myFind As String
 myFind = Application.CommandBars("WorkSheet Menu Bar").Controls("検索ツール(&K)").Text
 Set c = Nothing
 Fadd = ""
 Fdata =""
 Set c = ActiveSheet.Cells.Find( _
 What:=myFind, _
 LookIn:=xlValues, _
 LookAt:=xlPart, _
 SearchOrder:=xlByRows, _
 SearchDirection:=xlNext, _
 MatchByte:=False)
      If Not c Is Nothing Then
       Fadd = c.Address
       Fdata = ActiveWorkbook.Name & "!" & ActiveSheet.Name
       c.Select
      Else
       Beep
     End If
End Sub
Private Sub myNextFind()
'次の検索
   On Error GoTo ErrHandler
   If c Is Nothing Then Exit Sub
   If Fdata <> ActiveWorkbook.Name & "!" & ActiveSheet.Name Then
     Fadd = c.Address
     Fdata = ActiveWorkbook.Name & "!" & ActiveSheet.Name
   End If
   Set c = Cells.FindNext(c)
   c.Select
   If c.Address = Fadd Then
     Beep
   End If
   Exit Sub
ErrHandler:
 MsgBox "検索できませんので、新たに、検索ボックスから実行してください。", vbInformation
End Sub

こんばんは。

マクロで作ってみました。

>クリップボードのように右端に表示させるか
>ツールバーに表示させるようにする方法はありますでしょうか??

こんな感じでしょうか?
一通りの検索機能はあります。次の検索も可能です。

最初だけ、Auto_Open を実行してください。後は、設定したブックを開けば、検索ボックスが現れます。そのブックを閉じると、検索ボックスはなくなってしまいます。

設定されるまで、少し、時間が掛かります。

'標準モジュールに入れてお使いください。

Privat...続きを読む

Q「検索と置換」ダイアログの初期値を変えたい。

access97 or 2000を使って得意先の情報を管理しています。
フォーム上からボタンを押すと、「検索と置換」ダイアログが開くようにしているのですが、このダイアログの「検索条件」の欄は「フィールド全体」が初期値になっているのですが、「フィールドの先頭」を初期値に変更することは可能でしょうか?

Aベストアンサー

#1,#2です。
回答がおそくなりまして、申し訳ありません。

フォームに、以下のようなコードを書いてみてください。
ただし、コントロールの名前は次のように仮定しています。
 検索用コマンドボタン・・・[コマンド1]
 検索文字列を入力するテキストボックス・・・[txtWhatFind]
 検索対象とするフィールドとリンクしたテキストボックス・・・[txtData1]



Private Sub コマンド1_Click()

Dim strWhatFind As String '検索対象文字列を格納する変数

DoCmd.GoToControl "txtWhatFind"

strWhatFind = txtWhatFind.Text '検索文字列を取得
If strWhatFind = "" Then Exit Sub'検索対象が入力されていないときは、ここで終了

DoCmd.GoToControl "txtData1"
DoCmd.FindRecord strWhatFind, acStart 'acStartが、「フィールドの先頭」の指定と同じことになります。

end sub

※動作検証していません。万一動かなかったら補足してください。

#1,#2です。
回答がおそくなりまして、申し訳ありません。

フォームに、以下のようなコードを書いてみてください。
ただし、コントロールの名前は次のように仮定しています。
 検索用コマンドボタン・・・[コマンド1]
 検索文字列を入力するテキストボックス・・・[txtWhatFind]
 検索対象とするフィールドとリンクしたテキストボックス・・・[txtData1]



Private Sub コマンド1_Click()

Dim strWhatFind As String '検索対象文字列を格納する変数

DoCmd.GoToControl "txtWhatFind"

s...続きを読む

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

QExcel内での検索結果をシートに出力したい

こんばんは。いつも大変お世話になっています。

Excel2003にて、あるシートの中から
対象の文字列があるかどうか検索をしました。
検索時に「すべて検索」にすると、
全結果が表示されますよね。
その内容をExcelのシートに出力することは
できないでしょうか・・・。

どのセルの位置にその対象文字列がいてということを
報告書として作成したいのです。

イメージがうまくかけませんが、どなたかよい方法を
ご存知でしたら教えてください。
何か記述で足りないものがあれば、すぐに記述いたします。

Aベストアンサー

丸投げですか(^^;
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

勉強になりませんので解説や再修正はしません。もし修正が必要ならご自身でお願いします。

Sub Macro1()
Dim ret
Dim r As Range
Dim adr As String
Dim cnt As Long
Dim psw As Boolean
Dim mySht, adSht, ws As Worksheet
  Set mySht = ActiveSheet
  ret = Application.InputBox("検索文字列を入力してください")
  If TypeName(ret) <> "Boolean" Then
    With mySht.Cells
      Set r = .Find(ret, LookIn:=xlValues, lookat:=xlPart)
      If Not r Is Nothing Then
        adr = r.Address
        cnt = 1
        For Each ws In Worksheets
          If ws.Name = "検索結果" & ret Then
            psw = True
            Exit For
          End If
        Next ws
        If psw Then
          Set adSht = ws
          adSht.Cells.ClearContents
        Else
          Set adSht = Worksheets.Add
          adSht.Name = "検索結果" & ret
        End If
        adSht.Cells(cnt, 1).Value = r.Value
        adSht.Cells(cnt, 2).Value = adr
        Do
          Set r = .FindNext(r)
          If r.Address = adr Then
            Exit Do
          Else
            cnt = cnt + 1
            adSht.Cells(cnt, 1).Value = r.Value
            adSht.Cells(cnt, 2).Value = r.Address
          End If
        Loop
      End If
    End With
  End If
  mySht.Activate
End Sub

丸投げですか(^^;
以下のマクロをALT+F11でVBE画面を開き、左上のVBA Projectでシート名を右クリックし「挿入」→「標準モジュール」で表示される画面に貼り付けて下さい。マクロの実行はワークシート画面に戻ってALT+F8でマクロ一覧を開き、マクロ名を選択して「実行」ボタンです。

勉強になりませんので解説や再修正はしません。もし修正が必要ならご自身でお願いします。

Sub Macro1()
Dim ret
Dim r As Range
Dim adr As String
Dim cnt As Long
Dim psw As Boolean
Dim mySht, adSht, ws As Wo...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング