Registriert seit: 07.11.2014
Version(en): 2007
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
Registriert seit: 21.06.2016
Version(en): 2021
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.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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:1 Nutzer sagt Danke an Kuwer für diesen Beitrag 28
• Daniel.Haering
Registriert seit: 07.11.2014
Version(en): 2007
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
Registriert seit: 21.06.2016
Version(en): 2021
20.03.2018, 12:52
(Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2018, 12:52 von Ego.)
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:1 Nutzer sagt Danke an Ego für diesen Beitrag 28
• Daniel.Haering