• ベストアンサー

EXCEL 検索時の設定

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

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.12

こんばんは。 >検索文字列はセルの文字列と一致しているものではなく 本来、こういう無料掲示板では、ここまで長く伸ばして、後だしの要求はしないほうがよいです。後で、内容を変えられると、書いてきたことが無意味になってしまいます。ここの掲示板は、また、質問者のリピーターも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

ufufuehehe
質問者

補足

有難うございます。今回のVBAは無事動き、もしこんなVBAがあったらとても助かると思っていたものです。感謝いたします。 間を空けてしまった事、誠に申し訳ございません。回答者様を振り回すつもりは毛頭なかったのですが、説明不足のため、結果的にそうなってしまった事をお詫び致します。 正直言って、話がどんどん難しくなってしまったのと、残業続きで疲れてしまった事、私の第一希望は『検索オプションの「セル内容が完全に同一であるものを検索する」をデフォルトでオフにする事』なので、PDFMAKER.xlaの場所を移動する事で解決するかもという思い、折角作って頂いたのにコードが上手く動かない事をどうお伝えすれば良いのかと悩んでいました。それと、イメージしていたのは記録マクロで取得できる3行程のコードの検索文字列に当たる部分に「クリップボードの内容」を代入するという単純なものだったので(実行するたびに次の検索対象セルに次々飛んでいき、最後に『シートの最後まで検索しました。最初に戻って検索を続けますか?』というMsgBoxが出てループ…というのは手作業で検索した時の動作なので、そんなに難しいと思わなかった)それじゃ駄目なのかな…と模索して、先ほど漸くそれっぽいものが出来ました。とはいえネットで探し当てたコードを代入しただけなので、エラーに対する処理がいまいちですが。でもお陰で、#10でおっしゃっていた事が漸く理解できました。お恥ずかしいですが、セルコピーで検索できるという事を今回初めて知りました。なのでなぜRangeオブジェクトのコピーというコードが出てくるのか理解できなかったのですが、エラー時の処理の事まで考えて下さったのですね。コピー対象が何であれ、取り出すのはテキストなのだから…と考えていたのですが、ホームページ等から文字列をコピーする事もありえるため、やはり私の拙いマクロでは無理があるようです。作って頂いたコードを使わせて頂く事にします。重ねて、有難うございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (11)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.11

こんにちは。 #9のxls88さんが、継続的に教えてくださるようには書かれてはいますので、一旦は、こちらのコードの掲示は遠慮をさせていただきましたが、取り組むだけの時間としてのタイムリミットを過ぎたような気がしますので、DataObject 型のコードを掲示しておきます。 検索文字をセルの上に置けば、それをコピーして検索します。この場合のポイントとしては、不要なコードの除去です。なお、私は、聞かれればお教えしますが、インストラクティブな回答はしておりませんので、ご了解ください。あくまでも、自分のためのコードです。 なお、参照設定は必要ありません。 ''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      If strText = "" Or c Is Nothing Then     If ActiveCell.Value = "" Then              ActiveSheet.Cells.Find "", , -4163, 2, , 0, 0, 0 'ダミーで、メニュー・リセット       Application.CommandBars.FindControl(, 1849).Execute       Exit Sub          Else       ActiveCell.Copy     End If     With myURange       Set lastRng = .Cells(.Cells.Count)     End With     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     End If      Else     Set c = myURange.FindNext(c)     If FirstAdd = c.Address Then       If MsgBox("シートの最後まで検索しました。" & vbCrLf _         & "最初に戻りますが、検索しますか?", 64 + vbYesNo) = vbNo Then         strText = ""         Set c = 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   End If   Set myURange = Nothing   Application.CutCopyMode = False End Sub

ufufuehehe
質問者

補足

ご丁寧に有難うございます。返事が遅くなり、申し訳ありません。 少しこちらの作業を説明させて頂くと、検索文字列はセルの文字列と一致しているものではなく、他シートや他ブックのセル内に数行にわたって入力された文字列の中の数文字で、毎回探す語句は違います。ですが、選択セルと同じ文字列を探す...という事でしたら、とても便利なマクロだと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.10

こんばんは。 私のほうでも、DataObject を試してみました。 今まで、ずっと疑問に思っていたのですが、今回、改めて調べてみました。DataObject 側のClipBoard は、Text しか扱えないはずですが、一般的にClipBoard 側は、Text 以外のものも入るので、それを、そのまま、DataObject で扱うと、場合によっては、実行時エラーを出すことがあります。どうやら、そのための防護策を、作らないといけないようです。 例: Private Declare Function IsClipboardFormatAvailable Lib "user32" ( ByVal wFormat As Long) As Long If IsClipboardFormatAvailable(1&) <>0 Then ' ----実行---- End If それと、String 型の変数の範囲は、たぶん、Chr(0) 以上だと思うのですが、しかし、それをそのまま使ってしまうと、Find メソッドで、その見えない文字を含めて探すようです。Range オブジェクトから、Value 値を取る分には、問題はないのですが、ClipBoard 側から取ると、どうやら、Find メソッドには、可視の文字以下のキャラクタも入ってしまうようです。こちらは、実行時エラーは発生しませんが、検索しても見つからないというときがあるようです。それらも、Rangeオブジェクトをコピーした後を考えて、対策をしないといけないようです。 OSは、関係しているかもしれませんが、ExcelのVersion 固有の問題でもなさそうです。 なかなか、難しいものですね。

ufufuehehe
質問者

補足

何度も有難うございます。 ちょっと話が難しくなってしまって焦っていますが、VBAのお話ですよね?^^;

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.9

>回答番号:No.6 この回答への補足 こんな感じでどうでしょうか。 Sub test4()   Dim TempObject As MSForms.DataObject   Static f As Range   Static ftxt As String   Static firstAddress As String      Set TempObject = New MSForms.DataObject   With TempObject     .GetFromClipboard     If f Is Nothing Or ftxt <> .GetText Then       If ftxt <> .GetText Then         ftxt = .GetText       End If       Set f = Cells.Find(What:=ftxt, LookIn:=xlValues, _         MatchCase:=False, LookAt:=xlPart, MatchByte:=False)       If f Is Nothing Then         MsgBox "Not Found!", vbExclamation         Exit Sub       End If       firstAddress = f.Address     Else       Set f = Cells.FindNext(f)       If firstAddress = f.Address Then         MsgBox "Work Ended!"         Set f = Nothing         firstAddress = ""       End If     End If   End With   If Not f Is Nothing Then MsgBox f.Address        Set TempObject = Nothing End Sub >MsgBoxで検索対象セルのアドレスを出すのではなく、 >そのセルにジャンプして欲しいのですが; >ショートカットキーを押す度に次の検索対象セルに次々飛んでいき、 >最後に『シートの最後まで検索しました。 >最初に戻って検索を続けますか?』というMsgBoxが出てループする 上記については、ufufueheheさんご自身の手でやってみてください。 プログラミングの楽しさを味わっていただきたいと思います。 ジャンプするのは、Application.Goto メソッドを使えば良いかも知れません。 上手く出来ない場合は、補足していただければアドバイスさせていただきます。 その際には、試されたコードを合わせて提示してください。

ufufuehehe
質問者

補足

何度も有難うございます。 返事が遅くなり、本当に申し訳ありません。 セル番地を表示させる必要はまったくないので、このマクロは残念ですが使えません。 少し、自分でもいじってみたのですが、やはり難しいですね^^; VBAは、簡単なものしか作ったことがないのですが、思い通りに動いた時は確かに快感だと思います。ですが、今はあまり時間が取れないので、#2のVBAを使わせていただこうかと考えています。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.8

こんばんは。 >アドビのPDFMAKER(拡張子メモるの忘れましたが、 PDFMAKER.xla だと思いますが、予想も付きませんでした。おそらく、これが原因です。XLSTARTフォルダで、Excelでは、そこには、xla はいけないはずです。アドビ側は、そういうようには考えてはないとは思いますが、トラブルの原因になります。(そうかなって思う人もいますが、XLSTART は、PERSONAL.XLS 以外に入れるのは基本的に良くないです。) Windows XP: C:\Documents and Settings\[User ID]\Application Data\Microsoft\AddIns\ ここに入れればよいのですが、ただ、一度、Excelのツール--アドインのところで、登録しなおさないといけません。登録しなおすとは言っても、アドインを開けて、[参照] で、ファイルを指定してあげれば、後は、Excel側で、前のものの処理とか聞いてくるかもしれませんので、その言うとおりにすればよいです。アドインは、アドインの場所に入れるというのが良いです。 >Excel11.xlbというのが、「メニューファイル(xlb)」なのでしょうか? その通りです。Excelのファイルの構造上の問題で、設定値が入り込むといったほうが良いかもしれません。どうやら、こちらは、そのままで良いと思います。 また、Excel11.xlbファイルは、XLSTART の上位フォルダにあるものです。ついでに、Excelが健康なときに、これを、バックアップを取っておいたほうがよいです。Excelが、調子が悪くなった時に、このファイルを入れ替えてあげます。ついでに、WordのNormal.Dot ファイルも、バックアップを取っておくと、何かの時に役に立ちます。 #7のマクロは、 きちんと、標準モジュールに二つのマクロを登録したら、 当面は、ワークシート上で、Alt + F8 --> SearchExeTest で呼び出しいただければ分かるはずです。 ただの、「検索と置換のダイアログ」が、デフォルト状態で立ち上がるだけのものですが、クリップボードに文字が入っていれば、検索ボックスの中に貼り付けされます。 もし、気に入れば、コマンドボタンをインスタンスに入れて、組み込む方法を教えます。ただし、現行では、Excel 2003 のみになってしまうと思います。Excel 2007 でも、書き換えれば動くのですが、呼び出しの部分を調べていません。 なお、Function GetClipData()側は、途中で終わらせないようにしてください。ClipBoard がオープンしたままになってしまいますので、必ず、最後の、CloseClipboard で、終わらせてください。開いたままでしたら、別途、CloseClipboard だけのマクロを走らせれば、閉じます。

ufufuehehe
質問者

補足

有難うございます。 返事が遅くなり、大変申し訳ありませんでした。 XLSTARTに入っていたのは確かにPDFMAKER.xlaであり、教えて頂いた通りにアドインフォルダに移して様子を見たのですが、やはり現象が現れてしまいます。 #7のマクロですが、自宅で検証したところ、何も動かず、エラーメッセージも出ません...?

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.7

こんにちは。 省エネの時代には、時代遅れのコードですが、久々に、こんなコードを作ってみました。#4で、これに触れようとは思ったのですが、出来る自信もありませんので、触れませんでした。 ふたつの標準モジュールに、それぞれ入れてください。ひとつにすると、メインテナンスがしにくいからです。本来は、これをメニューのコマンドボタンをインスタンスとして組み込むか、イベントにしてあげるのがよいと思います。どちらかというと、前者が優れています。 SearchExeTest をコマンドボタンなどに組み込めばよいです。 例: Call SearchExeTest '---------------------------------------------------- 'モジュールの最上位に入れる '検索と置換のダイアログボックスに、文字を送るマクロ Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" ( _    ByVal lpClassName As String, _    ByVal lpWindowName As String) As Long Private Declare Function FindWindowEx Lib "user32.dll" Alias "FindWindowExA" ( _    ByVal hWnd1 As Long, _    ByVal hWnd2 As Long, _    ByVal lpsz1 As String, _    ByVal lpsz2 As String) As Long Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" ( _    ByVal hwnd As Long, _    ByVal wMsg As Long, _    ByVal wParam As Long, _    lParam As Any) As Long Private Const WM_PASTE As Long = &H302 '----実行--- Sub SearchExeTest()   Dim hwnd As Long   Dim hWnd_ As Long   Dim msg As String   Dim i As Long      If Val(Application.Version) > 10 And Val(Application.Version) < 12 Then 'Excel 2002+2003 のみ     ActiveSheet.Cells.Find "", , -4163, 2, , 0, 0, 0 'ダミーで、メニュー・リセット     Application.CommandBars.FindControl(, 1849).Execute   End If   msg = GetClipData()   If Len(msg) = 0 Then Exit Sub   hwnd = FindWindowEx(0&, 0&, "bosa_sdm_XL9", "検索と置換")   hWnd_ = FindWindowEx(hwnd, 0&, "EDTBX", vbNullString)   msg = Trim(msg)      If Len(msg) < 256 Then     Call SendMessage(hWnd_, WM_PASTE, 0&, vbNullString)   End If End Sub    '------------------------------------------------------- 'モジュールの最上位に入れる 'クリップボードから文字を取得する(別のモジュールに入れてください) Private Declare Function IsClipboardFormatAvailable Lib "user32.dll" (ByVal wFormat As Long) As Long Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Long) As Long Private Declare Function OpenClipboard Lib "user32" (ByVal hWnd As Long) As Long Private Declare Function SetClipboardData Lib "user32" (ByVal wFormat As Long, ByVal hMem As Long) As Long Private Declare Function EmptyClipboard Lib "user32" () As Long Private Declare Function CloseClipboard Lib "user32" () As Long Private Declare Function GlobalLock Lib "kernel32" (ByVal hMem As Long) As Long Private Declare Function lstrcpy Lib "kernel32" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long Private Declare Function GlobalUnlock Lib "kernel32" (ByVal hMem As Long) As Long Private Const CF_TEXT As Long = 1 Public Function GetClipData() As String   Dim hMem As Long   Dim p As Long   Dim RetVal As Long   Const MAXSIZE = 4194304 '2^22   On Error GoTo ErrHandler   If OpenClipboard(ByVal 0&) Then     hMem = GetClipboardData(CF_TEXT)     If hMem Then       p = GlobalLock(hMem)       If Not IsNull(p) Then         GetClipData = Space$(MAXSIZE)         RetVal = lstrcpy(GetClipData, p)         RetVal = GlobalUnlock(hMem)         GetClipData = Mid(GetClipData, 1, InStr(1, GetClipData, Chr$(0), 0) - 1)       Else         Err.Raise 51       End If     End If ErrHandler:     CloseClipboard   End If End Function 参考にしたところ http://hp.vector.co.jp/authors/VA024411/vbtips03.html テキストボックス

ufufuehehe
質問者

補足

何度もご回答、有難うございます。 済みません、せっかく組んで下さったのにコードが難しくて、どういう動きをするのか判りません(汗) どういうタイミングで実行すれば良いのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.6

>回答番号:No.2 この回答への補足 参照設定されていないのかもしれません。 確か、Microsoft Forms2.0 Object Libraryだったと思います。 下記を参考に設定してみてください。 クリップボードとデータのやりとりをする http://www.moug.net/tech/exvba/0150091.htm マクロで参照設定を操作する http://officetanaka.net/excel/vba/tips/tips100.htm >もし検索文字列をコピー後、 >ショートカットキーを押しただけで検索対象に行きつけたとしたら 検索ダイアログを持ち出す必要は無いですね。 Sub test3()   Dim TempObject As MSForms.DataObject   Dim f As Range   Dim firstAddress As String      Set TempObject = New MSForms.DataObject   With TempObject     .GetFromClipboard     Set f = Cells.Find(What:=.GetText, LookIn:=xlValues, _       MatchCase:=False, LookAt:=xlPart, MatchByte:=False)     If f Is Nothing Then       MsgBox "Not Found!", vbExclamation       Exit Sub     End If     firstAddress = f.Address     Do       MsgBox f.Address       Set f = Cells.FindNext(f)     Loop Until f.Address = firstAddress   End With        Set TempObject = Nothing End Sub

ufufuehehe
質問者

補足

何度もご回答、本当に有難うございます。 参照設定、やっと理解できまして(汗)test2もしっかり動くようになりましたv ですが、MsgBoxで検索対象セルのアドレスを出すのではなく、そのセルにジャンプして欲しいのですが; ショートカットキーを押す度に次の検索対象セルに次々飛んでいき、最後に『シートの最後まで検索しました。最初に戻って検索を続けますか?』というMsgBoxが出てループする…というのは無理(もしくは大変)でしょうか?

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

私も「セルの内容が・・」にチェックを入れて、保存してみましたが、新たに開くと、「セルの内容が・・」はOffで出てきました。 この設定状態はエクセルファイルの設定としてファイル保存されないのではないですか。保存する必要がないとおもいますし。(いつも何か決まった課題で、全部一致の操作を多数回する人には毎回設定ガ必要で気の毒だが。) ブックを閉じるまでに、他語句で検索するとか別シートなどを検索する場合は、閉じるまでは、もちろんその後は、直前のオプションが保存されるようです。 色んな場合とかの関連がわからないから難しいわけで、本当は1例ぐらいでは何もいえませんが、(質問の情況に疑問が湧き)1例として参考にして、見直しに役立ててください。

ufufuehehe
質問者

補足

有難うございます。皆様に色々アドバイスを頂き、もしかしてアドインファイルのせい?という気もして来ました。パスワードがかかっていて、ファイルの中を勝手に見ることはできないのですが、もしそうなら、上にかけあって、パスワードを教えてもらおうかとも考えています。 「セルの内容が・・」が毎回オンになっているならともかく、バラバラなので、いちいちオプション押してオンオフ確認して…という状況でしたので; #2さんのVBAが導入できれば問題解決ですが、それとは別に、なぜこうなるのか?はやはり知りたいと思います。

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんにちは。 >オンにした事もないのに、Excel立ち上げと検索を繰り返していくうちに、時々勝手にオン状態になっています。 やはり、そうだったのですね。ちょっと質問がヘンだなって思って読んでいました。 Excel 2003 + Win XP の設定でお話させていただきますが、 通常、メニューファイル C:\Documents and Settings\[User ID]\Application Data\Microsoft\Excel\Excel11.xlb これを、バックアップを取ってから、削除するといいます。 しかし、 C:\Documents and Settings\[User ID]\Application Data\Microsoft\Excel\XLSTART\PERSONAL.xls こちらを、バックアップを取ってから、削除して直ることがあります。 ただし、設定されたメニューがリセットされてしまいます。 こちらの「個人用マクロブック」のファイルは、一般のxlsファイルですから、中身は取り出すことができます。 # C:\Documents and Settings\[User ID]\Application Data\Microsoft\Excel\XLSTART\ ここの中に異物のファイルが、仮にテキストファイルでも入っていると調子がおかしくなるようですね。 PERSONAL.xls こちらから先に試してみたほうがよいかもしれません。 それで、原因ですが、ファイルの中に設定が残ってしまうことがあるようですね。一応、この経験はしているのですが、人それぞれに事情が違うようです。

ufufuehehe
質問者

お礼

済みません、会社ではあまり時間が取れなくて、Excel11.xlbの検証は無理でした。とりあえず「XLSTART」の中身だけ確認しましたが、アドビのPDFMAKER(拡張子メモるの忘れましたが、Acrobatがインストールされてるので、その関係だと思います)が入ってるだけでした。

ufufuehehe
質問者

補足

重ねてのご回答、有難うございます。 Excel11.xlbというのが、「メニューファイル(xlb)」なのでしょうか? レスポンス遅くて申し訳ないですが、明日会社で確認してみます。 ただ、多分ですが、私がマクロを書き込むまでPERSONAL.xlsは存在してなかったような気がします… アドインとして、3種類ほどのVBA用のファイルが同時に立ち上がる設定がされているようなので、もしかしたらそのどれかに支障があるのかも?

全文を見る
すると、全ての回答が全文表示されます。
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 マクロは出来上がっているようですね。 少し、割り込ませていただくと、検索ダイアログは、デフォルトで、オフになっているはすです。しかし、Excel を起動したときに、その設定が残っているという意味でしょうか。もし、そうなら、たぶん、メニューファイル(xlb)が、Read Only になっているか、トラブルが発生しているように思います。 しかし、検索するたびに、デフォルトのオフにするということですと、マクロとは言っても、まったく種類の違うものです。Excel 2002 ~2003 専用になると思いますが、編集メニューのコマンドボタンに、Class インスタンスを、設けてあげなくてはなりません。 実際の検索に対しては、#2さんのコードの部分の、accDoDefaultAction メソッドなら、デフォルトにはなるはずです。

ufufuehehe
質問者

補足

有難うございます。 > 検索ダイアログは、デフォルトで、オフに なっていません;(ホントにバラバラです) しかも、オンにした事もないのに、Excel立ち上げと検索を繰り返していくうちに、時々勝手にオン状態になっています。トラブル発生という事でしたら、どうすれば直りますか?

全文を見る
すると、全ての回答が全文表示されます。
  • xls88
  • ベストアンサー率56% (669/1189)
回答No.2

Sub test2()   Dim TempObject As MSForms.DataObject      Set TempObject = New MSForms.DataObject   With TempObject     .GetFromClipboard     ActiveCell.Find What:=.GetText, LookIn:=xlValues, _       MatchCase:=False, LookAt:=xlPart, MatchByte:=False   End With   Excel.Application.CommandBars.FindControl _         (msoControlButton, 1849).accDoDefaultAction        Set TempObject = Nothing End Sub

ufufuehehe
質問者

補足

有難うございます。とても早く回答して下さったのに、お礼が遅くなって申し訳ありません。 会社であまり時間が取れないため、帰宅してから検証させて頂いたのですが、『コンパイルエラー:ユーザ定義型は設定されていません』と出てしまいます。会社のPCはEXCEL2003ですが、自宅のPCは2002なので、そのせいでしょうか?明日、会社でもう一度やってみます。 エクセルの検索は頻繁に行わなければならない仕事なので、もし検索文字列をコピー後、ショートカットキーを押しただけで検索対象に行きつけたとしたら、ものすごい感動です(笑)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Word2007であいまい検索を常時OFFにしたい

    業務上Word2007で文書を作成する機会が多く、編集作業で検索と置換機能を多用しています。 そこで不便をしているのがデフォルトでONに設定されている「あいまい検索」機能です。使いたくないので毎度Word立ち上げ時にOFFの作業をする必要があります。かなり手間です。 自分でも色々検索をしたのですがマクロを動かす方法も含め、解決策を発見できていません。 「あいまい検索自体をOFFにすることは出来ないが、あいまい検索が実行している内容=オプション項目のチェックをすべて外せば実質上あいまい検索は機能しない。オプション項目のチェックは次回以降Wordを立ち上げた際にも維持されるので、実質的にあいまい検索をデフォルトでOFFにするのと同じになる」 との記載を見付け、試してみました、が、どうも (1)あいまい検索ON+オプションの項目全てOFF と (2)あいまい検索OFF は挙動が違うようなのです。 (1)で検索をかけてもヒットしない項目が(2)ではヒットすることがあります。 (「●●[文字列]^p」で置換をかけた際に↑の挙動を確認しました。  特殊文字にかかるあいまい検索機能のON/OFFはオプション項目になかったので、手動では外せないということなのかもしれません)   前置きが長くなりましたが、Word2007で「あいまい検索」機能をデフォルトで立ち上がらないようにする(OFFにする)、あるいはそれと同等の挙動をさせることは可能でしょうか。 お詳しい方、ご回答いただけるとありがたいです。 よろしくお願いいたします。

  • エクセルの検索「オプション」

    エクセルの検索機能について教えてください。 メニュー⇒編集⇒検索⇒検索「オプション」⇒検索対象 最後の検索対象をデフォルトで『値』に設定したいのですが…何か設定方法がありますか? EXCEL2002 SP3 を使用しております。 

  • エクセルの検索

    エクセル2000を会社で使用しています。 ある顧客一覧をエクセルで作成していて、ある行が データ抽出時、使い勝手が悪くなり、 もともと1つだったセルのデータを2セルに分けて 入力するようにしたところ、編集→検索ツールで ひらがなやカタカナでも文字が検索できたのに、 セルを分けたとたん、完全一致でなければ検索ヒット しなくなってしまいました。 もちろん、検索のオプション項目の完全一致には チェックはいれておりません。 検索できるように、改善する方法はないでしょうか?

  • エクセル セルの書式設定で

    御願いします。 エクセルのセル書式設定では様々な書式や罫線などが 設定出来ますが、デフォルトの設定を変えることは 出来ないのでしょうか。 例えばデフォルトでは縦位置が「下揃え」になっています。これを中央にするにはどうすればいいのでしょうか。 また全セルの書式を変更した後で、セルの結合を行うと 横位置は勝手に「中央揃え」になります。 このかなりお節介な設定を無くするには何か方法が 有るのでしょうか。 オプションやプロパティにもないし... 宜しく御願いします。

  • Excelのセル設定

    Excel2003上であるセルを選択したとき自動的にIMEがOffになる設定を教えて下さい。

  • エクセルのコメント挿入時のデフォルト設定について

    どなたか教えてください。 エクセルのあるセルにコメントを挿入できますよね。 そのとき、デフォルト設定では 必ず、使用者の名前(これはオプションで変更可能)と その文字が太字になって+「:」が付きますよね。 それらを一切無しにするには、どこかで設定可能でしょうか? オプションで使用者の名前を消しても、コンピュータの 使用者名が出てくるし、空白スペースにすると 空白+:と表示されてしまいます。 何もない状態で、かつ太字ではない状態でスタートしたいのです。 どうぞ宜しく御願いします。

  • VLOOKUP関数で複数の検索値を設定したいのですが

    VLOOKUP関数で複数の検索値を設定することはできるのでしょうか。 例えば5列目のセルのうち、A列に"日本人"、B列に"学生"が入力されている行のセルの内容を求めるといった具合です。 VLOOKUP関数に特にこだわってはいないので別の関数を用いた方法でもかまいません。 ExcelはExcel2000,OSはWindows2000を使用しています。 よろしくお願いします。

  • Excelで検索ボタンを作るには

    Excel2000を利用しています。 セルの内容を[編集]‐[検索]で検索するのではなく、 ある固定したセルに検索ボタンを作ってしまうということはできるのでしょうか。 ご存知の方、よろしくお願いします。

  • EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更したい。

    EXCEL VBAでマクロの最後でFind関数のLookAtの設定を変更したい。 EXCELの検索機能において、通常は、オプションの「セル内容が完全に同一であるものを検索する」のチェックを外して使用しています。 あるマクロにおいて、Find関数のLookAtの値を「xlWhole」(完全一致)で使用しています。 この「LookAt」の値は、通常の手動での検索にも設定が引き継がれるため、このマクロの後に、検索機能を使用するとオプションの「セル内容が完全に同一であるものを検索する」はチェックされた状態になっています。 つまり、通常時はあいまい検索、マクロ時は完全一致検索を行いたいと思っており、マクロの最後で、あいまい検索に設定を変更しておきたいのですが、そういった指定は可能なのでしょうか。 ごり押しですが、最後に、あいまい検索で適当な検索を行っておくという事も考えましたが、もう少しスマートな方法があるのか、ご存知の方がいらっしゃればと思い質問させていただきました。 よろしくお願いします。

  • エクセルVBA 検索時に除外を設定したい

    エクセルVBAにて、個人情報が含まれていないか検索するマクロを作成しています。 複数の文字列のなかから、 「佐藤さん」 などと記入されているセルを検索したいのですが、部分一致で「さん」で検索すると 当然、「さん」を含むすべてのセルが検出されます。 その際に、「たくさん」「社長さん」など除外ワードを検索時に設定することは可能でしょうか。 除外ワードを設定するのが難しいのであれば、「さん」の検索をしたあとに 除外ワードの検索をするようにしようかと考え中です。 別々で検索する方法しかないかどうか、ご教授いただきたいです。 よろしくお願いします。

水道光熱費一人3万円/月は妥当?
このQ&Aのポイント
  • 質問者が実家で暮らしている際に母の恋人に支払っている水道光熱費が月額3万円であるが、その金額は妥当なのか疑問を持っている。
  • 質問者はエアコンを使わず、浴槽にもお湯を溜めずシャワーのみを使用しているため、水道光熱費がそこまで高額になるとは思えない。
  • しかし、母の恋人からは「3万円でもおまけしている」と言われており、質問者が疑念を抱く理由になっている。
回答を見る

専門家に質問してみよう