Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1328to1332
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

Einsatz von Variabler bringt Fehler

Einsatz von Variabler bringt Fehler
03.09.2013 14:26:20
Variabler
Hallo Fachleute,
ich dachte ich mach was ganz Einfaches und krieg ne Fehlermeldung:
Ich habe:
str1
str2
str3
str4
Setz ich jetzt ne Variable ein:
str & n
krieg ich schon beim Schreiben die Fehlermeldung: "Fehler beim Kompilieren. Erwartet Ausdruck."
Was bitte ist denn hier mein Fehler? Sorry, aber ich steh am Schlauch udn bitte um Eure Hilfe.
Danke schonmal und Grüße
Franz

16
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einsatz von Variabler bringt Fehler
03.09.2013 14:38:47
Variabler
hallo franz,
zeige uns doch bitte den ganzen code. das macht es uns einfacher zu verstehen, was du überhaupt erreichen möchtest.
ins blaue geraten: "str" & n
(ist str aber schon eine variable, ist das so sicherlich nicht zu lösen.)
gruß
selli

Nehme an, str soll auch eine Variable sein, ...
03.09.2013 14:44:20
Luc:-?
…Franz;
Variablen kann man höher dimensionieren (als Vektor, Matrix, nDimTensor) oder als Variant mit Datenfeld gestalten und dann indizieren. Das dürfte in nahezu allen PgmSprachen ähnlich sein.
Deine Methode kenne ich nur von den alten Dot-Kommandozeilen im seligen WordStar! Hier kann das nicht fktionieren!
Dim n As Long, strX(1 To 4) As String (wenn sie denn Zeichenketten aufnehmen soll!) am PgmAnfang
Im Pgm dann strX(n) = …, nachdem n ein Wert von 1…4 zugewiesen wurde, sonst ist es =0.
So etwas gehört zu den PgmierGrundKenntnissen!
Gruß Luc :-?

Anzeige
AW: Nehme an, str soll auch eine Variable sein, ...
03.09.2013 14:51:12
Franz
Hallo Luc,
(also doch VBA kaum.... :-))))
Den ganzen Code zu posten erspare ich Euch/mir zunächst noch. Aber Teile:
Dim str1 As String, str2 As String, str3 As String, str4 As String
Dim Text_01 As String, Text_02 As String, Text_03 As String, Text_04 As String
Dim n As Byte
For .........
n = 1
str & n = Text_0 & n
n = n + 1
next
Schreibe ich:
str1 = Text_0 & n
das geht.
Schreibe ich aber:
str & n = Text_0 & n
das geht nicht....... ?
Grüße
Franz

AW: Nehme an, str soll auch eine Variable sein, ...
03.09.2013 14:56:39
Rudi
Hallo,
das geht nicht....... ?
genau!!!!
Variablennamen kann man nicht zusammenbasteln.
verwende Datenfelder.
 Dim str(1 to 4) As String
Dim Text( 1 to 4) As String
Dim n As Byte
n = 1
For .........
str(n) = Text(n)
n = n + 1
next

Gruß
Rudi

Anzeige
AW: Nehme an, str soll auch eine Variable sein, ...
03.09.2013 15:37:01
Franz
Hallo Rudi,
danke für die Antwort, ich probier mich auch damit, klappt aber noch nicht, drum jetzt doch mal den ganzen Code (vereinfacht):
Const Text_01 As String = "blabla 1"
Const Text_02 As String = "blabla 2"
Const Text_03 As String = "blabla 3"
Const Text_04 As String = "blabla 4"
Private Sub test()
Dim str(1 To 4) As String
Dim btFaerb As Byte
Dim btKop As Byte
Dim n As Byte
ActiveSheet.Unprotect
'GoTo ALT
For btKop = 1 To 4
For btFaerb = 24 To 45 Step 7
n = 1
If Range("GeigeCalDatKop" & btKop) = Cells(btFaerb, 1) Then
str(btKop) = Text_0(n)
End If
n = n + 1
Next btFaerb
Next btKop
btFaerb = 0
btKop = 0
Range("Test") = str1 & str2 & str3 & str4
End Sub

Jetzt wird das "Text_0" vor (n) moniert als "Sub oder Function nicht definiert"..............?
Grüße
Franz

Anzeige
noch immer falsch!!!
03.09.2013 15:42:59
Rudi
Hallo,
auch Text_ muss ein Datenfeld sein.
Außerdem setzt du hier
      For btKop = 1 To 4
For btFaerb = 24 To 45 Step 7
n = 1

n immer auf 1 zurück, so dass n = n + 1 keine Effekt hat.
Gruß
Rudi

Ich geb's auf....
03.09.2013 15:54:11
Franz
Hallo Rudi und Luc,
ich versteh's nicht ("auch Text_ muss ein Datenfeld sein" - da hab ich leider keine Idee was das heißt und was ich tun soll...........)
Danke für Eure Mühe und Grüße
Franz
P.S.: das mit dem n=1 war natürlich Schmarrn, ghört zwischenrein, ändert aber auch nix

zum letzten Mal:
03.09.2013 16:00:34
Rudi
Hallo,
etwa so:
Private Sub test()
Dim str(1 To 4) As String
Dim Text(1 To 4) As String
Dim btFaerb As Byte
Dim btKop As Byte
Dim n As Byte
Text(1) = "blabla 1"
Text(2) = "blabla 2"
Text(3) = "blabla 3"
Text(4) = "blabla 4"
ActiveSheet.Unprotect
'GoTo ALT
n = 1
For btKop = 1 To 4
For btFaerb = 24 To 45 Step 7
If Range("GeigeCalDatKop" & btKop) = Cells(btFaerb, 1) Then
str(btKop) = Text(n)
End If
n = n + 1
Next btFaerb
Next btKop
btFaerb = 0
btKop = 0
Range("Test") = str(1) & str(2) & str(3) & str(4)
End Sub

Gruß
Rudi

Anzeige
hmmm
03.09.2013 16:17:52
Franz
Hallo Rudi,
danke erstmal für Deine Geduld (die mir selber wohl grad ausgegangen ist). Danke auch für den Code, der wohl gut ist, so wie's aussieht, die ganzen Fehlermeldungen von vorher kommen nicht mehr! Ich werd mich auch dran machen, ihn durchzudenken und zu verstehen.
Jetzt hab ich aber vorher noch ein anderes Problem, jetzt krieg ich "Index außerhalb des gültigen Bereichs", und ich weiß noch nicht, wo das herkommt.
Aber das von Dir ist sicherlich gut, danke dafür.
Grüße
Franz

kleine Nachfrage
03.09.2013 16:34:29
Franz
"Index außerhalb des gültigen Bereichs": bezieht sich das nur auf das angesprochene Tabellenblatt? Oder kann es auch am Code liegen? Es wird nämlich gar nichts markiert, ich kann grad nur raten und eins nach dem anderen durchgehen.
Grüße
Franz
P.S.: oder soll ich damit einen neuen Thread aufmachen?

Anzeige
AW: kleine Nachfrage
03.09.2013 16:40:11
Rudi
Hallo,
Oder kann es auch am Code liegen?
ja.
z.B. wenn n>4 wird.
Gruß
Rudi

AW: kleine Nachfrage
03.09.2013 16:52:17
Franz
Hallo Rudi,
gut. Aber bei Deinem Code kann das ja sicherlich nicht sein, davon geh ich aus.
Und das Makro läuft ja überhaupt nicht los, nicht mal die erste Zeile "Private Sub test()" wird gelb unterlegt. Auch sonst wird nichts markiert.
Die Bereiche auf dem Tabellenblatt gibt es, das hab ich ncohmal genau überprüft. Sowohl
Dim btKop As Byte
For btKop = 1 To 4
MsgBox Range("GeigeCalDatKop" & btKop)
Next
als auch
Dim btFaerb As Byte
For btFaerb = 24 To 45 Step 7
MsgBox Cells(btFaerb, 1)
Next
funktioniert.
Auch
msgbox Range("Test") wird richtig angezeigt
hmmmmmmmmm..... na, ich werd schon draufkommen.
Danke und Grüße
Franz

Anzeige
AW: kleine Nachfrage
03.09.2013 19:28:30
Franz
Hallo Rudi,
jetzt hab ich's doch noch gefunden: "n = 1" über beide Schleifen, sondern dazwischen:
For btKop = 1 To 4
n = 1
For btFaerb = 24 To 45 Step 7
so klappt's
Grüße
Franz

Das hatte ich dir zu erklären versucht, ...
03.09.2013 15:02:50
Luc:-?
…Tom;
das geht nur in reinen Interpreter-Pgmm, bei denen der Interpreter das zur Laufzeit entsprechend übersetzt – die sind idR recht langsam, also für ein Druckpgm akzeptabel. Das ist aber sonst unüblich und in VBA auch nicht der Fall und somit ein klarer Syntax-Verstoß, denn ein zusammengesetzter Ausdruck, dem etwas zugewiesen wdn soll, ist hier nicht möglich, ein indizierter aber schon!
Luc :-?

Anzeige
Sorry Luc, .....
03.09.2013 15:14:01
Franz
..... aber ich versteh's noch nicht. Was ist bei
str & n
anders als bei
Text_0 & n
rätselnd
Franz

str & n steht LINKS vom =, ist also eine ...
03.09.2013 15:24:36
Luc:-?
…Variable, der etwas zugewiesen wdn soll, Franz;
demggüber steht Text_0 & n rechs vom =, repräsentiert also letztlich den zugewiesenen Wert und der kann manipuliert wdn, sonst wäre auch keine Fml möglich! Denn das 1. = steht in VBA für := (kommt in dieser Form nur bei direkt benannten Parametern von vbMethoden vor) bzw , den altbekannten Zuweisungsoperator. Erst ab dem 2. = wird es als VglsOperator (in anderen Sprachen oft ==) interpretiert, es sei denn, es handelt sich um einen Aufruf, keine Zuweisung.
Die syntaktisch richtige Form hat dir Rudi inzwischen auch noch sehr deutlich gezeigt.
Luc :-?
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige