#vba #excel
#vba #преуспеть
Вопрос:
У меня есть VB-скрипт со строкой, которая выглядит следующим образом:
Set startCell = referenceCell.EntireColumn.Find(tmp).offset(0,columnOffset)
Но я хочу указать find
(для точного поиска данного слова в каждом столбце) что-то вроде:
Set startCell = referenceCell.EntireColumn.Find(tmp, lookat:=xlWhole).offset(0,columnOffset)
все в соответствии с
http://msdn.microsoft.com/en-us/library/office/ff839746 (v=office.15).aspx
Но это дает мне синтаксическую ошибку. (Я ненавижу VB)
Я тоже пробовал
Set tmp = "Precondition" amp; preconditionNumber
Set startCell = ReferenceCell.EntireColumn.Find(what:=tmp,lookat:=xlWhole).offset(0,columnOffset)
и даже
Set startCell = ReferenceCell.EntireColumn.Find(what:=tmp).offset(0,columnOffset)
ни один из них не работает.
Как я должен вызвать Find
функцию, чтобы получить a Whole Word
-Search?
Объявление переменной выглядит следующим образом:
Dim startCell
for preconditionNumber = 0 to 15
Set startCell = Nothing
tmp = "Precondition" amp; preconditionNumber
Set startCell = referenceCell.EntireColumn.Find(tmp).offset(0,columnOffset)
...
Вот точное сообщение о синтаксической ошибке.
Комментарии:
1. Какой тип
tmp
? Если это aString
или aVariant
, вы должны использоватьLet
;Set
для объектов. Какой тип объявлен startCell ? Это должно быть такExcel.Range
.2. Извините, но я понятия не имею. В сообщении об ошибке говорится, что в символе 57 ожидается правая скобка, но она находится в середине идентификатора (если вы используете табуляцию с 4 пробелами). Это не имеет смысла… Если что-нибудь еще придет мне в голову, я дам вам знать.
3. Это именно то, что я имею в виду! Проклятый VBA
4. lol VBScript вы имеете в виду не VBA? или оба … хе-хе
Ответ №1:
Используйте что-то вроде:
Sub luxation()
Dim ReferenceCell As Range, rCol As Range, tmp As String
Dim GotIt As Range, MoveOver As Range, columnOffset As Long
Set ReferenceCell = Range("B9")
Set rCol = ReferenceCell.EntireColumn.Cells
tmp = "happiness"
columnOffset = 2
Set GotIt = rCol.Find(what:=tmp, after:=rCol(1), lookat:=xlWhole)
Set MoveOver = GotIt.Offset(0, columnOffset)
MoveOver.Select
End Sub
Исправить ненависть к VBA еще проще, просто повторите:
VBA — мой друг.
30 раз каждое утро
Комментарии:
1. VBA — мой друг.* Психологическое сообщество называет это Стокгольмским синдромом. 😀
2. Я уверен, что если бы я понимал VBA, я был бы поражен этим 🙂 но это один огромный файл, без каких-либо функций, который запускается сверху до кнопки, я даже не смею ничего менять, кроме фактического вызова функции поиска.
3.@theAlse ……….. важно заменить один оператор Find() на серию операторов ……… это позволит нам точно увидеть, какая часть строки Find() завершается ошибкой!