0

I am working on an excel sheet which creates report.

I allow the user to input the month (as an integer: for ex: 1 for Jan, 2 for Fev and so on).

I am able to collect it in a variable say x.

Now, I want to use this value of x to search all the date entered for the particular month and create the report. I am trying to use month() function. How ever I am unable to compare it with x. x is defined as an integer variable.

What should I use to be able to solve this.?

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

' Inside main sub

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 cellA1から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 に答える