2016-11-18 2 views
0

Ich habe eine Combobox-Liste, die aus 5 Bereichen jeweils aus einem anderen Arbeitsblatt aus einer anderen Arbeitsmappe besteht. Ich möchte überprüfen, ob der Combobox Wert innerhalb eines bestimmten Bereichs ist (um zu sehen, was seine im Arbeitsblatt) unter Verwendung einer if else-Anweisung, aber ich kann nicht den Code an die Arbeit:Wie konstruiere ich eine if else-Anweisung, um zu überprüfen, ob ein Combobox-Wert innerhalb eines bestimmten Bereichs liegt

Sub TextBox2_Change() 

Dim value As String 
    value = ComboBox1.value 

Dim bdate As String 
    bdate = Format(Now(), "mm/dd/yyyy") 
Dim ddate As Date 

Dim Found As range 
Set Found = Workbooks("Library_Database.xlsx") _ 
      .Worksheets("Sheet1", "Sheet2", "Sheet3") _         
      .Columns("A").Find(what:=value, LookIn:=xlValues) 

If Found = Workbooks("Library_Database.xlsx").Worksheets("Sheet1") _ 
      .Columns("A").Find(what:=value, LookIn:=xlValues) Then 
    ddate = DateAdd("m", 2, bdate) 
ElseIf Found = Workbooks("Library_Database.xlsx").Worksheets("Sheet2") _ 
       .Columns("A").Find(what:=value, LookIn:=xlValues) Then 
    ddate = DateAdd("h", 3, bdate) 
ElseIf Found = Workbooks("Library_Database.xlsx").Worksheets("Sheet3") _  
       .Columns("A").Find(what:=value, LookIn:=xlValues) Then 
    ddate = DateAdd("d", 2, bdate) 
End If 

Msgbox "" &ddate, vbinformation 

End Sub 

BITTE HILFE !!!!!

Antwort

0

Range.Find funktioniert nicht auf mehreren Arbeitsblättern.

Diese Syntax ist irreführend, weil Datumswerte Zahlen sind:

bdate = Format(Now(), "mm/dd/yyyy")

Es ist gute Praxis, anstatt die DateValue Funktion zu verwenden:

bdate = DatWert (Now())

Sub TextBox2_Change() 
    Dim ws As Worksheet 
    Dim Found As Range 
    Dim bdate As String 
    Dim value As String 
    value = ComboBox1.value 
    bdate = DateValue(Now()) 
    Dim ddate As Date 
    For Each ws In Workbooks("Library_Database.xlsx").Worksheets(Array("Sheet1", "Sheet2", "Sheet3")) 
     Set Found = ws.Columns("A").Find(what:=value, LookIn:=xlValues) 
     If Not Found Is Nothing Then 
      Select Case ws.Name 
      Case "Sheet1", "Sheet3" 
       ddate = DateAdd("m", 2, bdate) 
      Case "Sheet2" 
       ddate = DateAdd("h", 3, bdate) 
      End Select 
      MsgBox "Date: " & ddate, vbInformation, "Date Found" 
      Exit For 
     End If 
    Next 

    If Found Is Nothing Then MsgBox "Try Again", vbCritical, "Date Not Found" 

End Sub 
Verwandte Themen