#string #vb.net
#строка #vb.net
Вопрос:
Я использую взаимодействие Excel с VB.net . Моя проблема заключается в использовании string.Удалить. Я пытаюсь удалить последние 3 символа из ячеек, которые всегда содержат строки с 11 символами.
Я написал некоторый код для изменения значения ячеек в диапазоне.
Dim lastrow5 As Integer
lastrow5 = xlWsheet2.UsedRange.Rows.Count
Dim myRange5, z As Excel.Range
myRange5 = xlWsheet2.Range("E1:E" amp; lastrow5)
For Each z In myRange5
z.Value = z.Value.remove(8, 3)
Next
Но когда я пытаюсь использовать Remove, я получаю сообщение об ошибке:
Object Reference not set to an instance of an Object
.
Может ли кто-нибудь направить меня в правильном направлении?
Комментарии:
1. Это зависит от того, где находится ошибка. Это означает, что z, value, xlWsheet2, UsedRange или Rows равны нулю (ничего). Просто добавьте проверки на null.
Ответ №1:
Я думаю, что «the_lotus» правильный. Исправляет ли это ошибку?
Dim lastrow5 As Integer
lastrow5 = xlWsheet2.UsedRange.Rows.Count
Dim myRange5, z As Excel.Range
myRange5 = xlWsheet2.Range("E1:E" amp; lastrow5)
For Each z In myRange5
If cell.Value Is Not Nothing Then z.Value = z.Value.remove(8, 3)
Next
Редактировать: решение Ed (с форматированием) было:
Dim lastrow5 As Integer lastrow5 = xlWsheet2.UsedRange.Rows.Count
Dim myRange5, z As Excel.Range myRange5 = xlWsheet2.Range("E1:E" amp; lastrow5)
For Each z In myRange5
If (z.Value Is Nothing) Then
ElseIf z.Value.ToString = "null" Then
Else z.Value = z.Value.ToString.Remove(8, 3)
End If
Next
Комментарии:
1. Да! Корень проблемы заключался в том, что в нескольких ячейках (из сотен) ничего не было, поэтому их нужно было отсеять с помощью IF THEN ELSE. Вот код, который я придумал для обращения к пустым ячейкам: Уменьшите lastrow5 как целое lastrow5 = xlWsheet2.UsedRange.Rows. Считайте Dim myRange5, z как Excel. Диапазон myRange5 = xlWsheet2.Range(«E1: E» amp; lastrow5) Для каждого z в myRange5, если (z.Значение равно нулю), То в противном случае, если z.Значение. toString = «null», Тогда еще z.Value = z.Value. toString. Удалите (8, 3) End, если следующий