-1
Sub test() ' ' test Macro '

    Dim aRange As Range
    Dim i As Integer
    
    Set aRange = Range("A1:A255")
    
    Range("A1").Select
    For i = 1 To aRange.Count - 1
    
        If InStr(ActiveCell.Value, "Last name") Then
            Call CopyContents
        End If
        ActiveCell.Offset(1, 0).Select 
        
    Next i
    
End Sub


Sub CopyContents()
    Dim currentRange As Range
    Dim genderAndDiscipline As String

    Set currentRange = Range(ActiveCell.Address)
    
    'get the gender and dicipline
    Set genderAndDiscipline = ActiveCell.Offset(-1, 0).Value
    'genderAndDiscipline = genderAndDiscipline.Split(" ")
    
End Sub

我正在尝试将单元格值存储在变量中。但不知何故,它一直给我一个编译错误:

所需对象

在我看来,正如调试器所说,我告诉变量显示字符串并且单元格包含字符串。

currentRange 在这里是“A7”,上面的单元格包含一个带有“200m men”的字符串

错误发生在
Set genderAndDiscipline = ActiveCell.Offset(-1, 0).Value

4

3 回答 3

3

genderAndDiscipline被声明为字符串。

分配给字符串的正确方法是使用Let而不是Set(用于分配对象)。

为了摆脱错误,Set从导致错误的行中删除单词,或替换SetLet.

也就是说,使用以下两种替代方法之一(它们是等效的):

genderAndDiscipline = ActiveCell.Offset(-1, 0).Value

或者

Let genderAndDiscipline = ActiveCell.Offset(-1, 0).Value
于 2013-05-28T13:08:45.200 回答
2

Set关键字与Objects. 由于您只是在寻找保存价值,因此您应该忽略它。即改变:

Set genderAndDiscipline = ActiveCell.Offset(-1, 0).Value

至:

genderAndDiscipline = ActiveCell.Offset(-1, 0).Value
于 2013-05-28T13:09:56.407 回答
1

Set从中删除Set genderAndDiscipline = ActiveCell.Offset(-1, 0).Value

于 2013-05-28T13:09:29.030 回答