2016-09-16 20 views
1

私はVBとマクロが初めてです。Excel VBAのStringにSelection.Copyの値を割り当てる方法

私は1つのシートからセルの内容をコピーし、それを文字列に割り当てて、いつでもどこでもその文字列を渡すことができます。

ここで私がしようとしているのは動作していません。それは、Selectステートメントを使用することはほとんど常に悪い考えであるように、私は信じて

findd = Range("A1").Value 

:セルの値をString変数を割り当てる

Dim findd As String 
Columns("A:A").Select 
Windows("Book111.xlsm").Activate 
Range("A1").Select 
Selection.Copy 
findd = Selection.Paste 
Windows("Book2.xls").Activate 
Selection.Replace What:=findd, Replacement:="", LookAt _ 
    :=xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
+1

使用"A1")。 '' Selection.Copy''を '' findd = Selection.Paste' 'を選択します。また、What:= finddをWhat:= Workbooks( "Book111.xlsm")に置き換えることもできます。 'findd'変数を使用する必要がありません。また、Replaceを実行する前にそのブックを有効にする必要があります。 – YowE3K

+0

ありがとう、私はこのステップをもう一度やりたいと思っています...私はA1からA30までの範囲を変更する必要がある各ループに対して...どうすればいいですか? –

答えて

1

方法は次のようなものになるだろう私は、2つの異なるワークブックに積極的に持っているワークシートのかわからないんだけど

Workbooks("Book2.xls").WorkSheets("whatever").Columns("A:A").Replace _ 
     What:=Workbooks("Book111.xlsm").Worksheets("whatever").Range("A1").Value, _ 
     Replacement:="", _ 
     LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, _ 
     MatchCase:=False, _ 
     SearchFormat:=False, _ 
     ReplaceFormat:=False 

:あなたのコードは以下のように書き換えることができますwhateverの2つのオカレンスを適切な名前に置き換える必要があります。


編集:更新複数の値の上にこれを行う方法を要求するコメントに基づいて:。 `findd =範囲( "A1")[値]、代わりに3行の`レンジ(

Dim toBeReplaced As Range 
For Each toBeReplaced In WorkBooks("Book111.xlsm").Worksheets("whatever").Range("A1:A30") 
    Workbooks("Book2.xls").WorkSheets("whatever").Columns("A:A").Replace _ 
      What:=toBeReplaced.Value, _ 
      Replacement:="", _ 
      LookAt:=xlPart, _ 
      SearchOrder:=xlByRows, _ 
      MatchCase:=False, _ 
      SearchFormat:=False, _ 
      ReplaceFormat:=False 
Next 
関連する問題