2011-02-25 3 views
0

Я пытаюсь удалить более одного столбца на моем листе 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 

ответ

1

Просто удалите с наименьшим номером столбца N количество раз, чтобы отразить, сколько столбцов в строке вы хотите удалить. Лучше избегать номеров столбцов, а не букв при программном использовании Excel. Если вам нужен пример кода, дайте мне знать, и я отправлю его.

Edit:

Вот пример кода, который делает то, что вы хотите:

xlSheet.Columns(i).delete 
+0

У меня он настроен как A-Z, тогда AA-AZ, BB-BZ и т. Д., Поэтому было бы хорошо, если бы я мог использовать это. Тем не менее, я пробовал ваш код, и он работает для первого прохода, но ошибка во втором ... – StealthRT

+0

Просто имейте в виду, что столбец (1) - это столбец A. Также, как и Remou, вы можете попробовать получить Ассортимент. Еще одна вещь, которая стоит попробовать: Столбцы («F: G»). Удалить – Davido

+0

Я использовал ваш код, но все же сделал arrayLetters, но получил только числа столбцов вместо букв и ** ORDERED THEM BACKWORDS **, измените порядок столбцов при каждом удалении. – StealthRT

1

Вы хотите

xlSheet.Range(arrayLetters) 

Я считаю, что это диапазон, а не колонки.

0

Я думаю, что важная часть реализации (изначально я не изначально) заключается в том, что вам нужно использовать числа для столбцов, а не буквы.

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