Zellbezog in Makro - und dann Zeilen löschen
#1
Hallo,

ich trag in Zelle B35 auf einem definierten Tabellenblatt per Makro eine Information ein - in meinem Beispiel der Benutzername.
--> Range("B35") = Application.UserName

Jetzt will ich eigentlich gerade die 2. Zeile im Tabellenblatt komplett löschen (die Information in der Zeile ist nicht mehr relevant) - aber scheinbar passt Excel den Bezug im Makro nicht automatisch an. [bzw. es macht den Anschein...]

Nachdem ich auch sonst an mehreren Stellen Infos aus dem Tabellenblatt per Makro auslese sehe ich keine Chance, alle Bezüge manuell anzupassen.

Frage wäre jetzt, ob Excel das (eigentlich) automatisch anpassen sollte oder ob es die Bessere Variante ist, die Zeile einfach auszublenden anstatt zu löschen?

Danke für eure Antworten
Daniel
Top
#2
Hallo Daniel,

das ist richtig. Wenn man in Excel  feste Adressen schreibt, muss man die Programme immer ändern, wenn man vor dieser Adresse Zeilen oder Spalten einfügt oder löscht.
Daher arbeite ich in Programmen immer mit Namen (benannte Zellen oder Bereiche). Dann ist das Ansprechen der Zelle ein wenig aufwendiger, aber keine Programmänderung mehr notwendig, wenn ich eine Zeile lösche.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





Top
#3
Hallo Daniel,

Verweise im VBA-Code sind fix.
Neben dem von Dir angesprochenem Ausblenden der Zeile könnte man den Zellen/Bereichen Namen zuweisen.
Z.B.: Markiere B35, klicke links oben in das Adressfeld/Namenfeld, schreibe _Username rein und bestätige mit Enter.
Im Code ersetzt Du dann
Range("B35") = Application.UserName
durch
Range("_Username") = Application.UserName
Aber um das Bearbeiten des VBA-Codes kommst Du nicht herum, nur ist es bei meinem Vorschlag flexibel für zukünftige Löschungen.

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Daniel.Haering
Top
#4
Danke für den Hinweis!
Das ist eine gute Idee - hab gestern noch in einer Signatur gelesen, dass Bereiche definiert werden sollen - an den Fall hab ich da nicht gedacht....

Grüße
Daniel
Top
#5
Hallo Daniel,

ein Tipp.

Das Range-Objekt ist implizit oder explizit an ein Arbeitsblatt gebunden und du must wieder das Programm anpassen, wenn du die Zelle in ein anderes Blatt verschiebst.

Daher nutze ich in der Regel (siehe unten) folgenden Befehl:

ThisWorkbook.Names("_Username").RefersToRange.Value = Application.UserName

das ist beim ersten Schreiben ein wenig sperrig, aber danach kann man die Zeile ja kopieren und nur den Namen austauschen.
helmut

Für mich ist die Möglichkeit in Excel an Zellen und Bereichen Namen zu vergeben die wichtigste Funktionalität.
Sie macht Formeln und den VBA-code verständlicher. Für Makros gilt die Regel: "Nur über benannte Bereiche auf den Inhalt der Zellen zugreifen."
Und wofür sind Regeln da? Um nachzudenken bevor man sie bricht.





[-] Folgende(r) 1 Nutzer sagt Danke an Ego für diesen Beitrag:
  • Daniel.Haering
Top


Gehe zu:


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