首页 文章

复制并粘贴到另一个单元格中

提问于
浏览
0

我们正试图通过一系列寻找特定字符串的单元格 . 在一种情况下,字符串是可访问性,但整个字符串是accessibility3.2 . 然后我们要将字符串粘贴到另一个工作表上的单元格中 .

然后下一次循环它可能是accessibility5.8

这是我们编写的一些代码:

srtDate = ThisWorkbook.Sheets("Website Quality").Cells(9, 3).Value

rng = ThisWorkbook.Sheets("Sheet2").Column(1).Find(What:=Accessibility, _
                    LookIn:=x1Values, LookAt:=x1Whole, MatchCase:=True)

srtDate.Value = rng.Value

任何帮助都会很棒谢谢

2 回答

  • 1

    也许这就是你想要的(我假设“Accesibility”是一个文字字符串) .

    更改

    rng = ThisWorkbook.Sheets("Sheet2").Column(1).Find(What:=Accessibility, _ LookIn:=x1Values, LookAt:=x1Whole, MatchCase:=True)

    Set rng = ThisWorkbook.Sheets("Sheet2").Columns(1).Find(What:="Accessibility", _
                    LookIn:=x1Values, LookAt:=x1Part, MatchCase:=True)
    
  • 0

    您的 .Find 显然是 Range.Find 方法,因为它包含 WorksheetFunction.Find 方法中不存在的参数 .

    Range.Find 方法需要一个计算结果为 Range Object 的表达式 .

    ThisWorkbook.Sheets("Sheet2").column(1)
    

    不评估范围 . 您可以通过在“立即”窗格中输入来测试此项

    ThisWorkbook.Sheets("Sheet2").column(1).select
    

    这将返回错误438

    Object不支持此方法或属性

    ThisWorkbook.Sheets("Sheet2").Range("A:A").select
    

    在立即窗格中工作正常,所以用 ThisWorkbook.Sheets("Sheet2").Range("A:A") 替换 ThisWorkbook.Sheets("Sheet2").Column(1)

    Range.Find 方法返回的是一个范围,因此应该将返回的变量定义为范围

    Dim rng as Range
    

    如果模块顶部没有 Option Explicitall variables are assumed by VBA to be of Variant Type 但变体类型不能与对象类型互换 .

    如果通过工具>选项>编辑器选项卡将您的VBA IDE设置为始终"Require variable declaration" Option Explicit 将添加到项目中的每个模块,您将不会遇到不正确的变量调用 .

    现在 Objects 无法使用 ObjectName = ... 分配 . 它们必须是 Set ,使用 Set ObjectName = ... ,并且返回值必须与要设置的对象的类型相同 .

    如果你 Dim rng as Range 那么 Set rng = ... 右侧的方法必须返回相同类型的对象,否则将发生错误 .

    您的 What:=Accessibility, 正在尝试查找可能不存在的名为Accessibility的变量的内容 . 找到字符串 "Accesibility" 即使嵌入其他字符中也会起作用 LookAt:=xlPart .

    总结一下:

    定义你的对象 Dim rng as Range

    并改变你的路线

    rng = ThisWorkbook.Sheets("Sheet2").Column(1).Find(What:=Accessibility, _
                    LookIn:=x1Values, LookAt:=x1Whole, MatchCase:=True)
    

    至:

    With ThisWorkbook.Sheets("Sheet2").Range("A:A")
        Set rng = .Find(what:="Accessibility, LookIn:=xlValues, LookAt:=xlPart)   
    End With
    

    应该留给你一个可以使用的 rng.value .

相关问题