Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Namen in Excel ansprechen

Namen in Excel ansprechen
10.02.2019 13:37:27
Tobias
Hallo,
ich habe (noch eine) Frage zu dem o. g. Thema.
Es geht ja, wie gesagt, um einen eigenen Sudoku-Solver :-)
Mit dem Code
For Each rngZelle In Range("Rechteck2")
MsgBox rngZelle
Next rngZelle
den ich im Netz gefunden habe, kann ich ja nun auf (insoweit) alle Bereiche eingehen und er liest mir brav alle Werte einzeln vor.
Also - "Rechteck2" bezieht sich auf einen Bereich von logischerweise 9 Felder (a 3x3). Wenn das Programm also den 4. Durchlauf macht, zeigt er mir eben den Wert der Zeile 2, Spalte 1 vor (mal so gesagt).
Alles ganz schick.
Nun möchte ich aber, dass ich auch über EINEN Wert dann auch den Wert auslesen kann oder setzen.
also a la "rngZelle(4) = 3", dass er eben den 4. Wert im aktuellen Range("Rechteck2") (2. Zeile, 1. Spalte) setzt.
Und mit "Msgbox rngZelle(4)" soll er mir eben konkret den 4. Wert anzeigen.
Bisher habe ich aber nur gefunden, dass ich das mit "Zeile, Spalte" lösen könnte - und das ist ja nicht Sinn und Zweck der Geschichte.
Wie kann man das elegant lösen?
Weiterhin finde ich folgendes kurios:
Wenn ich schon über "Zeile, Spalte" gehe und bei "Rechteck2" sage "Zeile = 1, Spalte = 6" (obwohl das Teil ja nur 3 Spalten breit ist), zeigt er mir den Wert der Zelle an, welche 3 Felder rechts vom Ende des Rechtecks ist.
Also, wenn "Rechteck2" jetzt wäre ($E$2:$G$4) und ich sage
lies bitte aus bzw. in dem Beispiel: schreibe rein (wenn leer)
Set bereich = Range("Rechteck2")
Zeile = 1
Spalte = 6
If bereich(Zeile, Spalte) = Empty Then bereich(Zeile, Spalte) = "3"
dann schreibt er den Wert in Zelle J2, obwohl J2 gar nicht zum Range gehört.
Was ist da der Hintergrund?
LG aus Dresden
Tobias

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Namen in Excel ansprechen
10.02.2019 13:51:20
Daniel
Hi
wenn du von einem Zellbereich Einzelzellen über den Index ansprechen willst, so nimmt VBA die erste Zelle des Bereichs als Ausgangsbasis und zählt von diesem die Indexwerte nach Zeilen und Spalten ab.
die eigentliche Größe des Zellbereichst spielt keine Rolle, dh es findet auch keine Prüfung statt, ob die so angesprochenen Zellen noch im Bereich liegen oder nicht.
dh dein Bereich(Zeile, Spalte) entspricht einem Bereich(1).Offset(Zeile - 1, Spalte - 1)
die Spaltennummern von Excel darfst du hier nicht anwenden, sondern musst Zeile und Spalte immer bezogen auf die erste Zelle des Bereichs angeben. (die erste Zelle von Bereich ist Bereich(1, 1))
du kannst beim Zeilbereich natürlich auch nur einen Index angeben, dann werden die Zellen im Bereich durchgezählt.
du hast das nur falsch angewendet, richtig wäre:
Range("Rechteck2")(4)
oder
Set Bereich = Range("Rechteck2")
Bereich(4)
oder
Set Bereich = Range("Rechteck2")
Bereich(2, 1)
alle drei Ausdrücke sollten die gleiche Zelle referenzieren, nämlich die erste Zelle in der zweiten Zeile.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige