Excel-VBA 2016 - MIt 'Namen' arbeiten

Hallo,

ich möchte gern einen (eigenen) Solver für Sudokus erstellen. Dazu habe ich mehrere Sheets erstellt (zb für 9er, 16er und 25er Sudokus). Aus optischen Gründen beginnen die „Muster“ in der Zelle B2.

Da ich nun nicht jedes Mal die Zellenwerte anpassen möchte (also wenn ich Zeile 1 will, muss ich Zeile 2 denken), habe ich Namen vergeben.

Per VBA habe ich jedem Sheet und jedem einzelnen Bereich (komplettes Sudoku, komplette Zeile(n), komplette Spalte(n), Quadrat(e) feste Namen vergeben lassen.
Somit habe ich - für jedes einzelne Sheet unterschiedliche Namen auf die ich nun zugreifen möchte.

Zu lösen soll eigentlich immer das „aktive Tabellenblatt“ sein.

Ich weiß aber nicht so richtig, wie ich zb jetzt folgendes auslesen (oder darin hinein schreiben) kann (die nachfolgenden Dinge sind nur Beispiele):

  • ich will alle Felder der 1. Zeile (Name: „Zeile1“) durchgehen und auslesen in eine Variable; mit Trennzeichen
  • ich will in das 3. Feld der 2. Spalte (Name: „Spalte2“) etwas hinein schreiben
  • ich möchte im "Block1 (der erste Block in Sudoku links oben) in der zweiten Zeile das erste Feld auslesen (wäre ja eigentlich das 4. Feld im Namen „Block1“; es wurde auch von links nach rechts, von oben nach unten gefüllt und ist in Excel auch so sichtbar.)

Wie kann ich das tun?

Alle Beispiele die ich im Netz gefunden habe, haben keine Lösung gebracht. Kam immer Fehler wegen „Global“ wenn ich mit Range gearbeitet habe. Z. B.

Dim Bereich
Bereich = Range(Zeile1) 'auch "Zeile1" geht nicht
MsgBox Bereich(1) 'auch Bereich(1).Value geht nicht

Danke im Voraus

Wäre es nicht einfacher wenn du entweder das „Umdenken“ von einer Funktion erledigen lässt, die das Umdenken übernimmt, oder dein Sudoku Feld einfach in ein 2 dim Array überführst und dann anschließend mit dem Array weiterarbeitest. Da kannst du die Zeilen/Spalten einfach per Index ansprechen.

Hallo,
Solver fuer Sudoku gibts im Netz, die loesen 9x9 in 1? 0,5? 0,2? Sekunden. Alles was Excel machen muss, ist die Daten in die Eingabemaske des Solvers umsetzen und zurueck.
Erzeuge sowas wie
0,2,0,5,9,3,0,0,0,1,2,4,…usw

es wäre evtl. einfacher. Aber … das war nicht mein Anliegen.
Mein Anliegen war: ich möchte es mit „Namen“ hin bekommen. :smile:
Gruß

hast du meine Frage richtig gelesen?

ich wollte nicht wissen, ob es Solver im Netz gibt oder so.

Ich möchte einen eigenen programmieren. Punkt. Ende. :smile:

Thema verfehlt. 6, setzen.

Gruß