Replace関数とReplaceメソッド - VB6の基本的な質問の解説

このQ&Aのポイント
  • この質問では、VB6の基本的なReplace関数とReplaceメソッドについての疑問があります。
  • 質問のコードでは、Cells.Replaceメソッドを使用して文字列の置換を行っていますが、具体的にどのReplaceに相当するかが分からないという問題があります。
  • オブジェクトブラウザで確認すると、Excel.Range、VBA.Strings、Office.TextRange2、Excel.WorksheetFunctionのメンバにReplaceが存在していますが、どれが該当するのか教えて欲しいという質問です。
回答を見る
  • ベストアンサー

Replace関数ですか?Replaceメソッドで

VBAの基本的な質問なのですが ************************************* Sub test() Cells.Replace What:="あああ", Replacement:="いいい" End Sub ************************************* の「Replace」は、 Replace関数ですか? Replaceメソッドですか? オブジェクトブラウザで確認すると ************************************* Excel.Range のメンバ VBA.Strings のメンバ Office.TextRange2 のメンバ Excel.WorksheetFunction のメンバ ************************************* のReplaceがあるのですが 例のReplaceはどれに該当するか教えてください。 ご回答よろしくお願いします。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

cells.replace 云々カンヌン という構造で使っているのですから、オブジェクトブラウザで見たそれらの中からでもrangeクラスのreplaceメソッドであることが分かります。 また、引数として  What:=…, Replacement:=… のように使っていることからも、同様に識別できますね。 #もっとも オブジェクトブラウザで見てみると、メソッドと言いながら「Function」だと表記されていますけどね。

huiu78iou
質問者

お礼

ありがとうございました。

関連するQ&A

  • Replaceメソッド 完全一致で置換したい

    VBAのReplaceメソッドを完全一致で使う方法はありますか? Excel.Range.Replaceメソッドの方ではなく、 VBA.Strings.Replaceメソッドの方なのですが、 Sub test12() MsgBox Replace("abc", "ab", "") '・・・(1) MsgBox Replace("ab", "ab", "") '・・・(2) End Sub (1)の場合は、置換対象と置換前文字が一致しないから、置換されたくなくて、 (2)の場合は、置換対象と置換前文字が一致する(完全一致)から、置換される・・・ とやりたいのですが、可能でしょうか? Excel.Range.Replaceメソッドなら、LookAt:=xlPartなどで、条件をつけられますが、 VBA.Strings.Replaceの場合、どうすればいいですか?

  • オブジェクト、プロパティ、メソッドの関係

    環境:OS.Win2000、Excel2000VBA プロパティやメソッドの呼び出し方法に疑問があります。 ExcelのVBAで以下の動作は確認しています。(例1) Dim xlApp As Application Dim xlBook As Worksheet '置換 xlApp.ActiveCell.Replace what:="A", replacement:="B", LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, MatchByte:=False '検索 Set Oret = xlBook.Application.Cells.Find(what:="A", After:=ActiveCell, _ LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, _ SearchDirection:=xlNext, MatchCase:=False, MatchByte:=False) 疑問に思っているのは「xlApp.ActiveCell.Replace」の”Replaceメソッド”を オブジェクトブラウザで調べるとRangeオブジェクトと、WorksheetFunctionオブ ジェクトにしか含まれないように受け取れます。またヘルプの「対象」を見ても Replaceが含まれているのは二つしかありません。ようするに以下の二通りでし か使えないように思えるのです。 Dim A As Range Dim B As WorksheetFunction A.Replace ~ B.Replace ~ しかし実際には(例1)のようにApplicationオブジェクトでも”Replaceメ ソッド”を使えます。”Replace関数”を見てみても引数を見ると”Replace メソッド”です。いまひとつ理解が浅いため目的の動作をさせるのにどのオ ブジェクトからメソッドを呼べば良いのか分かりません。基本的な事なのか もしれませんが、ぜひご回答くださいよろしくお願いします。

  • Replace関数について

    Sub macro1() Dim str As String str = "abc" str = Replace(str, "c", "a") MsgBox str End Sub このマクロを実行した時に、問題なく動くのですが なぜReplaceは関数なのに、 WorksheetFunction.がいらないのでしょうか? しかも Sub macro2() Dim str As String str = "abc" str = WorksheetFunction.Replace(str, "c", "a") MsgBox str End Sub にすると、エラーになります。 macro1のReplaceは、関数ではないのでしょうか? メソッドやステートメントですか?

  • 特定の文字でReplaceメソッドが動作しません

    Excel2000のVBAで、"-"(マイナス) を "~"(チルダ)に置き換えたいのですが、動作しません。 Selection.Replace What:="-", Replacement:="~" というコードです。 以下のコードは、うまく動作しますが Selection.Replace What:="A", Replacement:="B" Selection.Replace What:="A", Replacement:="~" 以下のコードは、動作しません Selection.Replace What:="-", Replacement:="B" Selection.Replace What:="-", Replacement:="~" どうやら、What:="-" が原因のようなのですが、理由も対処方法もわかりません。 どなたか、ご教授ください。

  • エクセルのReplaceで使える「?」(ハテナ)は

    エクセルのReplaceで使える「?」(ハテナ)は、 ワイルドカードとして藻文字列としても機能するのでしょうか? Sub Sample() Range("a1").Value = "aaa" Range("a1").Replace What:="a?a", Replacement:="aba" Range("a1").Value = "aaa" Range("a1").Replace What:="a?a", Replacement:="aba?" End Sub を実行すると 「?」は、文字1文字のワイルドカードとして機能しつつ、 最後に「?」が付く事から、文字列として?が置換されていますが この区別ってないのでしょうか?

  • 半角の?を全角の?にVBAで置換する方法

    A1に「ありますか?」を入力して、 Sub test1() Range("a1").Value Replace(Range("a1").Value, "?", "?") End Sub なら、ハテナが全角になるのですが Sub test2() Range("a1").Replace What:="?", Replacement:="?", LookAt:=xlPart End Sub だと、??????になってしまいます。 前後のコードの関係で、test2の方法で置換したいのですが、どうすればいいでしょう? Replace関数ではなく、Replaceメソッドで?だけを全角にする方法を教えてください。

  • Cells.Replace What:="*234

    このような事は出来ないのでしょうか? 「2345」で終わる文字列を検索して 「2345?」にしたいのですが Sub test() Cells.Replace What:="*2345", Replacement:="*2345?", LookAt:=xlWhole End Sub を実行すると「a12345」が「*2345?」になってしまいます。 お尻のみ完全一致で「2345」以前の文字列は変更せず 「a12345」を「a12345?」にするにはどうすれば良いでしょうか? 実際の置換妻帯データは 「5」と「?」が連続している訳ではないので Sub test() Cells.Replace What:="5", Replacement:="5?", LookAt:=xlPart End Sub は考えていません。

  • エクセルでVBAを使ってブック内にある特定の言葉をすべて置き換えしたい

    VBAの超初心者なのですが、 品番変更に伴い複数枚のシートから成るエクセルファイルの特定の文字を置換えたいのですが・・・。 Range(Cells(1, 1), Cells(65536, 256)).Replace What:="旧品番", Replacement:="新品番" で1枚のシートだけなら置換えできたのですが、すべてのシート(ファイル内すべて)の置換え方がわかりません。 どうしたらよいのでしょう。教えてください。

  • シート内のひらがなを全て削除したい

    こんばんは。エクセル2003です。 シート内の全てのひらがなを削除して 英数字、漢字、記号のみを残したいのですが Cells.Replace what:="あ", Replacement:="", LookAt:=xlPart Cells.Replace what:="い", Replacement:="", LookAt:=xlPart Cells.Replace what:="う", Replacement:="", LookAt:=xlPart ・ ・ ・ Cells.Replace what:="ん", Replacement:="", LookAt:=xlPart とやっていくしかないでしょうか? 何か効率のいい方法があれば教えて頂ければ助かります。 よろしくお願いします。

  • オフィス2010 今まで関数だったのがメソッドに

    オフィス2003からオフィス2010にしたのですが vbaのオブジェクトブラウザを見ていると、今までヘルプには関数として書かれていたのもが メソッドになってるのですが、変わったのですか? たとえば、WorksheetFunctionクラスのCountなんて、もろ関数だと思うのですが、 F1を押してヘルプを見ると「WorksheetFunction.Count メソッド」となっています。 関数とメソッドは同じ意味なのでしょうか?

専門家に質問してみよう