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.

Spalte hinzufügen - feste Werte im Code
#1
Hallo zusammen. 


ich habe eine Tabelle, in der viele Activex Kontrollkästchen zu finden sind. 
Jedes mal, wenn ich einen Haken setze, werden in einem anderen Blatt Zeilen eingeblendet (ausgeblendet beim entfernen). 
Zusätzlich wird noch etwas in eine Zelle der selben Spalte geschrieben. Bsp. Range("I22").Value = "P". 

Da ich jetzt aber nachträglich eine Spalte vor Spalte I hinzufügen möchte, würde in diesem Beispiel der Wert bei I22 eingetragen werden, müsste aber (bedingt durch das Einfügen der Spalte) der Wert in J22 eingetragen werden. 

Gibt es eine Möglichkeit, den Wert irgendwie dynamisch zu bestimmen, um nachträglich Änderungen im Tabellenblatt durchführen zu können.


Danke schon mal für mögliche Antworten.
Antworten Top
#2
Hallo,

ja gibt es! Arbeite mit benannten Zellen oder Bereichen, z.B. nenne deine Zelle I22 "Zielzelle" und sprich sie in VBA mit Range("Zielzelle") an, dann wird sie, egal wohin du sie auch schiebst, von VBA immer richtig angesprochen!
[Bild: attachment-190.gif]
Gruß Günter
aus der Helden-, Messe-, Musik-, Buch-, Universitäts- und Autostadt Leipzig
[-] Folgende(r) 1 Nutzer sagt Danke an Glausius für diesen Beitrag:
  • Naleor
Antworten Top
#3
Hallo

man sollte das Eintragen von festen Addressen in Makros generell vermeiden und über Namen von benannten Bereichen den Austausch zwischen Programm und Arbeitsblatt durchführen (siehe meine Signatur).

Allerdings würde ich den benannten Bereich nur dann über Range ansprechen, wenn ich in verschiedenen Arbeitsblättern den gleichen Namen habe.
Ich muss ja ansonsten im Programm den Namen des Arbeitsblattes anpassen, wenn ich den benannten Bereich in ein anderes Blatt verschiebe.

Bei Name, die in der gesamten Arbeitsmappe nur einmal vorkommen sollte man den Bereich immer ansprechen über :

ThisWorkbook.Names("Name").RefersToRange.Value     bzw.
ThisWorkbook.Names("Name").RefersToRange.Address

Das ist beim ersten Schreiben ein wenig sperrig, kann aber im VBA-Editor leicht kopiert und dann angepasst werden.
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:
  • Naleor
Antworten Top
#4
Hallo Helmut,

kannst bitte etwas dazu sagen, warum man das immer so handhaben soll.
Gruß Atilla
Antworten Top
#5
Vielen Dank für die Antworten. 
Das hat mir sehr geholfen.
Antworten Top
#6
Hallo atilla,

der Aufwand einmalig einige Buchstaben mehr zu schreiben ist für mich vernachlässigbar gegenüber der Freiheit benannte Bereiche beliebig in der Datei verschieben zu können ohne alle Makros anpassen zu müssen.

Ich habe das Wort "immer" geschrieben um auszudrücken wie wichtig diese Regel für mich ist.
Im Übrigen ist es doch nur eine Regel, wie: "Man soll Zellen in Excel nicht verbinden".

Und wozu sind Regeln da? 
Um nachzudenken bevor man sie bricht.

In diesem Fall bedeutet das für mich, dass ich im Normalfall (immer) die benannten Bereiche ohne nachzudenken über Names anspreche, und im Ausnahmefall sehr gut darüber nachdenke warum ich es dieses mal nicht mache.
(Dieser Ausnahmefall ist bei mir bisher nur eingetreten, wenn ich an einem Programm, in dem der ursprüngliche Programmierer mit Range arbeitet, kleinere Änderungen durchführe. )
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
#7
Hallo Helmut,

danke, für Deine Ausführungen.
Ich hatte erwartet, dass Du ein Beispiel bringst, was passieren kann , wenn man so referenziert:

Range("Name").Value.

So nutze ich es bisher und konnte keine Auffälligkeiten feststellen.
Dabei geht es mir nicht um Einsparungen in Textlänge.
Gruß Atilla
Antworten Top
#8
Vielleicht bekomme ich ja hier noch schnelle eine kurze Antwort, bevor ich jetzt einen neuen Thread aufmache. 

Ich habe leider noch nicht den richtigen Befehl gefunden, einen Bereich, der mit Namen versehen wurde, zu verstecken. 


Vorher sah das so aus. 
Code:
Worksheets("Tabelle1").Rows(10:15).Hidden

Nur habe ich jetzt es jetzt nicht hinbekommen, die Zeilen direkt mit einem Namen anzusprechen.
Antworten Top
#9
Hallo,

als Purist würde ich schreiben:
Code:
ThisWorkbook.Names("Name").ReffersToRange.Rows.Hidden = True

es geht aber auch:


Code:
Worksheets("Tabelle1").Range("Name").Rows.Hidden = True

Noch eine Anmerkung als Purist.
Da ich mich schon häufiger über ausgeblendete Zeile oder Spalten geärgert habe, insbesondere wenn ich dies nicht sofort gesehen und über diese Zellen hinaus kopiert habe, nutze ich fast immer die Gruppierung anstatt Zellen auszublenden.
Bei den heutigen Bildschirmgrössen stören die Gruppierungskennungen am Rand doch kaum und der Anwender sieht, dass dort noch zusätzliche zur Zeit nicht sichtbare Zellen sind.
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:
  • Naleor
Antworten Top


Gehe zu:


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