2013-05-28 4 views
0

Sub Test() '' тест Macro 'VBA: значение Магазин переменной

' Dim aRange Как 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 Диапазон 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 мужчин»

Погрешность в встречается, Set genderAndDiscipline = ActiveCell.Offset(-1, 0).Value

+0

Где происходит ошибка? –

+0

Отредактировано мое сообщение. – HerrWalter

+0

Попробуйте удалить ключевое слово 'Set' из этой строки –

ответ

3

genderAndDiscipline объявлена ​​как строка.

Правильный способ назначения строки используется Let вместо Set (который используется для назначения объектов).

Для того чтобы избавиться от ошибки, удалите слово Set из строки, вызывающей ошибку, или замените Set на Let.

То есть:

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

или

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

Спасибо, хорошее объяснение. Учиться чему-то сегодня – HerrWalter

1

Удалить Set из Set genderAndDiscipline = ActiveCell.Offset(-1, 0).Value

1

Set ключевое слово работает с Objects. Поскольку вы ищете только для сохранения ценности, вы должны оставить это. то есть изменения:

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

к:

genderAndDiscipline = ActiveCell.Offset(-1, 0).Value 
Смежные вопросы