Clever-Excel-Forum

Normale Version: VBA Support needed / intelligente Tabelle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend,

habe folgenden Code von Hajo Ziplies im Einsatz und möchte ihn dahingehend ändern, dass ich in einer intelligenten Tabelle das Datum in einer definierten Spalte eintrage und nicht automatisch in die letzte Spalte.
Meine Versuche der Umstrickerei scheitern wahrscheinlich an meiner Unerfahrenheit bei ListObjekts, da ich wahrscheinlich immer falsch adressiere
(Die Meldung MsgBox ist für mich in diesem Fall unnötig.)

Dank im Voraus für Eure grauen Zellen
Michael

Hier Hajos Code:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
   '***********************************************
   '* H. Ziplies                                  *
   '* 08.11.12                                    *
   '* erstellt von HajoZiplies@web.de             *
   '* http://Hajo-Excel.de/
       '***********************************************
   ' wird im definierten Bereich ein Wert geändert,
   ' wird in der nächsten letzten Spalte das Datum und Uhrzeit eingetragen
   Dim RaBereich As Range                                     ' Variable für überwachten Bereich
   Dim RaZelle As Range                                       ' Variable für Zelle die zur Zeit bearbeitet wird
   Dim LoLetzte As Integer                                    ' Variable für letzte Spalte
   Set RaBereich = Range("VBA_TAB_1[[Wert_4]:[Wert_5]]")      ' Bereich meiner Tabelle den ich prüfen will
     
      ' prüfen ob veränderte Zelle im überwachten Bereich
   Set RaBereich = Intersect(RaBereich, Range(Target.Address))
   If Not RaBereich Is Nothing Then
       Application.EnableEvents = False                       ' Reaktion auf Eingabe abschalten
       Application.ScreenUpdating = False                     ' Bildschirm abschalten
       For Each RaZelle In RaBereich                          ' Schleife über alle veränderten Zellen im überwachten Bereich
           With RaZelle
               ' letzte belegte Spalte, unabhängig von Excelversion
               LoLetzte = IIf(IsEmpty(Cells(.Row, Columns.Count)), Cells(.Row, _
                   Columns.Count).End(xlToLeft).Column, Columns.Count) + 0
               If LoLetzte > Columns.Count Then
                   MsgBox " Keine Spalte mehr frei in Zeile " & .Row
               Else
                   Cells(.Row, LoLetzte) = Now
                   Cells(.Row, LoLetzte).NumberFormat = "dd/mm/yy hh:mm"
                   Cells(.Row, LoLetzte).EntireColumn.AutoFit
               End If
           End With
       Next RaZelle
       Application.ScreenUpdating = True                      ' Bildschirm einschalten
       Application.EnableEvents = True                        ' Reaktion auf Eingabe einschalten
   End If
   Set RaBereich = Nothing                                    ' Variable leeren
End Sub
Hallöchen,

nimm einfach loLetzte raus und programmiere einen festen wert.
Moin!
ListObjects ticken anders.
Lesefutter:
Methoden und Eigenschaften

Gruß Ralf
Hallo Ralf,

geht aber auch so.
...nix gut mein Wissen

und leider komme ich nicht recht zurecht mit der Syntax der ListObjekts.
Vielleicht denke ich auch falsch.
Meine Versuche zu posten würden Euch langweilen...

Frage also: Wie kann ich mit ListObjekt in einer bestimmten [Spalte] in der aktiven Zeile meiner Tabelle einen Wert(aktuelles Datum / Zeit [now]) eintagen?
Vielleicht kann mir jemand mit brauchbarem Code weiterhelfen?

Seid bedankt, Michael
Hallo Michael,

(05.11.2017, 18:58)Mick-DUS schrieb: [ -> ]Frage also: Wie kann ich mit ListObjekt in einer bestimmten [Spalte] in der aktiven Zeile meiner Tabelle einen Wert(aktuelles Datum / Zeit [now]) eintagen?

z.B. so:
Private Sub Worksheet_Change(ByVal Target As Range)
 Application.Intersect(Target.Cells(1).EntireRow, Me.ListObjects("Tabelle1").ListColumns("Ü_A").Range).Value = Now
End Sub
Gruß Uwe