2015-07-29 3 views
0

Я строю программу в VBA, которая будет в основном вставлять текст в электронную таблицу, используя excel для VBA. Следующая ошибка заявил случаться:Excel VBA - Ошибка использования метода Range.Find

error on the xlvalues on this line: FoundCell = oSheet.Range("A:A").Find(What:=currentDay, LookIn:=xlvalues) 

error is xlValues is not declared or may not be accessible due to its protection level 

Код:

' Find Current Day In Excel Sheet 
Dim currentDay As String = String.Format(DateTime.Now.ToString("dd/MM/yyyy")) ' Todays Date In Format To Search Spreadsheet 
Dim FoundCell As Excel.Range 

FoundCell = oSheet.Range("A:A").Find(What:=currentDay, LookIn:=xlvalues) 

If Not FoundCell Is Nothing Then 
MsgBox(currentDay & " Found In Row: " & FoundCell.Row) 
Else 
MsgBox(currentDay & " Not Found In Sheet " & oSheet.Name) 
End If 

Любая помощь будет много appricated,

Спасибо, Шон

+0

Насколько я знаю, это может быть связано с импортом excel, что его следует делить как? – MayContainVennom

ответ

1

сообщение об ошибке, возможно, вводит в заблуждение, потому что параметры выглядят нормально. Метод Range.Find возвращает объект диапазона, поэтому в VBA вы должны использовать ключевое слово Set:

Set FoundCell = oSheet.Range("A:A").Find(What:=currentDay, LookIn:=xlvalues) 

Вы можете бороться с поиском даты, потому что хранит Excel их как числа, а затем выводит их в качестве даты. В зависимости от ваших данных вам может потребоваться поиск форматированного текста или с помощью переменной Date.

Если вы пишете это в VBA, эта линия не будет работать:

Dim currentDay As String = String.Format(DateTime.Now.ToString("dd/MM/yyyy")) 

Вы должны объявлять переменные отдельно от инициализации их.

Dim currentDay As String 
currentDay = Format(Date(),"dd/MM/yyyy") 
0

Как и в ChipsLetten (но немного медленнее!), Я изменил код, как показано ниже.

Sub notableopenfile() 

    ' Find Current Day In Excel Sheet 
    Dim currentDay As String 
    'currentDay = Format(DateTime.Now.ToString("dd/MM/yyyy")) ' Todays Date In Format To Search Spreadsheet 
    currentDay = Format(Now(), "dd/MM/yyyy") 
    Dim FoundCell As Range 

    Set FoundCell = ActiveSheet.Range("A:A").Find(What:=currentDay, LookIn:=xlValues) 'need 'set' here 

    If Not FoundCell Is Nothing Then 
     MsgBox (currentDay & " Found In Row: " & FoundCell.Row) 
    Else 
     MsgBox (currentDay & " Not Found In Sheet " & ActiveSheet.Name) 
    End If 

End Sub 
Смежные вопросы