Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA: Inhalte von Namensbereich löschen
#1
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
Antworten Top
#2
Jo, der war flasch! Wink
Range("Fahrzeugliste").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)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Dorzen14
Antworten Top
#3
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:
  • Dorzen14
Antworten Top
#4
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
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Dorzen14
Antworten Top
#5
(19.01.2021, 12: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)
Antworten Top
#6
Hallo Ralf,

zu
Zitat:Wenn Du so argumentierst, ist aber ActiveWorkbook genau so ein Nonsens!


Blush 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. Blush

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.





Antworten Top


Gehe zu:


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