2017-06-01 24 views
2

列の単語を別の単語に置き換えたいのですが、コードが機能していないように見えますが、まだコーディング言語を把握しようとしていますが、ただ私には直感的ではありません。VBA Excelで範囲内の単語を検索して置き換えます

状況:

Global Macro - Equities 
Global Macro - Bonds 
Global Macro - FX 
. 
. 
. 
And so on... 

望ましい結果:

GM - Equities 
GM - Bonds 
GM - FX 
. 
. 
. 

私のコード

Sub ReplaceFundNames() 

    Dim FundName As String 
    Dim CorrectedName As String 
    Dim ws As Worksheet 
    Dim LastRow As Long 

    Set ws = ActiveSheet 
    LastRow = Range("B" & Rows.Count).End(xlDown).Row 

    FundName = Range(LastRow) 
    CorrectedName = Replace(FundName, "Global Macro", "GM") 

    Range("B" & LastRow).Value = CorrectedName 


End Sub 

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

+0

あなたのコードは、アクティブシート内のセル 'B1048576'の交換を行っており、そのセルが" 'グローバルが含まれている場合にのみマクロ "" – ThunderFrame

答えて

4

VBAのReplace関数は、単一文字列で動作するように設計されていますが、Range.ReplaceメソッドはRangeで動作するように設計されています。

そのように、あなたは、単一のステートメントであなたの交換を行うことができます。

ActiveSheet.Range("B:B").Replace "Global Macro", "GM"

+0

上記のコード全体をこの単一の文で置き換えることを意味しますか? –

+0

はい。使用する行数に絞り込むことができますが、値の置換が必要な範囲の下または上のデータがないと仮定すると、上の行で十分です。重要なことは、 'VBA.Replace'関数ではなく' Range.Replace'メソッドを使うことです。 – ThunderFrame

+0

ああ、チップのおかげで。 "コンパイルエラー:期待される関数または変数" –

関連する問題