出産前後の痔にはご注意!

EXCELで、[Ctrl]+Fを押すと、[検索]の画面がでてきます。
”[Ctrl]+Fを押して、[検索]の画面を出力させる”ということを
VBAで書くことはできるのでしょうか?

現在EXCEL2000を使っています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

ダイアログを表示させたいということであれば


'置き換え
Application.Dialogs(xlDialogFormulaReplace).Show "検索文字", "置き換え文字"

'検索
Application.Dialogs(xlDialogFormulaFind).Show "検索文字"

1番さんの方法はダイアログを表示させずにコード上で直接検索させる方法です。
    • good
    • 0
この回答へのお礼

大変助かりました。
どうもありがとうございました。悩みが解決しました。

お礼日時:2003/11/05 15:28

Range.Findメソッドを使います。


( マクロ記録で確認できます )
    • good
    • 0
この回答へのお礼

アドバイスどうもありがとうございました。

お礼日時:2003/11/05 15:29

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

QEXCEL VBA でCTRL+Fのダイアログからすべての検索で一覧表

EXCEL VBA でCTRL+Fのダイアログからすべての検索で一覧表示
Application.Dialogs(xlDialogFormulaReplace).Show "置き換え文字", "置き換え文字"
までは、こちらのサイトで発見! すべての検索ボタンから一覧表示が可能ですか?

Aベストアンサー

Excel2002以降、[検索と置換]ダイアログは仕様が変更されました。
このデフォルトの[検索と置換]ダイアログと
Dialogs(xlDialogFormulaFind)は別物なのです。
しかも、Application.Dialogs(xlDialogFormulaFind).Showで
[検索]ダイアログを呼び出してしまうと
デフォルトの[検索と置換]ダイアログが手動で呼び出せなくなるという
バグつきです。
今のところデフォルトの[検索と置換]ダイアログをマクロで呼び出す設定が
ありません。

Excel君の機嫌が良いときは
Sub try()
  'アクティブセルに検索文字を入力しておいて
  ActiveCell.Copy
  SendKeys "^f^v%i"
End Sub
これでうまくいくかもしれませんが
キーストロークを送るだけなのでどうにも不安定です。

いっその事自分でUserFormを作って処理したほうが近道かもしれません。
ただ私だったらマクロを作るよりも
[Ctrl][c][f][v]、[Alt][i]って手操作でやるかも。

Excel2002以降、[検索と置換]ダイアログは仕様が変更されました。
このデフォルトの[検索と置換]ダイアログと
Dialogs(xlDialogFormulaFind)は別物なのです。
しかも、Application.Dialogs(xlDialogFormulaFind).Showで
[検索]ダイアログを呼び出してしまうと
デフォルトの[検索と置換]ダイアログが手動で呼び出せなくなるという
バグつきです。
今のところデフォルトの[検索と置換]ダイアログをマクロで呼び出す設定が
ありません。

Excel君の機嫌が良いときは
Sub try()
  'アクティブセルに検索文字を入力し...続きを読む

Q検索はマクロで記録できないのでしょうか?

エクセル2007です。

マクロの記録ボタンを押して、CTRL+Fで検索を立ち上げて、文字を検索して、マクロを終了したら、
Sub Macro1()
' Macro1 Macro
End Sub
としか記録されてませんでした。

検索はマクロで記録できないのでしょうか?
ご回答よろしくお願いします。

Aベストアンサー

下記ページを参考にされればいかがでしょうか。
≪参考≫
すべて検索する
http://officetanaka.net/excel/vba/tips/tips123.htm

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 VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

Q[初心者です]VBAで指定列からAを検索し、発見したら隣のセルに値0を入れるマクロ。

VBAで指定列からAを検索し、発見したら隣のセルに0を入れるマクロを組みたいのですが、組み方がVBA初心者の為わかりません。
(例)
L列に、A、B、C、D、E、Fとランダムに文字が入っていて、
文字Aを検索し、発見したら隣のI列に値0を入れるというマクロです。

Sub Search()
Dim A As String
Set A = Worksheets("Sheet1").Cells.Find("A")
If A Is Nothing Then
ActiveCell.Offset(0, 1).Value = 0

End If
End Sub
と過去の質問で考えてみたのですが、Aがあった時、、、、
とコードが書けないです。
大変困っているので、ご教授頂けないでしょうか?
出来れば、そのままマクロに出来るコードを教えて頂けないでしょうか?
宜しくお願い致します。

Aベストアンサー

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表格が、この「Find」 です。

>Set A = Worksheets("Sheet1").Cells.Find("A")

>過去の質問で考えてみたのです

どうも、Find メソッドは、あるレベル以下の人は、省略する傾向があるようです。何が大事で、何が大事でないかというのは、やってみなければ分かりませんが、検索語だけを入れる書き方は、実務では、あまりしないほうがよいと思います。

だいたい、以下のTestFind2 ぐらいまでに、省略は、とどめたほうがよいです。

それは、Find は、必ずしも自分が思っているデフォルトとは違うことがあるので、「明示的(意図的に)」にオプションは入れたほうがよいです。
例えば、大文字小文字の違いを付けるなら、MatchCase:=True, 数式まで探すなら、LookIn:=xlFormulas

なお、Find メソッドは、5年経っても、たぶん完全に覚えられません。面倒なコードのひとつです。ですが、これはパターンが決まっているので、ひとつパターンが決まったら、それに当てはめればよいだけです。

#3さんで示されているMougのサンプルコードと似てはいるのですが、Mougのサンプルコードでは、Verionによって、失敗することがあります。

'--------------------------------------
'記録マクロをそのまま使う方法
Sub TestFind1()
Dim c As Range
 Set c = Columns("L:L").Find(What:="A", _
           After:=ActiveCell, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           SearchOrder:=xlByRows, _
           SearchDirection:=xlNext, _
           MatchCase:=False, _
           MatchByte:=False, _
           SearchFormat:=False)
 c.Offset(0, 1).Value = 0
End Sub
'--------------------------------------
'TestFind1 をアレンジしてみる
Sub TestFind2()
Dim c As Range
'検索語
Const MYTXT As String = "A"
 Set c = ActiveSheet.Columns("L:L").Find(What:=MYTXT, _
           LookIn:=xlValues, _
           LookAt:=xlPart, _
           MatchCase:=False)
 If Not c Is Nothing Then
    c.Offset(0, 1).Value = 0
 End If
End Sub

'---------------------------------------
'複数ある場合(パターンを使った方法)
'---------------------------------------
Sub TestFind3()
  Dim c As Range
  Dim FirstAdd As String
  Const MYTXT As String = "A"
  Set c = ActiveSheet.Columns("L:L").Find( _
    What:=MYTXT, _
    LookIn:=xlValues, _
    LookAt:=xlPart, _
    MatchCase:=False)
  
  If Not c Is Nothing Then
    FirstAdd = c.Address
    Do
      c.Offset(, 1).Value = 0
      Set c = ActiveSheet.Columns("L:L").FindNext(c)
      If c.Address = FirstAdd Then Exit Sub
    Loop Until c Is Nothing
  End If
End Sub

こんばんは。

#3さんのおっしゃっていることも、もっともなのですが、気になる点がありましたので、自分のことを踏まえて、書かせていただきます。

いずれ、また、同じようなケースが出会うと思います。こんな原則を考えてみたらどうでしょうか?それは、私も自身も同じなのですが、ワークシートのコマンドで行われるものは、記録マクロから作ってみるということです。他にも、「統合」とか、「置換」とか「オートフィルタ」「フィルタオプション」とかは、みんなパターンが決まっています。
その中の代表...続きを読む

Qユーザーフォームを表示中にシートの操作をさせるには

ユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。
セルへの入力、画面のスクロールなどは、ユーザーフォームからマクロを実行させたり、.hideでユーザーフォームを一時的に隠すなどすればいいのでしょうが、そういう手段をとらないでユーザーフォームを表示中にシートの操作をさせる事はできるのでしょうか。

Aベストアンサー

ユーザフォームの
ShowModalプロパティを
falseにすればよいかと。

QEXCEL VBA で特定の文字に色をつけるマクロを書きたいのですが

コードはどのように書けばよいのでしょうか?

(1)そのようなコードを持っていらっしゃったらいただけないでしょうか?

(2)または、参考になるページがありましたら教えていただけないでしょうか?

現在勉強を始めたところですが、よろしくお願いいたします。

Aベストアンサー

セルの文字列の中に,
たとえば
aaaeeessseee
ssddd
dfg
weeeff
のセルの中の
eeeに赤色文字にする。
セル範囲Range("A1:C6")を対象にしてます。
ーーーー
Sub test01()
Dim cl As Range
For Each cl In Range("a1:c6")
r = InStr(cl, "eee")
If r <> 0 Then
cl.Characters(r, 3).Font.Color = vbRed
End If
Next
End Sub

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...続きを読む

QVBAで別エクセルファイルから指定エクセルファイルにシートをコピー

Office2003のエクセルでVBAを勉強しております。

そこで、VBAで別エクセルファイルからあるシートを指定エクセルファイルへ丸まるコピーしたい場合にはどのようにすればよいのでしょうか?

Aベストアンサー

Sheets("A").Copy Before:=Workbooks("Book1").Sheets(1)


>Office2003のエクセルでVBAを勉強しております。

方法が解らなければ、記録マクロを確認するのが一番です。
動作が理解出来たら、コードの最適化を行ってください。


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

人気Q&Aランキング