0

我正在制作一个创建报告的 Excel 表。

我允许用户输入月份(作为整数:例如:1 表示 Jan,2 表示 Fev,依此类推)。

我可以将它收集在一个变量中,比如 x。

现在,我想使用这个 x 值来搜索为特定月份输入的所有日期并创建报告。我正在尝试使用 month() 函数。我怎么无法将它与 x 进行比较。x 被定义为一个整数变量。

我应该用什么来解决这个问题。?

Function mois_de_date()


    mois = InputBox("Choisissez le mois (Entrer la valeur Numérique)!!! (1 pour Janvier, 2 pour Fév .... )", "Titre")

 If mois > 12 & mois <= 0 Then
    If mois = 1 Then
    MsgBox "Janvier"
    End If
    If mois = 2 Then
    MsgBox "Février"
    End If
    If mois = 3 Then
    MsgBox "Mars"
    End If
    If mois = 4 Then
    MsgBox "Avril"
    End If
    If mois = 5 Then
    MsgBox "Mai"
    End If
    If mois = 6 Then
    MsgBox "Juin"
    End If
    If mois = 7 Then
    MsgBox "Juillet"
    End If
    If mois = 8 Then
    MsgBox "Août"
    End If
    If mois = 9 Then
    MsgBox "Septembre"
    End If
    If mois = 10 Then
    MsgBox "Octobre"
    End If
    If mois = 11 Then
    MsgBox "Novembre"
    End If
    If mois = 12 Then
    MsgBox "Décembre"
    End If
 End If

' 在主子里面

mois_de_date

If month(Date_de_survenance) = mois Then
    Date_to_search = Date_de_survenance
    MsgBox "Correct"
End If
4

2 回答 2

0

问题在于数据类型。MONTH返回一个值(整数),但该InputBox函数返回一个字符串。当您运行以下代码时,您可以看到问题(使用1-Jan-2012in cell A1,一直到1-Dec-2012in cell A12

Sub test()
  Dim x
  Dim c As Range
  x = InputBox("what month?", "month to use", "1")
  MsgBox "x is " & x

  monthValue = Val(x)

  For Each c In Range("A1", "A12").Cells
    If Month(c.Value) = x Then
      MsgBox "the matching cell is in " & c.Address
    End If
    If Month(c.Value) = monthValue Then
      MsgBox "I can match the value at " & c.Address
    End If
  Next c
End Sub

当您运行此程序时,您将看到显示的消息是“我可以匹配...的值”而不是“匹配的单元格在...”。换句话说 -Month(c.Value)不等于返回的任何东西InputBox,您必须明确地进行转换(Val(x)在上面的示例中使用)。

于 2013-08-05T15:05:51.633 回答
0

假设我们在 A 列中有日期。以下将隐藏与特定月份不匹配的行:

Sub durall()
    Dim x As Integer, r As Range
    x = 5
    Dim DateRange As Range
    Set DateRange = Intersect(Range("A:A"), ActiveSheet.UsedRange)
    For Each r In DateRange
        If Month(r.Value) <> x Then
            r.EntireRow.Hidden = True
        End If
    Next
End Sub

然后,您可以复制可见行以在报告中使用。

于 2013-08-05T14:34:38.800 回答