Я пытаюсь удалить более одного столбца на моем листе excel.VB.NET excel удаляет несколько столбцов одновременно
For Each lvi In ListView1.Items
If lvi.Checked = True Then
arrayLetters = lvi.SubItems(1).Text & ":" & lvi.SubItems(1).Text & "," & arrayLetters
End If
Next
arrayLetters = arrayLetters.Substring(0, arrayLetters.Length - 1)
Dim rg As Excel.Range = xlSheet.Columns(arrayLetters)
rg.Select()
rg.Delete()
Значение arrayLetters является "G: G, F:". По какой-то причине это, похоже, не работает, как только оно туда попадет, чтобы удалить их! Единственная причина, по которой я делаю это, заключается в том, что она не обновляет таблицу и петлю на другую. Другими словами, если я удаляю каждый отдельно, то столбец перемещается, и письмо не будет тем же самым, что и дальше.
Ошибка на Dim гк Как Excel.Range = xlSheet.Columns (arrayLetters) линии, и он говорит:
Несоответствие типа. (Исключение из HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH))
Любая помощь будет замечательной!
Дэвид
решаемые
For Each lvi In ListView1.Items
If lvi.Checked = False Then
arrayLetters = lvi.SubItems(2).Text & "," & arrayLetters 'Puts numbers in BACKWORDS
End If
Next
arrayLetters = arrayLetters.Substring(0, arrayLetters.Length - 1)
Dim theNumbers As String() = arrayLetters.Split(",")
Dim num As Integer = 0
xlApp.ScreenUpdating = False
For Each num In theNumbers
xlSheet.Columns(num).delete() 'Deletes columns in reverse order (7,5,4...)
Next
У меня он настроен как A-Z, тогда AA-AZ, BB-BZ и т. Д., Поэтому было бы хорошо, если бы я мог использовать это. Тем не менее, я пробовал ваш код, и он работает для первого прохода, но ошибка во втором ... – StealthRT
Просто имейте в виду, что столбец (1) - это столбец A. Также, как и Remou, вы можете попробовать получить Ассортимент. Еще одна вещь, которая стоит попробовать: Столбцы («F: G»). Удалить – Davido
Я использовал ваш код, но все же сделал arrayLetters, но получил только числа столбцов вместо букв и ** ORDERED THEM BACKWORDS **, измените порядок столбцов при каждом удалении. – StealthRT