Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Datum Typen unverträglich
#1
Hallo verehrtes Forum,

ich habe mit dem unten aufgeführten Code meine Probleme.
Ab der Zeile Y=... wird der Laufzeitfehler '13' Typen unverträglich ausgegeben.

Weiß jemand von Euch Rat oder eine andere Lösung?

Vielen dank im Voraus.

Sub Test()
Dim Eingabe As String
Dim i As Long
On Error Resume Next
Eingabe = InputBox("Bitte geben Sie ein Datum ein")
If IsDate(Eingabe) Then
MsgBox "Es handelt sich um ein gültiges Datum: " & Eingabe
Else
MsgBox "Das ist kein gültiges Datum: " & Eingabe, vbCritical
End If
On Error GoTo 0
  
Datum = CDate(Eingabe)

    Set WS = Worksheets("UE")
    Set WS1 = Worksheets("UA")
   
Y = Application.Match(Datum, WS.Range("B3:B33"), 0) + 2
Z = Application.Match(Datum, WS1.Range("B3:B33"), 0) + 2

 MsgBox Y
 MsgBox Z
 
   
    For i = 4 To 5
        If WS.Cells(Y, i) <> "" Then
        If WS1.Cells(Z, i) <> "" Then
        Sheets("Bereich").OLEObjects("Label" & i).Object.Caption = WS.Cells(Y, i) & "/" & WS1.Cells(Z, i)
        End If
        End If
       
    Next i
 
    End Sub
Antworten Top
#2
Hallo

mal abgesehen davon, dass du nicht alle Variablen deklariert hast....

probiere es mal so


Code:
Y = Application.Match(CDbl(datum), WS.Range("B3:B33"), 0) + 2
Z = Application.Match(CDbl(datum), WS1.Range("B3:B33"), 0) + 2


MfG Tom
[-] Folgende(r) 1 Nutzer sagt Danke an Crazy Tom für diesen Beitrag:
  • tmessers
Antworten Top
#3
Moin!
Grob dürfte da ein .Row hinter .Match() fehlen.

Frage:
Warum deklarierst Du nur die Hälfte Deiner Variablen?
Dann kannst Du es gleich sein lassen.
Besser wäre Option Explicit
http://www.online-excel.de/excel/singsel_vba.php?f=4

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • tmessers
Antworten Top
#4
Code:
Sub M_snb_0()
   On Error Resume Next
  
   Sheets("UE").Cells(Day(InputBox("")) + 2, 3) = "OK"
End Sub

Weil du die Tagen in B3:B33 hast ist 'match' überflüssig.
VBA evaluiert selbst ob die String im Inputbox ein Datumswert ist.
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • tmessers
Antworten Top
#5
@Crazy Tom: danke, hat leider nicht so geklappt. Das gab jetzt nen anderen Fehler

@rpp63: Danke für den Tipp. Ich bin noch Anfänger und die Variablen machen mir noch zu schaffen.

@snb: Der Code sieht vielversprechend aus. Ich möchte aber den Wert der Zelle entnehmen und nichts in eine Zelle einfügen.
          Wie würde dein Code dann aussehen?
Antworten Top
#6
Hallo

deine Frage war warum es zu dem Laufzeitfehler 13 bei Y kommt...
den Fehler gibt es in meinem Code nicht
also ist "klappt nicht" wohl nicht wahr, oder?
für alles andere was nicht "klappt" wäre dann eine Beispieldatei von Vorteil

MfG Tom
Antworten Top
#7
Danke an alle.
Dies ist der Code, den ich mit Eurer Hilfe erstellen konnte.
Weiß jemand von Euch wie ich den für mehrere Tage, also einen Datumsbereich programmieren kann?
Es sollten dann also in den Sheets UE und UA die i für mehrere Tage addiert werden.


Sub Testfinal()
Dim i As Long
      
datum = InputBox("")
For i = 4 To 10
Sheets("Bereich").OLEObjects("Label" & i).Object.Caption = Sheets("UE").Cells(Day(datum) + 2, i) & "/" & Sheets("UA").Cells(Day(datum) + 2, i)
      
Next i
 
End Sub
Antworten Top
#8
Hallöchen,

in Deinem Code tust Du ein Label im Blatt Bereich ändern.
In der Frage schreibst Du, dass Du in den Blättern UE und UA die i für mehrere Tage addieren willst. Jetzt wäre interessant zu wissen, wo die i auf diesen Blättern hingeschrieben werden sollen und welche i da addiert werden sollen. Deine Schleife fängt ja mit i=4 an und geht bis 10. Im Minimum wären das also 4, im Maximum 4+5+6+7+8+9+10 = 49 Pro Durchlauf. Wenn Du ein neues Datum eingibst, werden die Zahlen dann dazu gezählt?

Im Prinzip ginge das so. Angenommen, die Zahl kommt in A1, dann würde ich in der Schleife dann die i dazuzählen, z.B.
Cells(1,1).Value = Cells(1,1).Value +i

Nach dem ersten Durchlauf steht dort dann 49, nach dem zweiten 98 usw.

*****************************************
Oder willst Du die Schleife für mehrere Tage durchlaufen lassen und das Label im Blatt Bereich entsprechend ändern?

Da in Deiner Schleife der Monat und das Jahr keine Rolle spielt, reicht eventuell bei der Eingabe schon 17 und 4 Smile also der jeweilige Tag des Monats und Du brauchst ihn nicht erst zu berechnen

Ich baue es jetzt mal nach dem bisherigen VBA-Kenntnisstand aus diesem Thread auf.
Du nimmst dann eventuell zwei Inputboxen und zwei variable - datum1 und datum2. Kann man später auch mit einer Inputbox lösen Smile

Dann machst Du eine zweite Schleife,
For j = datum1 to datum2

In der anderen Schleife ersetzt Du dann Day(datum) durch j


Falls Du doch an der Eingabe des Datums festhälst, dann kannst Du In der Schleife mit dem For j ... den Tag extrahieren, also
For j = Day(datum1) to Day(datum2)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste