如何在Excel VBA中将所选内容赋值。将值复制到字符串

如何在Excel VBA中将所选内容赋值。将值复制到字符串,excel,vba,Excel,Vba,我不熟悉VB和宏 我试图从一张工作表中复制一个单元格的内容,并将其分配给一个字符串,这样我就可以将字符串传递到任何我想传递的地方 这就是我试图做的,但它不起作用 Dim findd As String Columns("A:A").Select Windows("Book111.xlsm").Activate Range("A1").Select Selection.Copy findd = Selection.Paste Windows("Book2.xls").Activate Select

我不熟悉VB和宏

我试图从一张工作表中复制一个单元格的内容,并将其分配给一个字符串,这样我就可以将字符串传递到任何我想传递的地方

这就是我试图做的,但它不起作用

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

将字符串变量分配给单元格值的方法如下:

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

使用
findd=Range(“A1”)。值
,而不是三行
Range(“A1”)。选择
Selection。复制
findd=Selection。粘贴
。您甚至可以使用
What:=Workbooks(“Book111.xlsm”).Worksheets(“whatever”).Range(“A1”).Value
替换
What:=findd
,这样您就不需要在替换之前使用
findd
变量,甚至不需要激活工作簿。谢谢,如果我想再次执行此步骤。。。对于每个循环,我必须将范围从A1更改为A30。。我该怎么做?