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

Excel2000のセルデータ(シート内データ)検索ウィンドウに関しての質問です。VBAではありません。

編集メニュー → 検索 または Ctrl+F で表示されるデータ検索ウィンドウを開くと、検索条件に初めからデフォルトで、「対象」=数式、「半角と全角を区別する」にチェックが入っています。
この検索条件のデフォルト設定を変更する方法を教えて下さい。

Bookを開いたままなら、再度検索ウィンドウを開いても前に設定した条件が保持されますが、bookを閉じたりExcelを終了すると、元の条件に戻ってしまいます。これを元に戻さず、ずっと保持させる方法を教えて下さい。

よろしくお願いします。

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

A 回答 (2件)

No.1の回答者です。


私個人の考え方として、具体的なVBAのコードを単純に貼り付けて提示するというのは、あまりしたくありません。申し訳ありません。
そこで、考え方の方向性だけを少し。

(1)特定のオプションを変更するVBAのコードというのは、「マクロの記録」機能を活用なさることで確認できると思います。

(2)そして、(1)で調べてオプションを変更するように動くコードを、ブックファイルを開いたときに自動的に実行するように、「イベントプロシージャ」として記述します。

(3)特定のファイルを開いたときに、オプションを変えたいということであれば、そのブックのイベントプロシージャとして記述すればいいですし、もし、Excelを起動した際に、常に希望のオプションが既定値になっているようにしたいということでしたら、新規ブックにそのイベントプロシージャを記述して保存し、そのブックを「XLSTART」フォルダに収録します。すると、Excel起動時にそのブックが開かれ、そのブックに記述したOpenイベントプロシージャが起動されて、目的が達成されるかと思います。

ぜひチャレンジしてみてください。
    • good
    • 0
この回答へのお礼

ご回答まことに有り難うございます。

> 私個人の考え方として、具体的なVBAのコードを単純に貼り付けて提示するというのは、あまりしたくありません。申し訳ありません。
> そこで、考え方の方向性だけを少し。

同感です。人のソースを見ると言うのは、結局は fmajinさんが書かれた (2),(3) を探り当てるような作業な訳ですから、最初からそれを教えて頂いたほうが有り難いと思いますし、近道にもなると思います。
(1)の方法は私も行っていましたが、今回の質問の件で使えるとは全く気が付きませんでした。

これだけ教えて頂ければ何とかなりそうですし、ならなくてもまた進展した質問ができます。
有り難うございました。

お礼日時:2008/06/13 19:41

[検索と置換]ダイアログに限らず、ほとんどのダイアログで、その既定値を好みのオプションに変更しておくということはできないと思います。



どうしても実現したいということであれば、逆にVBAを組む必要が出てくると思います。

この回答への補足

早速のご回答、まことに有り難うございます。
VBAを組めば可能なのであれば、参考までにそのVBAを教えて頂けないでしょうか? 使用する関数名とかプロパティ名だけで宜しいです。

質問を掲載したばかりなこともあり、もう少し皆さんの回答も待ってみます。有り難うございました。

補足日時:2008/06/10 06:03
    • good
    • 0

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

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

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

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

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

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割程度しかありません。

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

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

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

QVLOOKUPによる他シートの値参照

初心者で以下の処理を行うコーディングの方法が分りません。
いろいろと他の質問、サイトを調べましたが、解決できませんでしたので、ご指導頂ければ有り難いです。

(1)"Sheet1"に下記例の通り、2列にデータが並んでいる。
 左列には商品、右列にはその単価がセットされている。

(例)

商品1  \11
商品2  \22
商品3  \33


(2)別シート"Sheet2"の左列には、商品が"sheet1"とは
異なる順序で並んでいる。また同一商品が複数存在することもある。
この商品の右列にそれぞれの単価をセットしたい。

商品3  (Sheet1を参照して値をセット)
商品7  (Sheet1を参照して値をセット)
商品1  (Sheet1を参照して値をセット)


、って感じです。EXCEL関数の"VLOOKUP"を使おうと思っているのですが、どうも思った通りの結果がでません。
商品のデータ数は当然変動するのでVLOOKUPの参照セルに変数を使おうと思っているのですが、
その方法がまずいのでしょうか?

初心者で以下の処理を行うコーディングの方法が分りません。
いろいろと他の質問、サイトを調べましたが、解決できませんでしたので、ご指導頂ければ有り難いです。

(1)"Sheet1"に下記例の通り、2列にデータが並んでいる。
 左列には商品、右列にはその単価がセットされている。

(例)

商品1  \11
商品2  \22
商品3  \33


(2)別シート"Sheet2"の左列には、商品が"sheet1"とは
異なる順序で並んでいる。また同一商品が複数存在することもある。
この商品の右列にそれぞれの単価をセ...続きを読む

Aベストアンサー

#1です。

VBAで?
Sheet2 にVLOOKUP式を入れたいなら可変させるのは入れたい範囲だけで良いと思います。

Sub Test()
Dim r As Range
 With Worksheets("Sheet2")
  .Columns(2).ClearContents
  Set r = Range("A65536").End(xlUp).Offset(0, 1)
  .Range("B1", r) = "=IF(ISERROR(VLOOKUP(A1,Sheet1!$A$2:$B$4,2,0))" & _
              ",""""," & "VLOOKUP(A1,Sheet1!$A$2:$B$4,2,0))"
 End With
End Sub

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


人気Q&Aランキング