改变行selecte = sh.Range(“C”&Rows.Count).End(xlUp).Row

我有这个excel vba代码,可以帮助显示C16列的combobox,直到excel的最后一行。 但是,我希望它只显示行C16 – C20和C25 – 最后一行。 我怎样才能用我现有的代码来实现这一点? 我认为我指向的代码行可能会改变,但我不知道如何使用它。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Count = 1 And Target.Row > 15 And Target.Column = 3 Then Dim e As Long Dim sh As Worksheet Set sh = Sheets("Setting") If Not IsArray(priArray) Then e = sh.Range("C" & Rows.Count).End(xlUp).Row '<<<<<<<< priArray = sh.Range("C5:C" & e).Value2 End If Call ShowComboBox Else Call HideComboBox End If End Sub 

即使该范围已经联合,您也不能从不连续的范围设置数组的元素(又名 )。 你将不得不逐个构build它。

 Dim priArray As Variant Dim c As Long, e As Long With Worksheets("Setting") ReDim priArray(0) For e = 16 To .Range("C" & .Rows.Count).End(xlUp).Row Select Case e Case 16 To 20, Is >= 25 priArray(UBound(priArray)) = .Range("C" & e).Value2 ReDim Preserve priArray(UBound(priArray) + 1) Case Else 'do nothing End Select Next e ReDim Preserve priArray(UBound(priArray) - 1) End With 'do something with the loaded priArray here