2014-09-04 3 views
0

Я новичок в программировании VBA и получил некоторые проблемы с этим кодом. Он должен проверить, существует ли место хранения и если в этом месте есть назначенная ему статья. Это уже сработало, но теперь это не будет «Если ячейки (i, 5) .Text Is Nothing», и поэтому GoTo-line перескакивает.VBA Cells (i, 5) .Text

If Cells (i, 5) .Value не работает а также ..

Любая помощь приветствуется.

Dim x As String 
Dim z As String 
Dim i As Integer 

Tabelle3.Activate 

x = InputBox("Please insert the storage place, that is to be emptied") 
Cells(3, 2) = x 

i = 1 
On Error GoTo Ende 
Do Until ActiveSheet.Cells(i, 5) = x Or i = 10 'i=amount of available storage places 
i = i + 1 
Loop 

On Error GoTo Ende 
If Cells(i, 5).Text Is Nothing Then 
Exit Sub 
ElseIf ActiveSheet.Cells(i, 6).Value Is Nothing Then 
MsgBox "This storage place has no article in it!" 
Exit Sub 
Else 
z = "" 
Cells(i, 6) = z 
MsgBox "Emptying the storage place " & ActiveSheet.Cells(i, 6) & " was successfull" 
End If 

Ende: 
If Err.Number Then 
MsgBox "This storage place doesn't exists or was entered incorrectly" 
End If 

End Sub 
+0

BTW. Использование инструкции 'On Error GoTo Ende' дважды в подпрограмме не является обязательным. 'On Error' действителен в течение всего времени выполнения кода. Чтобы программа была более понятной с ее поведением, вы всегда должны ставить оператор «On Error» в начало вашего подфункции или функции, и если у вас все еще есть ошибки в коде, НЕ ИСПОЛЬЗУЙТЕ его, пока не убедитесь, что выключение ошибок безопасно или намеренно. Эта проблема решилась бы сама, если бы вы позволили компилятору рассказать вам, где произошла ошибка. –

+0

Кроме того, чтобы помочь вам на вашем пути - рассмотрите возможность использования 'Debug.Print' и немедленного окна, чтобы проверить, дает ли ваш оператор результат, который вы хотите. –

ответ

3

Is Nothing для объектов.

Если вы хотите проверить, пуст ли клетка вы могли

If Len(cells(1,1)) = 0 then

или

If IsEmpty(cells(1,1)) then

или

If cells(1,1) = vbNullString

ой!

быть осторожным, используя .Text свойство, потому что если вы имели, например, дата или номер в ячейке и ширина столбца была низкая стоимость и содержание не будет соответствовать и дисплей ## затем .Text вернется ## вместо фактическое значение. WYSIWYG

+1

+ 1 Для ячеек, которые могут иметь пробелы, и вы хотите их рассмотреть, тогда также можно использовать 'if (len (trim (cells (1,1) .Value)) = 0 then' –

+0

Удивительно, спасибо большое! –

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