我是 VBA 新手:',我想知道是否可以在 VBA 中使用 If AND 函数。当 C 列和 D 列填满值时,VBA 将自动复制 A、B 和 E 列并将它们粘贴到另一个工作表。另外,如果可能的话,我想让它变得动态。
例如,我在Sheet1中有这张表:
姓名 | 电话# | 班级 | 毕业了 | 分数 |
---|---|---|---|---|
阿丽亚娜 | 749142 | 9 | 是的 | 3.6 |
布莱恩 | 454364 | 3.7 | ||
哈利 | 143246 | 12 | 是的 | 4 |
麦迪 | 356647 | 10 | 2.9 |
C 列和 D 列需要在两个单元格内都有一个值,然后 VBA 会将 A、B 和 E 列复制到 Sheet2 中的 A、B 和 C 列。
但是,如果出现以下情况,VBA 不会对该行执行任何操作:
只有一列有价值(例如第 5 行)
两列都没有值(例如第 3 行)
我希望这是有道理的:)
View Code
> 将代码粘贴到 Sheet1 模块中微软文档:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Me.Range("C:D")) Is Nothing Then
With Target
If .CountLarge = 1 Then
Dim iR As Long: iR = .Row
If Len(Me.Cells(iR, "C")) > 0 And Len(Me.Cells(iR, "D")) > 0 Then
Dim lastRow As Long, oSht As Worksheet
Set oSht = Sheets("Sheet2")
lastRow = oSht.Cells(oSht.Rows.Count, "A").End(xlUp).Row
If Len(oSht.Cells(lastRow, 1)) > 0 Then lastRow = lastRow + 1
oSht.Cells(lastRow, 1).Resize(1, 3).Value = _
Array(Me.Cells(iR, "A"), Me.Cells(iR, "B"), Me.Cells(iR, "E"))
End If
End If
End With
End If
End Sub