基本上,我正在尝试做的是:
------A--------B-------C-------D------
1 Date Weight Misc ID*
2 2014-06-12 210 445556
3 2014-07-13 150 546456
4 2014-08-14 265 546456
5 2014-09-15 655 655654
6 2014-10-16 87 546656
7 2014-10-17 1552 545488
8 2014-11-18 225 546545
我有一个按钮,我希望它运行一个宏来检查A列中的日期是否属于当前月份。我尝试过使用
Month(Date)
但它会检查整个日期,而不是仅检查月份。
如果colmumn A中单元格中的月份等于当前月份,我希望它复制与该特定单元格对应的整行信息。例如:当前月份是11月时,我希望它复制A8 + B8 + C8 + D8,然后我将该信息粘贴到一个完整的不同工作簿中。
请记住,我对VBA完全不熟悉,但这是我到目前为止所提出的:
Sub dat()
Dim rng As Range
Dim dat As Date
dat = Month(Date)
For Each rng In Range("A2:A100")
If rng.Value = dat Then
Range("???").Copy
Range("A1").PasteSpecial
End If
Next
End Sub
什么都没发生。如果我将其更改为dat=Date
,则它仅适用于此特定日期,并且需要永久运行1000个单元格。
我在想是否可以某种方式使用Cells(Rows.Count, "A").End(xlUp).Value = Month(Date)
。这甚至可能吗?
编辑:要粘贴到其他工作簿中,我使用了以下命令:
Dim wb As Workbook
Set wb = Workbooks.Open("C:\Users\....DOCUMENT.xlsm")
然后粘贴:
wb.Sheets("Sheet1").Range("A" & NextDest & ":F" & NextDest).PasteSpecial
答案 0 :(得分:0)
只需将“目标表”更改为您要复制到的工作表的名称。
Sub dat()
Dim LastRow As Long
Dim CurRow As Long
Dim NextDest As Long
Dim ws As Worksheet
Set ws = Sheets("SOURCE SHEET")
LastRow = ws.Range("A" & Rows.Count).End(xlUp).Row
For CurRow = 2 To LastRow
If IsDate(ws.Range("A" & CurRow).Value) = True Then
If Month(ws.Range("A" & CurRow).Value) = Month(Date) Then
ws.Range("A" & CurRow & ":D" & CurRow).Copy
NextDest = Sheets("DESTINATION SHEET").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("DESTINATION SHEET").Range("A" & NextDest & ":D" & NextDest).PasteSpecial
Else
End If
Else
ws.Cells(CurRow, 1).Interior.Color = RGB(255,0,0)
End If
Next CurRow
End Sub
编辑:您的DESTINATION SHEET现在将在最后一次使用的行之后添加行。此外,代码将检查该值是否为日期,如果不是日期则会突出显示。
答案 1 :(得分:0)
更改此
If rng.Value = dat Then
要
If month(rng.Value) = dat Then