VBA:简单日期宏不起作用

时间:2015-09-04 16:54:58

标签: excel vba excel-vba

我有两个文本框,分别在两个框中输入两个日期。我希望宏遍历一列日期并隐藏文本框中输入的两个日期之间的所有日期。第一个文本框日期应该是过去的第二个文本框日期。

我有以下代码:

Set ws2 = Sheets("Test")

Dim StartDate As String
Dim EndDate As String

ws2.Range("G2").Value = TXTDate1.Text
ws2.Range("G3").Value = TXTDate2.Text

StartDate = ws2.Range("G2").Value ' Start Date in  test tab
EndDate = ws2.Range("G3").Value

StartDate = Trim(ws2.Range("G2").Value)
EndDate = Trim(ws2.Range("G3").Value) **'Reverses the format from American date format to English date format**

Set temprange = ActiveSheet.Range("D5").End(xlDown)
Set temprange = Range(Range("D6"), temprange)


For Each z In temprange

z.EntireRow.Hidden = True

If TXTDate1.Value <> "" Then

If z.Offset(0, 5).Value > StartDate Then

If  z.Offset(0, 5).Value < EndDate Then **'PART THAT IS NOT WORKING**

z.EntireRow.Hidden = False

End If

End If

End If

Next z

问题是第二个条件不起作用。宏未识别结束日期之前的日期。如何启用宏以识别第二个条件?

1 个答案:

答案 0 :(得分:0)

我已使用AutoFilter Method根据您的 startdate enddate vars显示/隐藏日期。

Sub Button1_Click()
Sheet4.Select

'Copy the data
 Sheets("Sheet1").Range("A7").Copy
Sheets("Sheet1").Range("D7").Copy
Sheets("Sheet1").Range("G7").Copy
Sheets("Sheet1").Range("C10").Copy
Sheets("Sheet1").Range("A12").Copy
Sheets("Sheet1").Range("C12").Copy
Sheets("Sheet1").Range("A14").Copy
Sheets("Sheet1").Range("A16").Copy
Sheets("Sheet1").Range("A29").Copy
'Activate the destination worksheet
Sheets("Sheet4").Activate
 'Select the target range
Sheets("Sheet4").Range("A6").Paste
Sheets("Sheet4").Range("E6").Paste
Sheets("Sheet4").Range("H6").Paste
Sheets("Sheet4").Range("G8").Paste
Sheets("Sheet4").Range("A10").Paste
Sheets("Sheet4").Range("G10").Paste
Sheets("Sheet4").Range("A12").Paste
Sheets("Sheet4").Range("A14").Paste
Sheets("Sheet4").Range("A19").Paste
'Paste in the target destination
ActiveSheet.Paste

Application.CutCopyMode = False



End Sub

我隐藏了通常与.AutoFilter关联的小下拉箭头。您必须将格式掩码更改为EN-UK格式以匹配您的数据(d / m / yy ......?)。

可以通过常规方式或通过使用数据上的清除命令来“取消隐藏”行►排序&amp;过滤或简单地关闭.AutoFilter。