VBA Support needed / intelligente Tabelle
#1
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
Win 10
Office 2010 & 2016
Top
#2
Hallöchen,

nimm einfach loLetzte raus und programmiere einen festen wert.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Mick-DUS
Top
#3
Moin!
ListObjects ticken anders.
Lesefutter:
Methoden und Eigenschaften

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:
  • Mick-DUS
Top
#4
Hallo Ralf,

geht aber auch so.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Mick-DUS
Top
#5
...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
Win 10
Office 2010 & 2016
Top
#6
Hallo Michael,

(05.11.2017, 19: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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Mick-DUS
Top


Gehe zu:


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