2015-04-29 2 views
1
If Sheets("DealComparison").Cells(z + 1, 1) <> "" Then 

Действительно ли это утверждение? Я хочу, чтобы проверить, если конкретный лист не равен NULL в VBANot Null in VBA

Dim x As Integer 

    x = 2 

Dim z As Long 
Dim Myarray(1 To 9) As String 

    For z = 1 To 9 
     If Trim(Sheets("DealComparison").Cells(z + 1, 1)) <> "" Then 
      Myarray(z) = Sheets("DealComparison").Cells(z + 1, 1) 

      Debug.Print Myarray(z) 
     End If 
    Next z 

Это полный код ребята,

Теперь то, что я хочу, я хочу, чтобы проверить, если он пуст, и если он не пуст, я должен его передать.

Так whaat я должен упомянуть в заявлении еще так, что было бы хорошо ..

+0

Что такое 'z' как? Немного больше вашего кода было бы полезно, пожалуйста. Кроме того, возникает ли у вас конкретная проблема? – Gareth

+0

Это нормально проверять для ячейки, которая не содержит текста (значение ячейки никогда не будет NULL) –

+0

Приносим извинения за неудобства, Z определяется как целое. – Benu

ответ

2

Если вы хотите, чтобы определить, есть ли какой-либо объект является NULL, вы должны использовать IsNull функцию:

Debug.Print IsNull(Sheets("DealComparison").Cells(z + 1, 1)) 

или

Debug.Print IsNull(Sheets("DealComparison")) 

, чтобы проверить, является ли конкретный лист NULL, как задает ваш вопрос.

Если вы хотите проверить строку нулевой длины является более эффективным, чтобы проверить с помощью Len(string) = 0 чем string = "", как строки хранятся в памяти с числом символов первого, а затем это число символов и оканчивающихся нулем характер. Это делает длину строки более доступной, чем тестирование символов, и позволяет избежать операций выделения памяти, которые будут задействованы.

If Len(Trim(Sheets("DealComparison").Cells(z + 1, 1))) = 0 Then 
     Myarray(z) = Sheets("DealComparison").Cells(z + 1, 1) 

     Debug.Print Myarray(z) 
    End If 

Там интересный обзор о том, как строки хранятся в VB6/VBA here.

4

Это работает для проверки, если ячейка (строка г + 1, столбец A) на DealComparison листа равна нулю или нет, Можно также использовать VBNullString

Такие, как:

If Sheets("DealComparison").Cells(z + 1, 1) <> VBNullString Then 
+0

Должен ли я использовать VBNullString или «» в порядке? – Benu

+1

Либо используйте «" или vbnullstring, они достигнут того же результата. Не используйте «» (обратите внимание на пробел) – Zerk

1

Да до тех пор, как "Z" является длинное целое. Хе-хе, смешное предложение.

+0

Извините @ Jelovac, я понятия не имею, кто проголосовал за него. – Benu

+0

Это был я. Я прошу прощения. Случайное нажатие вниз (Плохое целевое умение :)). Я исправил это, хотя. – Dubison

+0

Спасибо, я не хочу никого разочаровать :) – Benu

3

Поскольку у вас могут быть пробелы в вашей камере, иногда они не оцениваются в приведенном выше утверждении. поэтому я всегда использую функцию TRIM, а также ..

If TRIM(Sheets("DealComparison").Cells(z + 1, 1)) <> "" Then