Excel VBA CASE与列表比较



不太熟悉VBA,但能够谷歌/修改下面的宏。宏用于查看列标头并删除与某些文本不匹配的列。宏已按预期工作。我想知道是否有可能在xls表中列出列表(例如"内部"中的a栏)。工作表)并在那里更新列表而不是在代码中更新?在未来,我需要添加/修改标题,我需要保持和更喜欢只是简单地更新列在xls工作表比在宏本身。我相信可以使用数组,但不确定如何正确编码。

Dim lcol As Long
Dim vtfc As Long
lcol = ActiveSheet.Cells.Find(What:="*", SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, LookIn:=xlValues).Column

For vtfc = lcol To 1 Step -1
Select Case Cells(1, vtfc)
Case "Qty", "Product", "License ID", "Name", "Site Type", "Region", "Country", "State", "City", "Street", "Zip Code",  "Global Access", "Start Date", "Term"
'Will do nothing if the value is matched
Case Else
Columns(vtfc).Delete
End Select
Next

在这种情况下,使用Worksheetfunction.Countif来识别一个范围是否包含标头。
因此,将您的Select Case语句替换为:

If Worksheetfunction.Countif(Range_reference, Cells(1, vtfc)) > 0 Then
'Do nothing
Else
Columns(vtfc).Delete
End If

我把Range_reference,替换为vba范围,无论你想保持标题列表(例如Activeworkbook.Sheets("Headers").Range("A:A"))

相关内容

  • 没有找到相关文章

最新更新