Возникли проблемы с удалением символов из строки в VB.net

#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, если следующий