2016-02-23 4 views
0

У меня есть код vba в доступе, который получает данные с страницы excel и передает ее в excel через переменные с помощью кнопки в форме доступа. Если некоторые запрошенные данные не находятся в файле excel, я хочу, чтобы он показывал msgbox, показывающий, какие данные не были переданы. Для этого я использую логические переменные и «IF». Я проверяю, является ли переменная с сохраненными данными из excel пустым.Проверка того, что строка пуста, не работает

Var1IF = True 
Var1 = Sheet1.Cells(95, 80).Value 
If Var1 = "" Then 
    Var1IF = False 
End If 

Независимо от того, что я делаю Var1IF всегда возвращается как False. Даже если у Var1 есть данные в нем или нет (поскольку ячейки из excel могут иметь как числа, так и буквы, Var1 является строкой).

Я даже сделал противоположное, и он снова вернулся Ложные:

Var1IF = True 
    Var1 = Sheet1.Cells(95, 80).Value 
    If Var1 <> "" Then 
     Var1IF = False 
    End If 

Edit: Объявления:

Dim oXLApp As Object, wb As Object 
Dim Sheet1 As Object 
Dim Var1 as String 
Dim Var1IF as Boolean 

Set oXLApp = GetObject(, "Excel.Application") 
Set Sheet1 = oXLApp.Sheets("Sheet1") 
+0

'var1' - это просто не пустая строка; что делает 'debug.print Sheet1.Cells (95, 80) .Value, len (Sheet1.Cells (95, 80) .Value)' show? (ctrl + g, чтобы увидеть вывод) –

+0

Он печатает значение этой ячейки. Я знаю, что var1 - это просто не пустая строка. Тогда почему Var1IF возвращает False, так как условие IF не проходит? По какой-то причине в моем коде Var1 = "" и Var1 <> "" всегда правильно. –

+0

У меня такое чувство, что мы не видим полной картины. Пожалуйста, добавьте свои объявления переменных в код (какие типы данных являются Var1, Sheet1?) – Andre

ответ

0
Set Sheet1 = oXLApp.Sheets("Sheet1") 

Вы не должны открыть книгу в первую очередь? Вы уверены, что Sheet1 на самом деле что-то говорит?


Во всяком случае, пожалуйста, попробуйте этот код:

Var1 = Sheet1.Cells(95, 80).Value 
Debug.Print "Value: <" & Var1 & ">" 
If Var1 = "" Then 
    Debug.Print "Var1 is empty string" 
End If 
If Var1 <> "" Then 
    Debug.Print "Var1 is NOT empty string" 
End If 

и проверить Немедленное окно. Я был бы очень удивлен, если вы получите обе отладочные строки «Var1».

+0

Что касается вашего первого вопроса, чтобы кнопка работала, вы должны иметь файл excel, открытый urself (так как это не один конкретный файл excel, пользователь решает, какой из них). Во-вторых, поскольку я ответил на свой вопрос, я исправил проблему, сохранив данные от Var1 до другой переменной и по какой-то нелепой причине это сработало. –

+0

@PanagiotisGianniotis: Хм, хорошо. Думаю, этот вопрос должен быть закрыт как не воспроизводимый. – Andre

0

Это просто смешно. Я сохранил данные из Var1 в другую переменную, получив ее от excel, и проблема решена сама. Я проверил его примерно 10 раз, и он просто работал, а предыдущий путь - нет.

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