Thema Datum  Von Nutzer Rating
Antwort
Rot Automatisches Ausfüllen leerer Zellen mit dem Wert obiger Zellen
21.12.2011 07:26:28 TheGhost
NotSolved

Ansicht des Beitrags:
Von:
TheGhost
Datum:
21.12.2011 07:26:28
Views:
3462
Rating: Antwort:
  Ja
Thema:
Automatisches Ausfüllen leerer Zellen mit dem Wert obiger Zellen

Ein fröhliches "Moin moin" zusamm',

 

nach einigem Suchen habe ich ähnliche Problematiken gefunden (leere Zellen füllen), konnte diese aber nicht anwenden.

Ich beziehe mich auf die Vorlage von PCTipp.ch leere Zellen mit obigem Inhalt ausfüllen und Datum und Uhrzeit umwandeln von http://www.hajo-excel.de.

 

Ausgangssituation:

ExcelTabelle mit 3 Spalten A,B,C

  1. In Spalte A werden numerische, fünf- bis achtstellige Eingaben in ein Datum (dmmyy/ ddmmyy nach dd.mm.yy oder dmmyyyy/ ddmmyyyy nach dd.mm.yyyy) umgewandelt (Punkte hinzugefügt)
  2. In Spalte B werden numerische, sechs- oder fünfstellige Eingaben in eine Uhrzeit (hmmss/ hhmmss nach hh:mm:ss) umgewandelt (Doppelpunkte hinzugefügt)
  3. In Spalte C erfolgt eine numerische Wert X. Unausgefüllte Zellen, also Zellen ohne Werteingabe des Benutzers, sollen den nächsten, obigen Wert der Spalte zugeordnet bekommen. (Beispiel: C1=x1; C2=""; C3=""; C4=x2; C5="" dann soll C2=x1; C3=x1; C5=x2)

Option Explicit



Private Sub Worksheet_Change(ByVal Target As Range)

    Dim RaBereich1 As Range
    Dim RaZelle1 As Range

    Set RaBereich1 = Range("A1:A1006")

    Set RaBereich1 = Intersect(RaBereich1, Range(Target.Address))
    If Not RaBereich1 Is Nothing Then

        Application.EnableEvents = False
        For Each RaZelle1 In Range(Target.Address)
            With RaZelle1

                If (Len(.Value2) = 6 Or Len(.Value2) = 5) _
                    And IsNumeric(.Value2) Then
                    If Len(.Value2) = 6 Then
                        .Value = CDate(Mid(.Value2, 1, 2) _
                            & "." & Mid(.Value2, 3, 2) & "." _
                            & Mid(.Value2, 5, 2))
                    ElseIf Len(.Value2) = 5 Then
                        .Value = CDate(Mid(.Value2, 1, 1) _
                            & "." & Mid(.Value2, 2, 2) & "." _
                            & Mid(.Value2, 4, 2))
                    End If
                            .NumberFormat = "dd/mm/yy;@"
                            Application.EnableEvents = True
                            
                 ElseIf (Len(.Value2) = 8 Or Len(.Value2) = 7) _
                    And IsNumeric(.Value2) Then
                    If Len(.Value2) = 8 Then
                        .Value = CDate(Mid(.Value2, 1, 2) _
                            & "." & Mid(.Value2, 3, 2) & "." _
                            & Mid(.Value2, 5, 4))
                    ElseIf Len(.Value2) = 7 Then
                        .Value = CDate(Mid(.Value2, 1, 1) _
                            & "." & Mid(.Value2, 2, 2) & "." _
                            & Mid(.Value2, 4, 4))
                    End If
                        .NumberFormat = "dd/mm/yyyy;@"
                        Application.EnableEvents = True

                Else
                    .NumberFormat = "0"
                End If
            End With
        Next RaZelle1

        Application.EnableEvents = True

    End If
    Set RaBereich1 = Nothing
    
    
    
    Dim RaBereich2 As Range
    Dim RaZelle2 As Range

    Set RaBereich2 = Range("B1:B1006")

    Set RaBereich2 = Intersect(RaBereich2, Range(Target.Address))
    If Not RaBereich2 Is Nothing Then

        Application.EnableEvents = False
        For Each RaZelle2 In Range(Target.Address)
            With RaZelle2

                If (Len(.Value2) = 6 Or Len(.Value2) = 5) _
                    And IsNumeric(.Value2) Then
                    If Len(.Value2) = 6 Then
                        .Value = CDate(Mid(.Value2, 1, 2) _
                            & ":" & Mid(.Value2, 3, 2) & ":" _
                            & Mid(.Value2, 5, 2))
                    ElseIf Len(.Value2) = 5 Then
                        .Value = CDate(Mid(.Value2, 1, 1) _
                            & ":" & Mid(.Value2, 2, 2) & ":" _
                            & Mid(.Value2, 4, 2))
                    End If
                            .NumberFormat = "hh:mm:ss"
                            Application.EnableEvents = True

                Else
                    .NumberFormat = "0"
                End If
            End With
        Next RaZelle2

        Application.EnableEvents = True

    End If
    Set RaBereich2 = Nothing
    
End Sub





Sub AusfüllenSpalteC()

    With Intersect(Range("C1:C1006"), ActiveSheet.UsedRange)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Value = .Value
    End With
    
End Sub

 

Der Scriptteil bezüglich Spalte A und Spalte B  "Private Sub Worksheet_Change(ByVal Target As Range)" wird automatisch nach einer Benutzereingabe in einer Zelle der jeweiligen Spalte angewendet.

Der Makro "Sub AusfüllenSpalteC()" muss jedoch manuell in Excel über "Ansicht"→"Makros"→"Makros anzeigen"→"Ausführen" gestartet werden, wäre eine Automatisierung wie in den vorangegangegen Spalten, bzw. eine Auslegung über einen "Private Sub" möglich?

 

MfG

Michael


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Automatisches Ausfüllen leerer Zellen mit dem Wert obiger Zellen
21.12.2011 07:26:28 TheGhost
NotSolved