Microsoft Excel

Herbers Excel/VBA-Archiv

Problem mit leere Zellen


Betrifft: Problem mit leere Zellen von: Peter
Geschrieben am: 23.06.2017 09:03:48

Hallo ihr Excelspezialisten,

ich habe ein funktionierendes Makro bei welchem mir Piet erfolgreich geholfen hatte.

Jetzt taucht aber ein Problem auf:

Ich habe innerhalb der abzufragenden Spalten leere Zellen.

Anbei das auszuführende Makro:

Sub Zwischenzeit_test_23_08Uhr58()
 Dim RaumWert As String
 Dim EndZeitWert As String  'Wert Endzeit
 Dim Zeile As Long
 Dim EinfügWert As String
 Dim rfind As Object, lazRaum As Integer
 'neu eingefügt_Peter_2017-06-16-11.31Uhr
 Dim EinfügWert2 As String
 Dim EinfügWert3 As String
 'für AnfangZwischenzeit
 Dim SuZwiZeit As String
 Dim ZwZeitfind As Object
 Dim AZeit As Date, zAZeit As Date
 Dim EZeit As Date, zEZeit As Date
 
 
 
 
 'LastZell in Räume Spalte C ermitteln
 lazRaum = Worksheets("Räume").Range("C500").End(xlUp).Row

 'Schleife für alle Anfangs Zeiten
 For j = 2 To lazRaum
 
'aktuelle Anfangzeit ermitteln
 Zelle_A = Worksheets("Räume").Cells(j, "C").Value  'Anfangzeit
 
 With Worksheets("Zeiten_Gesamt (2)")
    Set rfind = .Range("G2:G51").Find(What:=Zelle_A, After:=Range("G2"), _
        LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False)
    If Not rfind Is Nothing Then AZeitSpalte = rfind.Offset(0, -1).Value
 End With
 
'Debug.Print Zelle_A
'Debug.Print AZeitSpalte
 
'aktuelle Endzeit ermitteln
Zelle_E = Worksheets("Räume").Cells(j, "D").Value  'Endzeit
 
 With Worksheets("Zeiten_Gesamt (2)")
    Set rfind = .Range("G2:G51").Find(What:=Zelle_E, After:=Range("G2"), _
        LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False)
    If Not rfind Is Nothing Then EZeitSpalte = rfind.Offset(0, -1).Value
 End With

'Debug.Print Zelle_E
'Debug.Print EZeitSpalte


'aktuelle AnfangZwischenzeit ermitteln
 SuZwiZeit = Worksheets("Hilfstabelle").Cells(5, "D").Value

 With Worksheets("Zwischenzeiten")
    Set ZwZeitfind = .Range("A2:A51").Find(What:=SuZwiZeit, After:=Range("A2"), _
        LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False)
    If Not ZwZeitfind Is Nothing Then ZwZAZeitSpalte = ZwZeitfind.Offset(0, 2).Value
 End With

'Debug.Print ZwZAZeitSpalte

'aktuelle EndZwischenzeit ermitteln
 With Worksheets("Zwischenzeiten")
    Set ZwZeitfind = .Range("A2:A51").Find(What:=SuZwiZeit, After:=Range("A2"), _
        LookIn:=xlValues, lookAt:=xlWhole, SearchOrder:=xlByRows, _
        SearchDirection:=xlNext, MatchCase:=False)
    If Not ZwZeitfind Is Nothing Then ZwZEZeitSpalte = ZwZeitfind.Offset(0, 4).Value
 End With

'Debug.Print ZwZEZeitSpalte
 
  
' Eingabe = Worksheets("Räume").Cells(j, "A").Value  'Raum
 RaumWert = Worksheets("Räume").Cells(j, "A").Value  'Raum
 
' EinfügWert = Worksheets("Hilfstabelle").Cells(j, "P").Value
 EinfügWert = Worksheets("Hilfstabelle").Range("P2").Value  'nicht anwesend
 'neu eingefügt_Peter_2017-06-16-11.31Uhr
 EinfügWert2 = Worksheets("Hilfstabelle").Range("P3").Value '=nicht elektronisch buchbar
 EinfügWert3 = Worksheets("Hilfstabelle").Range("P5").Value 'leer
 
 With Worksheets("Buchung_Räume")
    Zeile = .columns("A:A").Find(What:=RaumWert, After:=Range("A1"), _
         LookIn:=xlValues, lookAt:=xlPart, SearchOrder:=xlByRows, _
         SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Row
     
 End With
 
 
  'Text Zeiten in echtes Zeit-Format umwandeln
  AZeit = CDate(Left(Zelle_A, 2) & ":" & Mid(Zelle_A, 4, 2))
  EZeit = CDate(Left(Zelle_E, 2) & ":" & Mid(Zelle_E, 4, 2))

  zAZeit = CDate(Left(ZwZAZeitSpalte, 2) & ":" & Mid(ZwZAZeitSpalte, 4, 2))
  zEZeit = CDate(Left(ZwZEZeitSpalte, 2) & ":" & Mid(ZwZEZeitSpalte, 4, 2))
 
' Debug.Print AZeit
' Debug.Print EZeit
' Debug.Print zAZeit
' Debug.Print zEZeit
         
Worksheets("Buchung_Räume").Activate

If EZeit > AZeit And zEZeit > EZeit Then
ActiveSheet.Range(Cells(Zeile, 30), Cells(Zeile, 33)) = EinfügWert  'nicht anwesend
Else
ActiveSheet.Range(Cells(Zeile, 30), Cells(Zeile, 33)) = EinfügWert2 'nicht elekronisch buchbar
End If
If AZeit > zAZeit And zEZeit < EZeit Then
ActiveSheet.Range(Cells(Zeile, 30), Cells(Zeile, 33)) = EinfügWert  'nicht anwesend
End If


 Next j
End Sub
Der Fehler geginnt an dieser Stelle: 'Text Zeiten in echtes Zeit-Format umwandeln
Sobald die Zelle_A und Zelle_E leer ist kommt Laufzeitfehler.

Es soll bei leeren Zellen nicht nichts passieren sondern es soll nachstehendes aus-
geführt werden:

ActiveSheet.Range(Cells(Zeile, 30), Cells(Zeile, 33)) = EinfügWert 'nicht anwesend

Könnt ihr mir bitte bei meinem Problem behilflich sein.

Besten Dank

Gruss
Peter

  

Betrifft: AW: Problem mit leere Zellen von: Hajo_Zi
Geschrieben am: 23.06.2017 09:07:16

Hallo Peter,

nur wenige schauen auf Deinen Rechner und sehen die Datei.
Ich möchte gerne den Fehler im Oroginal sehen..

Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.

Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.

Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Test, Mappe, Beispiel usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.

Prüfe Empty()

GrußformelHomepage


  

Betrifft: AW: Problem mit leere Zellen von: Peter
Geschrieben am: 23.06.2017 10:32:14

Hallo Hajo,

um Dir die Arbeit zu erleichtern folgender Hinweis.

Es handelt sich die Tabelle "Buchung_Räume" Spalte X und in VBA um das Modul8_Test2 zweite Makro
"Sub Zwischenzeit_test_23_08Uhr58()"

Mit diesem Makro werden dann die Spalten X bis AA ausgefüllt. Bleibt aber stehen bei leeren Zellen.

Mappe anbei:https://www.herber.de/bbs/user/114423.xlsm


Besten Dank für Deine Hilfe.


Gruss
Peter

Gruss


  

Betrifft: AW: Problem gelöst von: Peter
Geschrieben am: 23.06.2017 13:28:24

Problem gelöst


Beiträge aus den Excel-Beispielen zum Thema "Problem mit leere Zellen"