【发布时间】:2016-03-03 23:22:44
【问题描述】:
大家好,
我是 VBA 的新手,希望您能在以下问题上提供帮助:
我有一个长度不同的字符串数组。我想将数组中每个位置的值与不同长度的不同数组中的所有位置进行比较。
我曾尝试遵循(将其与固定值而不是初学者的数组进行比较,但甚至无法使其正常工作):
Option Explicit
Dim subassys(counter) As Long, Filter1 As String, Filter2 As String, Filter3 As String, Filter4 As String
Sub sub_fitler ()
Sheets("data").Select
ActiveSheet.Range("A1").CurrentRegion.AutoFilter Field:=4, Criteria1:="Spectrum 1"
Range(("E2"), Range("E1").End(xlDown)).Copy
Sheets("Temp").Select
ActiveSheet.Paste
Range("A1").End(xlDown).RemoveDuplicates Columns:=1, Header:=xlNo
Range(ActiveCell, ActiveCell.End(xlDown)).Select
set subassys = Selection
Filter1 = "0"
Filter2 = "ET"
Filter3 = "Assy"
Filter4 = "Normteil"
For counter = 0 To UBound(subassys)
If subassys(counter) = Filter1 Then
ActiveCell.Delete
Exit For
ElseIf subassys(counter) = Filter2 Then
ActiveCell.Delete
Exit For
ElseIf subassys(counter) = Filter3 Then
ActiveCell.Delete
Exit For
ElseIf subassys(counter) = Filter4 Then
ActiveCell.Delete
Exit For
End If
Next counter
Range(ActiveCell, ActiveCell.End(xlDown)).Select
Set subassys = Selection
Sheets("Temp").Range("A1").CurrentRegion.Clear
End sub
我觉得我已经在声明中犯了一个错误——没有将数组的值声明为字符串。但实际上我完全不知道如何让它发挥作用。有人可以帮我解决这个问题吗?
杰克
附言这只是代码的一部分,前后还有其他元素
【问题讨论】:
-
如果您使用Range.Delete method 删除整行或整列,则不必提供选项Shift xlDeleteShiftDirection,因为没有真正的选择。但是,如果您要删除一小组单元格或(如您的情况)单个单元格,则必须指定
Shift:=xlShiftToLeft或Shift:=xlShiftUp。 -
工作表 Temp 上的哪个单元格接收 .Paste?也许A1?这完全悬而未决。