2016-12-04 5 views
1

Ich versuche, alle Dateneinträge, die in einem Benutzerformular Monat und Jahr ausgewählt sind. Ich kann den Code gut laufen lassen, wenn ich das Jahr fest programmiere, aber ich will, dass das Jahr von einer Textbox abkommt. Ich konvertierte den Textbox Wert in eine ganze Zahl unter Verwendung Cint() und dim'd es zu "Jahr" in meiner if Anweisung. Ich kann es zum Arbeiten bringen, wenn ich Cdate("3/1/2016") schreibe, aber ich will sehen, ob es eine Weise gibt, es wie zu laufen: Cdate("3/1/Year"). Ich habe es auf diese Weise versucht und einen Schreibfehler auf dem Cdate bekommen, was ziemlich neu für VBA ist, also entschuldige meine Dummheit.Verwenden einer Variable in codierten Datum

Ignorieren Sie die Variable "Monat", die ich gerade verwendet habe, um den Code zu stoppen und durchzugehen, um zu sehen, ob er in meine if-Anweisung eingehen würde.

Vielen Dank im Voraus.

My-Code

Private Sub OKBtn_Click() 

Dim Sales As Range 
Dim Year As Integer 
Dim Month As Integer 
Dim i As Integer 

Year = CInt(YearText.Value)  
Set Sales = Worksheets("Sales").Range("A4")  

i = 0 
If Sales.Offset(i, 1).Value >= CDate("3/1/2016") And Sales.Offset(i, 1).Value <= CDate(" 3/31/2016 ") Then 
    Month = 1 
End If 
+0

versuchen Sie den Code unten und sehen, ob es für Sie funktioniert –

Antwort

2

Damit die CDate zu arbeiten, benötigen Sie

1.Die konstant die Stiche in den Klammern auf 2 Teile zu trennen, in Ihrem Fall „3/1/".

2. Und die Variable, CInt(YearText.Value).

Option Explicit 

Private Sub OKBtn_Click() 

Dim DDate As Date 
DDate = CDate("3/1/" & CInt(YearText.Value)) 

' for debug only 
MsgBox "Date entered is :" & DDate 

End Sub 
+0

Vielen Dank, das hat perfekt funktioniert! – jnal

+0

@jnal du bist willkommen, bitte als Antwort markieren (bu setzen ein kleines ** V ** neben meiner Antwort) –

Verwandte Themen