我一直在整理一个宏,它从单元格中读取Sheet1
并将它们放在一个 ComboBox 上Sheet2
此宏将所选单元格的列复制到Sheet2
.
到目前为止,我已经能够做到这一点,但它需要引用每个单元格并每次运行宏。
一旦 ComboBox 值发生更改,我正在寻找该列的自动更新,并且仅使用一个“If 语句”来复制和粘贴该列。
到目前为止,这是我的代码:
Option Explicit
Sub ComboBox1_Change()
Dim cmbx As ComboBox
Dim myRange As Range
Dim i As Integer
Dim c As Range
Set cmbx = Sheet2.ComboBox1
cmbx.Clear
Set myRange = ActiveWorkbook.Sheets("Sheet1").Range("C4:I4")
For Each c In myRange
If c.Value <> "" Then
cmbx.AddItem c.Value
cmbx.ListIndex = 0
End If
Next
If (cmbx.ListIndex = 0) Then
With ActiveSheet
.Range(.Range("D4"), .Range("D" & .Rows.Count)).Copy
End With
Sheets("Sheet2").Paste Destination:=Sheets("Sheet2").Range("B4")
End If
If (cmbx.ListIndex = 1) Then
With ActiveSheet
.Range(.Range("E4"), .Range("E" & .Rows.Count)).Copy
End With
Sheets("Sheet2").Paste Destination:=Sheets("Sheet2").Range("B4")
End If
If (cmbx.ListIndex = 2) Then
With ActiveSheet
.Range(.Range("F4"), .Range("F" & .Rows.Count)).Copy
End With
Sheets("Sheet2").Paste Destination:=Sheets("Sheet2").Range("B4")
End If
If (cmbx.ListIndex = 3) Then
With ActiveSheet
.Range(.Range("G4"), .Range("G" & .Rows.Count)).Copy
End With
Sheets("Sheet2").Paste Destination:=Sheets("Sheet2").Range("B4")
End If
If (cmbx.ListIndex = 4) Then
With ActiveSheet
.Range(.Range("H4"), .Range("H" & .Rows.Count)).Copy
End With
Sheets("Sheet2").Paste Destination:=Sheets("Sheet2").Range("B4")
End If
If (cmbx.ListIndex = 5) Then
With ActiveSheet
.Range(.Range("I4"), .Range("I" & .Rows.Count)).Copy
End With
Sheets("Sheet2").Paste Destination:=Sheets("Sheet2").Range("B4")
End If
End Sub
编辑:
刚刚意识到此代码仅在 ListIndex 为 0 并且ListIndex不是正确使用的函数时才有效。这适用于 ComboBox 中的第一项。还不确定需要改变什么。
任何帮助表示赞赏。提前致谢。