VB.NET excel同时删除多列

我试图删除我的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:F” 。 由于某种原因,似乎并没有工作,一旦它到达那里删除它们! 只有这样做的原因是,它不会更新表和循环到另一个。 换句话说,如果我单独删除每一个,那么这个列移动,这个字母就不会和下一个一样。

该错误是在Dim rg As Excel.Range = xlSheet.Columns(arrayLetters)行,它说:

types不匹配。 (从HRESULTexception: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 

只需删除最低编号的列N次,以反映您想要删除的行中有多less列。 以编程方式处理Excel时,最好脱离列号而不是字母。 如果你需要一个代码示例,让我知道,我会发布一个。

编辑:

下面是一个代码示例,可以实现你想要的function:

 xlSheet.Columns(i).delete 

你要

 xlSheet.Range(arrayLetters) 

我估计,那是Range,而不是Column。

我认为要实现的重要部分(我最初并不知道)是,你必须使用数字而不是字母。