我正在处理创建报告的Excel工作表。
我允许用户输入月份(作为整数:例如:1表示1月,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
答案 0 :(得分: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
然后,您可以复制要在报告中使用的可见行。
答案 1 :(得分:0)
问题在于数据类型。 MONTH
返回一个值(整数),但InputBox
函数返回一个字符串。运行以下代码时,您可以看到问题(单元格1-Jan-2012
中的A1
一直到单元格1-Dec-2012
中的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)
)。