如何将Selection.Copy值分配给Excel VBA中的String

时间:2016-09-16 02:36:46

标签: excel-vba vba excel

我是VB和Macro的新手。

我正在尝试从一张纸上复制单元格的内容并将其分配给一个字符串,以便我可以将字符串传递给我想要的任何位置。

这是我正在尝试做的事情,但它无法正常工作。

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 个答案:

答案 0 :(得分:1)

将String变量赋值给Cell的方法如下:

findd = Range("A1").Value

由于使用Select语句几乎总是一个坏主意,我相信您的代码可以重写为:

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

编辑:根据请求如何对多个值执行此操作的注释进行更新:

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