繁体   English   中英

VB.NET excel同时删除多个列

[英]VB.NET excel deleting multiple columns at the same time

我正在尝试删除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)行,它说:

类型不匹配。 (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

只需删除编号最小的列N次,即可反映要删除的行中的列数。 以编程方式处理Excel时,最好不要使用列号而不是字母。 如果您需要一个代码示例,请告诉我,我会发布一个。

编辑:

这是一个代码示例,它可以满足您的需求:

xlSheet.Columns(i).delete

你要

xlSheet.Range(arrayLetters)

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

我认为实现的重要部分(我最初没有)是你必须使用数字作为列而不是字母。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM