code im Commandbutton
#11
Danke Euch für eurer Hilfe, ich werde es versuchen, aber das ist mir doch zu fett und schwer.

wirklich toll was ihr drauf habt......
Antworten Top
#12
Hallo

ich sehe es gibt schon eine Menge Lösungen, dazu noch von Profis, mit Array!  Alle Achtung.

Ob der "arme Frager" mit bescheidenen VBA Wissen bei euren guten Codes noch durchblickt???
Ich wage das zu bezweifeln.  Super gemacht, ohne Frage, aber zum Verstehen viel zu hoch gegriffen.

Ich wette um einen Kasten Kölsch das der Frager meinen Code versteht, und nachvollziehen kann.
Bis auf die Tatsache das ich die LastZell mit xlDown statt xlUp suche, was ich ja sonst immer tue!
Aber nicht bei Intelligenten Tabellen, da landet xlUp immer am Tabellenende! So simpel ist das.
Dafür muss man bei xlDown die erste freie Zelle prüfen, sonst landet man am Tabellenende bei 1.000.000

Die Nr wird bei als Zahl eingetragen, Das Datum als Datum, der Betrag als Währung.
Ich bin gespannt wie dem Frager meine "Simpel Lösung" gefällt.  Die versteht er sicher.

mfg Gast 123

Nachtrag  mein VBA Wissen stammt von einer 3 1/2 Zoll Disk von Data Becker mit VBA Beispielen.
Wichtig ist meines Erachtens das man erst mal die Basisbegriffe der einfachen Befehle versteht.

Nachtrag   mir fällt gerade ein, du hast ein einer zweiten Tabelle, Tabelle2?, den Code für Workbook_OPen stehen!!
Bitte löschen, Excel hat u.U. Probleme, wenn zweimal ein Code mit demselben Codenamen vorkommt.


Angehängte Dateien
.xlsm   Kundendaten.xlsm (Größe: 15,78 KB / Downloads: 5)
Antworten Top
#13
Hi,

(06.01.2025, 20:40)gitmichi schrieb: Gibt es irgendwo gute zielführende Seiten??

Also ich habe damals VBA mit Hilfe von https://de.wikibooks.org/wiki/VBA_in_Excel gelernt.
Richtig gut ist auch https://www.online-excel.de/ Insbesondere die Tutorials sind empfehlenswert. Auf den Seiten findet man auch gutes Wissen zu Excel selbst.
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#14
Hallöchen,

Zitat:Bis auf die Tatsache das ich die LastZell mit xlDown statt xlUp suche

1)
Du kannst auch xlUp nehmen und prüfst, ob die Zelle was hat. Wenn nicht, dann nochmal. Bei xlDown prüfst Du ja auch ...

2)
oder was in der Art:
Code:
Sub test()
'findet letzte belegte Zeile des Listobjects - hier aus Spalte 1 - und gibt die Zeilennummer im Blatt aus
lastrow1 = ActiveSheet.ListObjects("Tabelle1").ListColumns(1).Range.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'findet letzte Zeille des Listobjects und gibt die Zeilennummer im Blatt aus
lastrow2 = ActiveSheet.ListObjects("Tabelle1").ListColumns(1).Range.Row
'meldet die letzte belegte Zeile im Listobject - DataBodyRange
MsgBox lastrow1 - lastrow2
End Sub
.      \\\|///      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:
  • Gast 123
Antworten Top
#15
Hallo André,

Dein Test-Makro hast Du aber nicht getestet, oder? Also ich könnte damit nichts anfangen.

Gruß, Uwe
Antworten Top
#16
Klar ist das getestet. Ich habe aber auch geschrieben, um was es geht...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#17
(07.01.2025, 16:11)schauan schrieb: Klar ist das getestet. Ich habe aber auch geschrieben, um was es geht...

OK. Dann bin ich zu doof, um zu verstehen, worum es geht. Blush

Gruß, Uwe
Antworten Top
#18
Hi,

Ein ListObject sollte keine leeren Zeilen haben. Daher kann man auch einfach unterhalb der bisherigen Tabelle etwas eintragen.

Code:
Private Sub CommandButton1_Click()
Dim Zeile As Long
With Tabelle1.ListObjects("Tabelle1").DataBodyRange
    Zeile = .Rows.Count + 1
    .Cells(Zeile, 1) = Nr
    .Cells(Zeile, 2) = Datum
    .Cells(Zeile, 3) = Betrag
End With
End Sub
Die Tabelle erweitert sich dadurch automatisch. Und damit dann auch wirklich eine Nummer, ein Datum und ein Betrag in den Zellen landen, muss man beim Eintragen die Werte entsprechend umwandeln.

Code:
Private Sub CommandButton1_Click()
Dim Zeile As Long
With Tabelle1.ListObjects("Tabelle1").DataBodyRange
    Zeile = .Rows.Count + 1
    .Cells(Zeile, 1) = CLng(Nr)
    .Cells(Zeile, 2) = CDate(Datum)
    .Cells(Zeile, 3) = CDbl(Betrag)
End With
End Sub

Da Excel bekanntlich beim Eintragen etwas langsam ist, schreibt man das besser in ein Array und gibt es dann aus. Damit ist die Ausgabe dann 3x so schnell.
Code:
Private Sub CommandButton1_Click()
Dim arr(1 To 3) As Variant
arr(1) = CLng(Nr)
arr(2) = CDate(Datum)
arr(3) = CDbl(Betrag)
With Tabelle1.ListObjects("Tabelle1").DataBodyRange
    .Cells(.Rows.Count + 1, 1).Resize(, 3) = arr
End With
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#19
Hallo,

hat jemand schon mal eine Option gefunden wo man die Maske in Größe, Schriftgröße und Farbe oder Schriftart ändern kann?

LG und Danke
Antworten Top
#20
Zitat:hat jemand schon mal eine Option gefunden wo man die Maske in Größe, Schriftgröße und Farbe oder Schriftart ändern kann?

Nein, weil das nicht geht. Ist ja zudem auch ein Uralt-Excel-Relikt Wink
Antworten Top


Gehe zu:


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