Anzeige
Archiv - Navigation
1944to1948
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

Bitte Erläuterung eines VBA Codes

Bitte Erläuterung eines VBA Codes
13.09.2023 12:22:55
Wolfango
Hallo Experten,
ich muss einen Code verändern (habe nur minimale VBA-Kenntnisse) und versuche zu verstehen, was da passiert.

Sub Add_rows()
Application.EnableEvents = False
Dim lngZ As Long
lngZ = Application.InputBox(prompt:="How many rows " _
& "would you like to add?", Type:=1)
If lngZ = False Then Exit Sub
With ActiveSheet
.Unprotect ("xyz")
Do
Worksheets("qqqqq").ListObjects("qqqqq").ListRows.Add
.Unprotect ("xyz")
Zahl = Zahl + 1
Worksheets("qqqqq").Cells(Zahl, 16384).Value = Zahl
If Zahl = lngZ Then Exit Do
Loop
End With

Im Ergebnis wird dann immer die gewünschte Anzahl an Zeilen hinzugefügt. Diese Zeilen enthalten bereits Formeln! Woher kommen die Formeln? Das muss doch irgendwo definiert sein, denke ich!?

Bitte um Hilfe...Danke!

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bitte Erläuterung eines VBA Codes
13.09.2023 12:38:26
Yal
Hallo Wolfgang,

it's not a bug, it's a feature.
Du arbeitest mit einer sogenanten "intelligente Tabelle" (in VBA als ListObject-Objekt). Diese haben die besonderheit, dass solang nicht weiteres gilt, eine Formel immer für die ganze Spalte gilt und bei einer neue Zeile die Formel übernommen wird. Also alles wie gewünscht.

Der Code ist, sagen wir mal- optimierungwürdig. Mein Vorschlag:

Sub Add_rows()

Dim AnzahlZeile As Long
Dim i

Application.EnableEvents = False
AnzahlZeile = InputBox(prompt:="How many rows would you like to add?", Type:=1)
If AnzahlZeile = False Then Exit Sub
With ActiveSheet
.Unprotect ("xyz")
For i = 1 To AnzahlZeile
.ListObjects("qqqqq").ListRows.Add
Next
.Protect ("xyz")
End With
Application.EnableEvents = True
End Sub


VG
Yal
Anzeige
AW: Bitte Erläuterung eines VBA Codes
13.09.2023 13:06:14
GerdL
Hallo Yal,

Wolgang nimmt m.E. zu Recht die
Application.Inputbox

Gruß Gerd
tatsächlich
13.09.2023 14:22:19
Yal
Es war mir ja gar nicht bewusst, dass es 2 verschiedenen gibt.
Ich habe sogar die OH der "normalen" Inputbox angeschaut und mich gewundert, wo diese "Type" definiert ist.

VG
Yal

AW: Bitte Erläuterung eines VBA Codes
13.09.2023 12:48:14
daniel
Hi
du fügst hier nicht einfach Zeilen in einem Tabellenblatt hinzu, sondern in einem "ListObject", dh einem Zellbereich, der als Tabelle formatiert ist.
dieser wird auch "intelligente Tabelle" genannt, weil hier ein paar dinge automatisiert passieren. Wenn beispielsweise in einer Spalte dieser intelligenten Tabelle eine Formel steht und in jeder Zelle dieselbe Formel (wie mit Copy-Paste übertragen), dann wird beim Einfügen einer neuen Zeile diese Formel in die neue Zeile übernommen.
Das macht Excel automatisch, wenn man es von Hand macht und daher passiert das auch automatisch, wenn man dieselbe Aktion per Makro ausführen lässt.
Gruß Daniel
Anzeige
AW: Bitte Erläuterung eines VBA Codes
15.09.2023 09:11:56
Wolfango
Vielen Dank für's Nachdenken und die Antworten!
Der Hinweis mit der "intelligenten Tabelle" und auch, dass dies ähnlich einem "Copy-Paste-Vorgang" wirkt scheint mir hier maßgeblich.
Eine Sache ist mir unerklärlich: Die Formeln in besagter Tabelle wurden vor längerem geändert. Der VBA-Code erzeugt aber neue Zeilen mit Formeln wie sie früher (vor den Formeländerungen) mal in dieser Tabelle vorhanden waren.
Hat hier jemand noch einen Hinweis für mich warum das so ist?
(bzw. was zu tun ist, damit die neuen (geänderten) Formeln genommen werden?)

Vielen Dank vorab und Gruß, Wo
Anzeige
AW: Bitte Erläuterung eines VBA Codes
15.09.2023 10:07:30
Oberschlumpf
Hi,

und was hältst du von der Idee, bitte per Upload eine Bsp-Datei mit Bsp-Daten zu zeigen?
Speziell wegen deiner Frage (es werden "alte" Formeln verwendet), würde ich empfehlen:

1. erstell vom Original eine Kopie
2. lösch in der Kopie alles, was nicht notwendig ist, um dein Problem nachvollziehen zu können
3. ersetz in allen Zellen die Original-Werte, die öffentlich nicht gezeigt werden sollen/dürfen durch Bsp-Werte
4. speicher die geänderte Kopie
5. stell uns bitte die Kopie per Upload zur Verfügung

Ciao
Thorsten
Bitte Erläuterung eines VBA Codes
15.09.2023 11:41:11
Yal
Hallo Wolf,

bei einem gesunden Verwendung von intelligenten Tabelle ist in einer Spalte immer dieselbe Formel.
Nach dem Motto: verstehst eine Zeile, verstehtst Du gleich die ganze Tabelle.

Das Verhalten, den Du schilderst, deutet auf Zeilen in der Tabelle, die abweichende Formeln hätten.
Gehe auf Menü "Formeln" und schalte temporär "Formel anzeigen". So hast Du die Übersicht.

VG
Yal
Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige