Excel Vba宏代码用于搜索列变量

时间:2013-08-05 14:18:19

标签: vba excel-vba excel

我正在处理创建报告的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

2 个答案:

答案 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))。