Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
Range mit Variablen
01.10.2013 14:29:52
David
Hallo Forum-Gemeinde,
seit ein paar Tagen versuche ich nun bereits folgendes Problem zu lösen - leider ohne Erfolg. Ich möchte folgenden Code-Fetzen einem bereits bestehenden Excel 2003 Makro in Excel 2010 hinzufügen.
Bei meiner Recherche hier im Forum habe ich auch noch nichts gefunden, was mir weiterhilft. Falls es doch was gibt, bin ich für Hinweise dankbar. Sonst hoffe ich auf diesem Weg der Antwort näherzukommen. Mir ist bewusst, dass es andere/vermeintlich leichtere Lösungsmöglichkeiten gibt. Mir geht es aber ganz speziell um den Lösungsweg über die zwei globalen Variablen. Obwohl beide Variablen Werte haben, geprüft durch MsgBox Ausgabe, wird beim Ausführen folgender Fehler angezeigt: "Die Methode 'Range' ist für das Objekt '_Global' fehlgeschlagen".
Auszug aus Code:
Public Const Datum_MK As Integer = 1
Public Const Name_Datum_MK As String = "Datum_MK"
MsgBox "Name_Datum_MK = " & Name_Datum_MK
MsgBox "Datum_MK = " & Datum_MK
Range(Cells(3, Range(Name_Datum_MK).Column), Cells(3,35)).Select
Kann irgendjemand einen Grund finden, warum die Fehlermeldung immer wieder kommt? Im selben Projekt an andere Stelle klappt eine ähnlicher Code ohne Probleme. Zur Probe habe ich an der funktionierenden Stelle die Bezeichnung der Variablen mal geändert - mit dem Ergebnis der gleichen Fehlermeldung (Kompatibilitätsproblem 2003/2010 ?) Sind im Hintergrund / in den Einstellungen wohl möglich noch irgendwelche Einstellungen vorzunehmen? Ich bin für jeden Hinweis sehr dankbar.
Grüße David

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range mit Variablen
01.10.2013 14:38:07
Bastian
Hallo David,
dann hast Du nirgendwo eine Zelle mit Namen "Datum_MK".
Sonst müsste es laufen.
Gruß, Bastian

AW: Range mit Variablen
01.10.2013 15:27:35
David
Hallo Bastian,
danke für deine Antwort - leider verstehe ich das aber nicht. Vielleicht ist die Frage falsch und nicht angebracht. In diesem Fall bitte ich um Entschuldigung aber warum muss eine Zelle mit der Bezeichnung "Datum_MK" existieren?
Für mein Verständnis sollte das Ergebnis von Range(Name_Datum_MK).Column = 1 sein. Denn "Datum_MK" wurde als 1 deklariert. Im Ergebnis sollte im Klartext also Cells(3, 1) stehen.
Ist meine Annahme falsch?

Anzeige
AW: Range mit Variablen
01.10.2013 15:41:21
Bastian
Hallo David,
Du weist doch der Konstanten "Name_Datum_MK" den String "Datum_MK" zu!
In Zeile:
Public Const Name_Datum_MK As String = "Datum_MK"
Die Konstante Datum_MK hat damit nichts zu tun.
Warum möchtest Du zwei Konstanten den gleichen Wert zuweisen?
Gruß, Bastian

Für mein Verständnis
01.10.2013 15:44:02
Rudi
Hallo,
das ist vollkommen falsch.
Deine Konstante Name_Datum_MK hat schlicht den Wert "Datum_MK".
bei
Dim i as integer, s as string
i=10
s="i"
Msgbox s
Wird ja auch "i" ausgegeben und nicht 10.
Gruß
Rudi

AW: Für mein Verständnis
01.10.2013 15:50:55
David
Rudi,
danke. Eigentlich logisch - an irgendeiner Stelle muss ich falsch abgebogen sein. Leider bin ich jetzt komplett verunsichert?!
Das *.Column bezieht sich demnach auf eine Zelle mit dem Namen "Datum_MK" in der Zeile 3?
Danke für die vielen schnellen und hilfreichen Antworten!

Anzeige
AW: Range mit Variablen
01.10.2013 15:44:41
David
Hallo Bastian,
eine Ergänzung. Ich habe probiert, ob der Code funktioniert wenn ich in einer Zelle "Datum_MK" zu stehen habe. Es funktioniert leider auch dann nicht.

AW: Range mit Variablen
01.10.2013 15:48:32
Bastian
Hallo David,
kann auch nicht funktionieren,
versuch mal folgende Zeile:

Range(Cells(3, Datum_MK), Cells(3, 35)).Select
Gruß, Bastian

AW: Range mit Variablen
01.10.2013 15:57:28
David
Hallo Bastian,
ja das funktioniert. Allerdings steht im Klartext dann ja: [...] Cells(3, 1) [...], weil Datum_MK = 1 ist. Anscheinend habe ich ein Verständnisproblem mit der Funktion *.Column. Gibt es eine Möglichkeit mit Hilfe der Funktion zur Lösung zukommen. Es geht mir nicht nur darum das Rätsel zu lösen sondern gleichzeitig den Hintergrund von *Column innerhalb einer Range zu verstehen.

Anzeige
AW: Range mit Variablen
01.10.2013 16:05:03
Bastian
Hallo Rene,
im Klartext steht dann da:
Range(Cells(3, 1), Cells(3, 35)).Select oder:
Range("A3:AI3").Select
.Column gibt die Spaltennummer einer Zelle wieder (ich glaube das hast Du schon richtig vermutet)
Eine Zelle benötigt aber eine Spalte und eine Zeile:
Also: Cells(3, Datum_MK).Column ergibt 1, wenn Datum_MK den Wert 1 hat.
Wenn es Dir aber eh nur um die Spaltennummer geht, kannst Du auch direkt:
Range(Cells(3, Datum_MK), Cells(3, 35)).Select schreiben, ohne den Umweg über .Column
Gruß, Bastian

Sorry, meinte natürlich David... owT
01.10.2013 16:34:46
Bastian

Ja! Das hatte ich befürchtet und deshalb schon ...
01.10.2013 15:45:20
Luc:-?
…eine entsprd AW (an Bastian) vorbereitet, David,
dann aber noch rechtzeitig bemerkt, dass er recht hat. Du weist der Konstanten Name_Datum_MK einen Text, also wohl einen Namen, zu. Darunter erkennt VBA nie und nimmer die gleichnamige Konsante! Außerdem wäre das ohnehin Quatsch, denn das würde aufgelöst Range(1).Column ergeben! Teste das mal so! ;-)
Wenn Name_Datum_MK keine benannte Zelle sein soll, musst du dieser Konstanten eben den AdressText der relevanten Zelle zuweisen, denn darauf ist dein Code ausgelegt. Das mache ich stets auch so.
Gruß Luc :-?

Anzeige
3h um u.immer noch nicht zK genommen, aus! :-[
01.10.2013 18:50:03
Luc:-?
:-?

AW: 3h um u.immer noch nicht zK genommen, aus! :-[
02.10.2013 08:09:02
David
Luc,
vielen Dank für die hilfreichen Antworten. Ich werde schauen, ob ich mit den Hinweisen heute weiterkomme. Ich bin sehr zuversichtlich.
Gruß David

Na, dann viel Erfolg...! Gruß owT
02.10.2013 15:28:30
Luc:-?
:-?

AW: Range mit Variablen
01.10.2013 14:45:29
Rudi
Hallo,
wenn es sich um einen lokalen Namen handelt, muss entweder das Blatt aktiv sein oder du must vollständig referenzieren.
Gruß
Rudi

AW: Range mit Variablen
01.10.2013 15:39:34
David
Hallo Rudi,
vielen Dank für den Hinweis. Das Blatt ist aktiv, deshalb sehe ich von einer vollständigen Referenzierung ab. Die Frage, die sich mir bei deiner Antwort, als gelegentlicher VBA-Anwender stellt, ist: Was meinst du lokalem Namen. Die Konstanten sind (hier unrelevant)aber durchaus absichtlich als globale Konstanten deklariert und müssten m.E. im ganzen Projekt verfügbar sein, oder?

Anzeige
AW: Range mit Variablen
01.10.2013 15:48:39
Rudi
Hallo,
Die Konstanten sind (hier unrelevant)aber durchaus absichtlich als globale Konstanten deklariert und müssten m.E. im ganzen Projekt verfügbar sein, oder?
sind sie auch.
Die eine hat den Wert 1, die andere "Daten_MK".
Du hast da ein massives Verständnisproblem.
Lokale Namen sind Namen, die nur in einer Tabelle zur Verfügung stehen und nicht in der gesamten Mappe.
Gruß
Rudi

Noch ein Hinweis, ...
01.10.2013 14:50:25
Luc:-?
…David;
Zitat: …zwei globale(n) Variablen…
Das sind keine Variablen, sondern Konstanten (Const)!
Gruß Luc :-?

Anzeige
AW: Noch ein Hinweis, ...
01.10.2013 15:16:11
David
Danke Luc. Das ist natürlich richtig.

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige