Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1796to1800
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tabelle durch Buttons erweitern/löschen

Tabelle durch Buttons erweitern/löschen
10.12.2020 12:58:08
VBAeinRätsel
Hallo zusammen,
leider bekomme ich durch meine bescheidenen VBA-Kenntnisse nicht zu einem wünschenswerten Ergebnis.
Folgendes Szenario:
Ich habe in verschiedenen Tabellenblättern die gleiche Tabelle, die von den Mitarbeitern einmal ausgefüllt werden soll und in den (nur) fortlaufenden Blättern ergänzt werden soll. Die Tabelle befindet sich jedoch im einzelnen Formular immer an einer anderen Position.
Aufgebaut ist sie jedoch immer gleich:
A2-A7 a,b,c,d,e,f
B1-C1 (verknüpft) Fach = Eingabefeld f. Mitarbeiter
D1-E1 (verknüpft) Leistung = Eingabefeld f. Mitarbeiter
F1-G1 (verknüpft) Kosten = Eingabefeld f. Mitarbeiter
Durch den ersten Button „Planer hinzufügen“ soll die Tabelle zum einen durch weitere Zeilen ergänzt werden, indem in A8 und fortlaufend immer „etc“ steht.
Der andere Button „Planer entfernen“ soll die Zeilen bis incl. A2-A7 löschen, aber danach stoppen. Sprich die Leiste mit der Spaltenbeschriftung stehen lassen.
Alles was nicht bearbeitet werden soll ist gesperrt.
Vielen lieben Dank für eure Unterstützung!

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Ohne Bsp.Datei können wir nicht helfen. oT
10.12.2020 14:25:43
Yal
AW: Tabelle durch Buttons erweitern/löschen
10.12.2020 16:00:42
VBAeinRätsel
Pardon, anbei eine Beispieldatei. Ich hoffe diese soweit ausreichend, da
es hier um teils strengvertrauliche Daten geht.
https://www.herber.de/bbs/user/142221.xlsm
Frage noch offen. oT.
10.12.2020 16:15:40
Yal
oT steht für ohne Text
AW: Frage noch offen. oT.
10.12.2020 22:19:13
Yal
Hallo VBA,
ich wollte mit "Frage noch offen" das Zeichen setzen, dass dein Anliegen noch nicht beantwortet war, und somit die Aufmerksamkeit anderen Helfer zu wecken.
Was Du brauchst, ist zu bestimmen welche die letzte Zeile ist. In dem Fall scheint "Hier soll die Summe" immer in Spalte F zu sein. Letzte Zeile ist dann die Zeile davor.
Du muss die Makros den passenden Schaltfläche zuweisen. Auf jeden Tabelle.
Sub Zeile_hinzufügen()
With ActiveSheet
.Range("F10000").End(xlUp).EntireRow.Range("A1").Offset(-1, 0).Select
Selection.EntireRow.Insert shift:=xlDown
.Range("F10000").End(xlUp).EntireRow.Range("A1").Offset(-1, 0).Select
Selection.Resize(1, 10).Copy
.Paste Selection.Offset(-1, 0)
Selection.EntireRow.ClearContents
Selection = Chr(Asc(Selection.Offset(-1, 0)) + 1)
End With
End Sub
Sub Zeile_löschen()
ActiveSheet.Range("F10000").End(xlUp).EntireRow.Range("A1").Offset(-1, 0).EntireRow.Delete
End Sub
Viel Erfolg
Yal
Anzeige
AW: Frage noch offen. oT.
15.12.2020 10:14:38
VBAeinRätsel
Hallo Yal,
danke für deine Hilfe. Der Code funktioniert wunderbar, dass er die Spalte mit
den Verknüpfungen ergänzt. Jedoch erweitert er den Text nach dem Alphabet, dabei
soll er bei jeder zusätzlichen Spalte den Text "etc." übernehmen. Beim löschen, löscht er
leider noch die oberste Spalte mit den Beschriftungen mit. Hier soll ja quasi ein "Cut" sein
und der Button soll verbleichen.
Dazu kriege ich die Formel nicht in die anderen Tabelle umgesetzt, da ich nicht sicher weiß
wo und wie ich die Änderung vornehmen muss, wenn die Tabelle in einem anderen Blatt an einer anderen Position ist.
Wenn du im Code ein Kommentar für mich verfassen könntest, wo die Dinge kurz erklärst, wäre das super
hilfreich. (würde es gerne komplett verstehen)
Anzeige
AW: Frage noch offen. oT.
15.12.2020 11:04:52
Yal
Hallo VBA,
Ja, Code lesen können hilft sehr. Aber schwierig ist es nicht. Per Hand würde so aussehen:
_ ich nehmen die Zelle F10000 und drücke Strg+Pfeil nach Oben ".End(xlUp)", dann habe ich die letzte befüllte Zelle in Spalte F,
_ daraus die ganze Zeile markieren ".EntireRow"
_ und in den Markierung die oberste linke Zelle ".Range("A1") (A1 vom Markierung, nicht vom Blatt)
_ dann eine Zelle nach oben ".Offset(-1,0)" auswählen ".Select"
_ darüber eine Zeile einfügen "Selection.EntireRow.Insert shift:=xlDown"
_ dann nochmal: Letzte befüllte Zelle in F , usw.
_ Copy
_ paste eine Zeile nach oben
_ gesamte Zeile markieren, Inhalt löschen
_ da wo ich bin "Selection" Werte von Zelle eine Zeile nach oben nehmen,
_ Ascii code nehmen, + 1, in ascii zurück ( b wird c)
Also VBA lesen lernen ist nicht so schwer. Man muss durch, sonst bleibt man Aussenseiter.
Andere Tipp: Schritt für Schritt laufen lassen, Überwachungausdruck einstellen, lokale Fenster anzeigen. So kommt man Schritt für Schritt rein.
Viel Erfolg
Yal
Anzeige
AW: Frage noch offen. oT.
15.12.2020 11:56:35
VBAeinRätsel
Hallo Yal,
ich habe nochmal die Datei hochgeladen, die ich am bearbeiten bin. (Tabellenblatt Planungsantrag)
https://www.herber.de/bbs/user/142332.xlsm
Ich verstehe dennoch nicht warum der Code nicht umsetzbar ist, da er
in neuen Mappen ohne Probleme funktioniert. Wende ich ihn jedoch
in der hochgeladenen Datei an, verschiebt er mein komplettes Formular und
setzt die Zeilen an die falsche Stelle.
Ich meine es "verstanden" zu haben, aber bei Umsetzung rätsel ich dann doch wieder.
Gruß und danke für die Hilfe
Anzeige
AW: Frage noch offen. oT.
15.12.2020 16:01:47
Yal
Zitat:
"Per Hand würde so aussehen:
_ ich nehmen die Zelle F10000 und drücke Strg+Pfeil nach Oben ".End(xlUp)", dann habe ich die letzte befüllte Zelle in Spalte F,"
Das hast Du vielleicht per Hand probiert, oder?
Und was ist dabei passiert?
Automatisierung lebt davon, dass es Regel gibt, worauf man sich stützen kann: es immer so, dass...
In deinem Beispieldatei gab es im ganzen nichts ausser diese Tabelle.
Also Du muss ermitteln, wo der Schaltfläche sich befindet und dementsprechend die letzte befüllte Zelle in Spalte F finden und übergeben.
Sub Schaltflächexy_Klicken()
Letzte_F_Zelle = ActiveSheet.Shapes(Application.Caller).TopLeftCell.EntireRow.Range("F1"). _
End(xlUp)
Select Case ActiveSheet.Shapes(Application.Caller).AlternativeText
Case "Planer hinzufügen"
Ausruf_Funktion_Zeile_hinzufügen Letzte_F_Zelle
Case "Planer entfernen"
Ausruf_Funktion_Zeile_hinzufügen Letzte_F_Zelle
End Select
End Sub

Viel Erfolg
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige