Registriert seit: 21.12.2020
Version(en): 2019
Hallo,
ich möchte mit einem Makro gerne den Inhalt eines Zellverbundes löschen. Da dessen Position sich variieren kann, habe ich diesem Bereich einen Namen gegeben. Wie lässt sich nun zwecks Makro dieser "bennante" Bereich anwählen (und anschließend dessen Inhalt löschen)? Mein recht simpler Weg war da leider flasch:
Code:
ActiveWorkbook.Names("Fahrzeugliste").Select
Selection.ClearContents
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
Jo, der war
flasch!
Range("Fahrzeugliste").ClearContentsGruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:1 Nutzer sagt Danke an RPP63 für diesen Beitrag 28
• Dorzen14
Registriert seit: 21.06.2016
Version(en): 2021
Hallo D...,
der Ansatz über "ActiveWorkbook.Names()" war schon besser als über "Range()", da ich bei Range noch das Blatt wissen muss.
Nur ist Names eine Auflistung von Namensobjekten nicht von Bereichen. Mit ActiveWorkbook.Names("...") erhälst du ein Objekt vom Typ Namen. Um an den Bereich zu kommen, musst du noch die Methode "RefersToRange" anwenden.
ActiveWorkbook.Names("Fahrzeugliste").RefersToRange.ClearContents
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
• Dorzen14
Registriert seit: 29.09.2015
Version(en): 2030,5
19.01.2021, 14:25
(Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2021, 14:27 von snb.)
Range("snb") = Application.Range("snb")
Oder du verwendest range:
Code:
[snb].Select
Range("snb").Select
ActiveSheet.Range("snb").Select
ThisWorkbook.Sheets(1).Range("snb").Select
Oder du verwendest 'Names'; und dann ist 'Referstorange' erforderlich.
Code:
ActiveSheet.Names("snb").RefersToRange.Select
application.Names("snb").referstorange.select
Thisworkbook.names("snb").referstorange.select
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Dorzen14
Registriert seit: 12.10.2014
Version(en): 365 Insider (64 Bit)
19.01.2021, 14:37
(Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2021, 14:40 von RPP63.)
(19.01.2021, 13:58)Ego schrieb: der Ansatz über "ActiveWorkbook.Names()" war schon besser als über "Range()", da ich bei Range noch das Blatt wissen muss.
Moin Helmut!
Wenn Du so argumentierst, ist aber ActiveWorkbook genau so ein Nonsens!
Anders ausgedrückt:
Wenn der TE (offensichtlich) sicherstellt, dass das richtige WB aktiv ist, sollte man auch davon ausgehen, dass er dies auch mit dem Blatt macht.
Und wie snb bereits schrieb, geht dies:
Application.Range("Dingenskirchen").ClearContents
Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag.
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Registriert seit: 21.06.2016
Version(en): 2021
19.01.2021, 15:06
(Dieser Beitrag wurde zuletzt bearbeitet: 19.01.2021, 15:08 von Ego.)
Hallo Ralf,
zu
Zitat:Wenn Du so argumentierst, ist aber ActiveWorkbook genau so ein Nonsens!

Wenn Du so argumentierst, ist aber ein benannter Bereich genau so ein Nonsens!
Wenn der TE (offensichtlich) sicherstellt, dass das richtige WB
und das richhtige Blatt aktiv ist
und ..., sollte man auch davon ausgehen, dass er dies auch mit dem Bereich macht.
NEIN!!!!Warum sollte ich mich, nur um einige Buchstaben weniger zu schreiben, im Programm festlegen auf welchem Blatt sich in Zukunft der benannte Bereich befindet.
ActiveWorkbook ist dann sinnvoll, wenn ich in anderen Dateien arbeite als die in der der code ist. Ansonsten würde ich ThisWorkbook nutzen.
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.