Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


7868 / 13645 ツリー ←次へ | 前へ→

【36263】検索と置換 まふまふ 06/3/27(月) 11:08 質問[未読]
【36265】Re:検索と置換 Jaka 06/3/27(月) 11:29 回答[未読]
【36266】Re:検索と置換 つん 06/3/27(月) 11:30 回答[未読]
【36268】Re:検索と置換 Jaka 06/3/27(月) 11:45 発言[未読]
【36273】Re:検索と置換 まふまふ 06/3/27(月) 13:09 質問[未読]
【36279】ほんまや!(@_@) SOS! つん 06/3/27(月) 14:26 発言[未読]
【36282】Re:ほんまや!(@_@) SOS! Jaka 06/3/27(月) 15:21 発言[未読]
【36286】Re:ほんまや!(@_@) SOS! Kein 06/3/27(月) 16:02 発言[未読]
【36288】Re:ほんまや!(@_@) SOS! つん 06/3/27(月) 16:13 発言[未読]
【36324】Re:ほんまや!(@_@) SOS! Ned 06/3/28(火) 23:15 発言[未読]
【36325】Re:ほんまや!(@_@) SOS! Ned 06/3/29(水) 0:16 発言[未読]
【36326】Re:ほんまや!(@_@) SOS! つん 06/3/29(水) 0:30 発言[未読]
【36327】Re:ほんまや!(@_@) SOS! Ned 06/3/29(水) 1:07 発言[未読]
【36330】済んじゃったみたいだけど....。 Jaka 06/3/29(水) 9:17 発言[未読]
【36331】違うような・・・・ つん 06/3/29(水) 9:45 発言[未読]
【36333】Re:違うような・・・・ Jaka 06/3/29(水) 10:17 発言[未読]
【36334】Re:違うような・・・・ Blue 06/3/29(水) 10:24 発言[未読]
【36335】Re:違うような・・・・ つん 06/3/29(水) 10:28 発言[未読]
【36351】Re:違うような・・・・ まふまふ 06/3/29(水) 18:10 発言[未読]
【36363】Re:違うような・・・・ Ned 06/3/29(水) 22:29 発言[未読]
【36388】Re:違うような・・・・ まふまふ 06/3/30(木) 12:14 発言[未読]

【36263】検索と置換
質問  まふまふ  - 06/3/27(月) 11:08 -

引用なし
パスワード
   Excelの「検索...」「置換...」で出てくるダイアログに
「検索場所」(シートまたはブックが選べる)がありますが、
これはVBAのFind、Replaceでは指定できないのでしょうか?

全てを置換えするのに、
Cells.Replace(.....)としているのですが、
一度ダイアログで「ブック」を選択するとブック内の全てが、
「シート」を選択するとシート内の全てが置換えられます。
この情報はどこかのプロパティに保存されてるのかな?と
思うのですが、それらしいものがわかりません。

ご存知の方がおられましたら教えてください。

【36265】Re:検索と置換
回答  Jaka  - 06/3/27(月) 11:29 -

引用なし
パスワード
   ▼まふまふ さん:
>Excelの「検索...」「置換...」で出てくるダイアログに
>「検索場所」(シートまたはブックが選べる)がありますが、
>これはVBAのFind、Replaceでは指定できないのでしょうか?
できるけど...。、
Thisworkbook.Sheets("Sheet1").range("B3:N20").Replace・・・



【36266】Re:検索と置換
回答  つん E-MAIL  - 06/3/27(月) 11:30 -

引用なし
パスワード
   こんにちは^^
めちゃめちゃお久しぶりです。

>できるけど...。、
>Thisworkbook.Sheets("Sheet1")range("B3:N20").Replace・・・

Jakaさん、まふまふさんは、おそらく「ブック」全体or「シート」全体の指定ができへんか?とおっしゃりたいのでは?
「ブック」全体に一度には無理かと思います。
For Eachで回して、1シートずつ見ていかんと無理ちゃうかと。

【36268】Re:検索と置換
発言  Jaka  - 06/3/27(月) 11:45 -

引用なし
パスワード
   つん さん:
こんにちは^^
めちゃめちゃお久しぶりです。(パクリ)

>Jakaさん、まふまふさんは、おそらく「ブック」全体or「シート」全体の指定ができへんか?とおっしゃりたいのでは?
そういうことでしたか...。考えが追いつきませんでした。

>「ブック」全体に一度には無理かと思います。
>For Eachで回して、1シートずつ見ていかんと無理ちゃうかと。
基本的にはそうなんだけど、無理やり?やろうと思えば何とか....。
シートを全部選択して、更に全選択状態にやしてやれば出来るで〜。
手作業でならこの方法でやるけど、マクロじゃやりません。
(マクロじゃ出来ないと言うのではなく、選択する事をいちいち書かないので、
 この方法は使わないといった意味です。)

【36273】Re:検索と置換
質問  まふまふ  - 06/3/27(月) 13:09 -

引用なし
パスワード
   Jakaさん、つんさん、ありがとうございます。

つんさんの言うとおり、ブック内すべての置換えです。
文章がわかりづらくてすいません。

ただ、シート名を指定して
 Sheet1.Cells.Replace(...)
としても、その前に手作業(ダイアログ)でブック内全置換えを
した後には、ブック内の全シートで置換えられてしまうのです。

【36279】ほんまや!(@_@) SOS!
発言  つん E-MAIL  - 06/3/27(月) 14:26 -

引用なし
パスワード
   まふまふさん

>ただ、シート名を指定して
> Sheet1.Cells.Replace(...)
>としても、その前に手作業(ダイアログ)でブック内全置換えを
>した後には、ブック内の全シートで置換えられてしまうのです。

ほんとですね!

Worksheets("Sheet1").Rows(1).Replace(・・・・

と、ちゃんとシートを指定しててもブック全体置換になってしまいますね!

マクロの記録で検索場所を「シート」「ブック」両方で記録してみても、同じコードが生成されちゃうし。

うーん(@_@)
考えてみますが〜たぶん私では無理〜〜〜

先輩方の回答をお待ちしております。

久しぶりに出てきたら、やっぱり・・・orz

【36282】Re:ほんまや!(@_@) SOS!
発言  Jaka  - 06/3/27(月) 15:21 -

引用なし
パスワード
   え〜と、ブック単位とかの機能は、97、2000(多分)にないので、全く解りませんが
ブックを指定してもダメなのでしょうか?

また、サーチ方向を横から縦にしてみるとか....。
application.Substitute・・・をつかうとか....。

NewSearch メソッドみたいなものはないのでしょうかねぇ?

【36286】Re:ほんまや!(@_@) SOS!
発言  Kein  - 06/3/27(月) 16:02 -

引用なし
パスワード
   >ブック単位とかの機能は、97、2000(多分)にない
そーです。私は2000使ってますが、たしかにありません。
なので当てずっぽになってしまいますが、例の・・

Worksheets("Sheet1").Activate
Range("A1").Select

なーんていう「97のおまじない」は通用しませんかねぇ ?
外してたらすいません。

【36288】Re:ほんまや!(@_@) SOS!
発言  つん E-MAIL  - 06/3/27(月) 16:13 -

引用なし
パスワード
   >>ブック単位とかの機能は、97、2000(多分)にない
>そーです。私は2000使ってますが、たしかにありません。
>なので当てずっぽになってしまいますが、例の・・
>
>Worksheets("Sheet1").Activate
>Range("A1").Select
>
>なーんていう「97のおまじない」は通用しませんかねぇ ?
>外してたらすいません。

うーん。なんかですねえ・・・・
手動で「検索・置換ダイアログ」で、「検索場所」をブックにしちゃうと、VBAで検索場所をどう設定しようが、強制的に全ブック内を検索・置換しちゃうみたいなんですよね・・

例えば、

Sub test()

  ThisWorkbook.Worksheets("Sheet1").Rows(1).Replace _
  What:="BBB", Replacement:="AAA"
  
End Sub

としてたら、普通はSheet1の1行目しか検索しないはずなんだけど、全ブックの全セルを検索・置換しちゃうみたいです。
そして、再び、手動でダイアログで「検索場所」を「シート」に設定しなおして実行すると、ちゃんとSheet1の1行目だけ検索するみたいです。

どのシートをアクティブにして実行させてもそうなので、

Worksheets("Sheet1").Activate
Range("A1").Select

も、効果ないかも・・・・

【36324】Re:ほんまや!(@_@) SOS!
発言  Ned  - 06/3/28(火) 23:15 -

引用なし
パスワード
   こんにちは。
http://support.microsoft.com/kb/284881/JA/
という事なので、バグなんでしょうかねぇ。。。

で、試しに下記コードで一旦検索かけるようにすると、リセットされるようなのですが、
少し自信なし。

Sub sample()
  Dim r As Range
  With Sheets(1).Columns(1)
    Set r = .Find(What:="a", LookIn:=xlValues, LookAt:=xlWhole _
      , SearchOrder:=xlColumns, MatchByte:=False)
    If r Is Nothing Then Exit Sub
    .Replace What:="a", Replacement:="b", LookAt:=xlWhole
  End With
  Set r = Nothing
End Sub

普段2000なので検証不足かもしれませんが、参考まで。

#あと、組み込みダイアログボックスにも無いようですね。どなたか情報お持ちでないでしょうか。。。

【36325】Re:ほんまや!(@_@) SOS!
発言  Ned  - 06/3/29(水) 0:16 -

引用なし
パスワード
   ん?・・・という事は、Replaceメソッドを使ったレスをする時はバージョン情報必須という事じゃないですか。
うーん。。。。。みなさん気をつけましょうね^ ^;

【36326】Re:ほんまや!(@_@) SOS!
発言  つん  - 06/3/29(水) 0:30 -

引用なし
パスワード
   こんばんは^^

>Sub sample()
>  Dim r As Range
>  With Sheets(1).Columns(1)
>    Set r = .Find(What:="a", LookIn:=xlValues, LookAt:=xlWhole _
>      , SearchOrder:=xlColumns, MatchByte:=False)
>    If r Is Nothing Then Exit Sub
>    .Replace What:="a", Replacement:="b", LookAt:=xlWhole
>  End With
>  Set r = Nothing
>End Sub
>
>普段2000なので検証不足かもしれませんが、参考まで。

2002で試してみました。
確かに、手動で「検索場所」を「ブック」にした後、上記コードを実行し、ダイアログを確認したら「検索場所」は「シート」に戻っていました。

バグ・・ですよね。
いろいろネット上を検索してみて、「おそらくバグやろなあ」とは思ってましたが、イマイチ自信がなかったです。

かなり気をつけなくちゃいけないバグですよね・・・・

【36327】Re:ほんまや!(@_@) SOS!
発言  Ned  - 06/3/29(水) 1:07 -

引用なし
パスワード
   追加です。不細工だけど、これでもリセットされるかもしれません。
Sub sample2()
  SendKeys "{esc}"
  Application.Dialogs(xlDialogFormulaReplace).Show 'これは[検索と置換]ダイアログと別もの
  With Sheets(1).Columns(1)
    .Replace What:="a", Replacement:="b", LookAt:=xlWhole
  End With
End Sub
※xlDialogFormulaFindは、開くとそれ以降[検索と置換]ダイアログが開かなくなる現象がありました。
 その場合、なぜか.Dialogs(xlDialogFormulaReplace).Showすると復活しましたが?(これもバグ?)

【36330】済んじゃったみたいだけど....。
発言  Jaka  - 06/3/29(水) 9:17 -

引用なし
パスワード
   昨日、思い出したようにスーパー辞典を見てみたら、
NewSearch メソッドみたいな物があるじゃん、って物を見つけたので載せておきます。
使えるかどうかは、解りません。

application.findformat.clear
検索条件書式のクリア(2002以上)

この手の類は、引数を省略すると前回の設定を引き継ぐから、省略しない方が良いらしいんだけど、つんさんの報告読んでみると、マクロ記録の結果が同じだって言うし、なんかバグくさい仕様やね。(お決まりの仕様)

PS,
昨日書いてきた文章そのままやから、スレッド内容と行き違いがあると思います。

【36331】違うような・・・・
発言  つん E-MAIL  - 06/3/29(水) 9:45 -

引用なし
パスワード
   Jaka さん、おはようさんです。

>NewSearch メソッドみたいな物があるじゃん、って物を見つけたので載せておきます。
>使えるかどうかは、解りません。
>
>application.findformat.clear
>検索条件書式のクリア(2002以上)

Sub test()

  Application.FindFormat.Clear

  ThisWorkbook.Worksheets("Sheet1").Rows(1).Replace _
  What:="B", Replacement:="A"
 
End Sub

こんな感じで使ってみたところ・・・
違うみたいです・・・orz

「セルの書式の検索条件の設定や取得を行います。」

ということなんで、やっぱり関係ないかなあ。

【36333】Re:違うような・・・・
発言  Jaka  - 06/3/29(水) 10:17 -

引用なし
パスワード
   ▼つん さん:
>Sub test()
>  Application.FindFormat.Clear
>  ThisWorkbook.Worksheets("Sheet1").Rows(1).Replace _
>  What:="B", Replacement:="A"
>End Sub
>
>こんな感じで使ってみたところ・・・
>違うみたいです・・・orz
>
>「セルの書式の検索条件の設定や取得を行います。」
>ということなんで、やっぱり関係ないかなあ。
使い方はそんな感じだと思うんですけど、やっぱダメでしたか。
検索も置換えも同じような物だと思っていたけど、う〜ん。
帰って覚えていたら、も一回さがしてみます。
確認取れないからそれらしいのを探すだけですけど。

省略しないで書いてみたらどうなるのかなぁ?    こっからさき
Selection.Replace What:="k", Replacement:="kk", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False

でもバグだってMSが言うてはるから、やっぱしバグなんだろうねぇ。(意味不明)

ところで、orzってなぁに???。
o おまえの
r 文章をRead(読んでいると)むかつく
z ざけんじゃねぇ![パンチ]
って、事なのでしょうか?????
ごめんなさ〜い!!! かんにんして〜っ!!

【36334】Re:違うような・・・・
発言  Blue  - 06/3/29(水) 10:24 -

引用なし
パスワード
   ▼Jaka さん:
>ところで、orzってなぁに???
いわゆるアスキーアートですな。あまり英単語に意味はない(略語ではない)です。

はてなダイアリー - orzとは
http://d.hatena.ne.jp/keyword/orz

【36335】Re:違うような・・・・
発言  つん E-MAIL  - 06/3/29(水) 10:28 -

引用なし
パスワード
   >省略しないで書いてみたらどうなるのかなぁ?    こっからさき
>Selection.Replace What:="k", Replacement:="kk", LookAt:=xlPart, _
>    SearchOrder:=xlByRows, MatchCase:=False

うーん。一緒みたいっすよ。
>
>でもバグだってMSが言うてはるから、やっぱしバグなんだろうねぇ。(意味不明)

うん。私もバグやと思います〜

>ところで、orzってなぁに???。
>o おまえの
>r 文章をRead(読んでいると)むかつく
>z ざけんじゃねぇ![パンチ]

ひゃはは(笑) な、わけないやんw
絵文字みたいですよ。

orz・・膝ついてうガックシきてるところ
「o」頭
「r」腕から肩
「z」足

【36351】Re:違うような・・・・
発言  まふまふ  - 06/3/29(水) 18:10 -

引用なし
パスワード
   皆様、いろいろ調べていただきありがとうございます。

バグなんですね、多分。(自分のPCがおかしいのかと思いました)
会社のPCなのでMicrosoftへ質問ができないので、
放置となってしまいます。申し訳ないです。

【36363】Re:違うような・・・・
発言  Ned  - 06/3/29(水) 22:29 -

引用なし
パスワード
   こんばんは。
>放置となってしまいます。
とは、
全シートを置換する場合と特定範囲を置換する場合については、
代案にて対応可能...という事はおいておき、
『[検索場所]はVBAでは指定できないのか?』
については未解決のため『放置』という意味ですね。
お力になれずごめんなさい。
これは私の実務にも関わってくる問題なので、少し別の掲示板でも訊いてみたいと思います。
何か進展ありましたらご報告致します。
(...これはマルチとは言わないですよね?^ ^;ちょっと不安)

【36388】Re:違うような・・・・
発言  まふまふ  - 06/3/30(木) 12:14 -

引用なし
パスワード
   ▼Ned さん:
>『[検索場所]はVBAでは指定できないのか?』
>については未解決のため『放置』という意味ですね。
言葉が足りずにすいません、そのとおりです。
でも、これで困る方は他にもいるはず。
すいませんが、もしわかりましたらまた書き込みをお願いします。

7868 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free