0

我正在编写比较用户窗体中的两个日期和数组中的列的代码。

如果它介于两者之间,则将整行设置在另一个数组中。

Dim vD1 As Variant                                         
Dim vD2 As Variant
vD1 = UserForm1.TextBox1.Value
vD2 = UserForm1.TextBox2.Value

If vD1 = Empty Then
  vD1 = #1/1/2010#
End If

If vD2 = Empty Then
  vD2 = #1/1/2100#
End If

vD1 = Format(vD1, "General Number")
vD2 = Format(vD2, "General Number")

For i = 1 To 100
  If myArray5(i, 1) >= vD1 Then
    If myArray5(i, 1) <= vD2 Then
      For j = 1 To 8
        myArray6(i, j) = myArray5(i, j)
      Next j
    End If
  End If
Next i

For i = 1 To 100
  If myArray5(i, 1) <= vD1 Then
    If myArray5(i, 1) >= vD2 Then
      For j = 1 To 8
        myArray6(i, j) = Empty
      Next j
    End If
  End If
Next i
4

1 回答 1

0

实际上,这取决于 myArray5 和 myArray6 中的内容,以及它们的格式。有关 Excel VBA 中日期比较方法和函数的更多信息,请查看Excel 开发人员站点中的此链接

此外,从鸟瞰的角度来看,您可以通过将If...Then语句与And语句相结合来改进,例如:

If (myArray5(i, 1) >= vD1) and (myArray5(i, 1) <= vD2) Then _
myArray6(i, j) = myArray5(i, j)

您也可以尝试在代码中添加注释和缩进——这将极大地帮助调试!

于 2013-10-02T18:40:46.687 回答