| 
		
	
	
	
		
	Registriert seit: 06.12.2024
	
Version(en): LTSC / Excel 2013
 
	
		
		
		22.07.2025, 10:41 
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2025, 10:41 von ExcelEnte.)
		
	 
		Ich wollte eine Konstante über mehrere Zeilen erstellen, Excel scheint aber die Verkettung von Strings bei CONST abzulehnen.  Kann ich eine lange Konstantenstringliste irgendwie aufteilen bei der Konstanten Deklaration? Bsp: Code: const Stadtliste1 = " (Stadt like 'Köln%' " & _ "  OR Stadt like 'Bochum%'" & _
 "  OR Stadt like 'Düssel%') "
Die Liste ist natürlich viel länger als drei Städte. In einer Zeile geschrieben ist es ok.
	 
	
	
	
		
	Registriert seit: 22.09.2024
	
Version(en): 2010, 2021
 
	
		
		
		22.07.2025, 10:52 
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2025, 10:52 von knobbi38.)
		
	 
		Dein Code-Beispiel  funktioniert doch. Wo ist das Problem?
	 
	
	
	
		
	Registriert seit: 25.11.2021
	
Version(en): 2019, 365
 
	
		
		
		22.07.2025, 11:25 
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2025, 11:27 von Ralf A.)
		
	 
		 (22.07.2025, 10:41)ExcelEnte schrieb:  Code: const Stadtliste1 = " (Stadt like 'Köln%' " & _ "  OR Stadt like 'Bochum%'" & _
 "  OR Stadt like 'Düssel%') "
Die Liste ist natürlich viel länger als drei Städte. In einer Zeile geschrieben ist es ok.
 Das sieht mir eher nach dem Versuch aus, das als "Variable" in einem SQL-String verwenden zu wollen. Da werfen die Unterstriche als Bestandteil des Strings natürlich einen Fehler. Du musst unterscheiden zwischen der Deklaration, die in mehrere Zeilen aufgeteilt, und der Anweisung, die im SQL-Sring ausgegeben werden soll. Da muss die Deklaration so aussehen: PHP-Code: Const Stadtliste1 = " (Stadt like 'Köln%' " _& "  OR Stadt like 'Bochum%'" _
 & "  OR Stadt like 'Düssel%') "
 
...also die Unterstriche dürfen NICHT Teil des Strings sein.
	 
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
 
 Ciao, Ralf
 
 
 
	
	
	
		
	Registriert seit: 02.12.2017
	
Version(en): Microsoft365
 
	
		
		
		22.07.2025, 11:46 
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2025, 11:46 von EA1950.)
		
	 
		Hallo, Zitat:const Stadtliste1 = " (Stadt like 'Köln%' " & _ 
 "  OR Stadt like 'Bochum%'" & _
 "  OR Stadt like 'Düssel%') "
 du kannst in einer VBA-Konstantendeklaration  keine Operatoren verwenden, denn der Code,  der dafür notwendig wäre, existiert zur Laufzeit des Programms nicht.Konstanten  werden nämlich vom Compiler bereits zur Kompilierzeit des Codes  vollständig erstellt und nicht erst zur Laufzeit des Programmes mittels irgendwelcher Operatoren. Warum gibst du das Ganze nicht in eine String-Variable,  indem du dieser Variable (--> zur Laufzeit) den gewünschten String zuweist ? Code: Dim Stadtliste1 As String'....
 Stadtliste1 =  " (Stadt like 'Köln%' " & _
 "  OR Stadt like 'Bochum%'" & _
 "  OR Stadt like 'Düssel%') "
Gruß Anton.
 Windows 10 64bit
 Office365 32bit
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an EA1950 für diesen Beitrag:1 Nutzer sagt Danke an EA1950 für diesen Beitrag 28
	  • ExcelEnte 
	
	
	
		
	Registriert seit: 18.01.2021
	
Version(en): 365
 
	
	
		 (22.07.2025, 11:38)EA1950 schrieb:  Hallo,du kannst in einer VBA-Konstantendeklaration keine Operatoren verwenden, denn der Code,  der dafür notwendig wäre, existiert zur Laufzeit des Programms nicht.
 Konstanten werden nämlich vom Compiler bereits zur Kompilierzeit des Codes vollständig erstellt und nicht erst zur Laufzeit des Programmes mittels irgendwelcher Operatoren.
 
 Warum gibst du das Ganze nicht in eine String-Variable und weist dieser Variable (--> zur Laufzeit) den gewünschten String zu?
 
 
 Code: Dim Stadtliste1 As String'....
 Stadtliste1 =  " (Stadt like 'Köln%' " & _
 "  OR Stadt like 'Bochum%'" & _
 "  OR Stadt like 'Düssel%') "
 Deine KI halluziniert, genauso wie meine, die meint  Zitat:1. Const-Deklarationen dürfen keine zusammengesetzten Ausdrücke enthaltenIn VBA dürfen Const-Werte nur einfache, zur Kompilierzeit bekannte Werte enthalten – also keine Zeichenkettenverkettung (&), keine Funktionsaufrufe, keine Berechnungen.
 
 2. Zeilenumbruch mit _ ist bei Const nicht erlaubt
 Auch der Zeilenumbruch mit Unterstrich (_) ist bei Const-Deklarationen nicht erlaubt, wenn er innerhalb eines Ausdrucks verwendet wird.
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an DeltaX für diesen Beitrag:1 Nutzer sagt Danke an DeltaX für diesen Beitrag 28
	  • ExcelEnte 
	
	
	
		
	Registriert seit: 15.04.2018
	
Version(en): 2013
 
	
		
		
		22.07.2025, 12:00 
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2025, 12:10 von slowboarder.)
		
	 
		Hi Meinen Tests nach darf eine Programmzeile aus maximal 25 Editor-Zeilen bestehen ab der 26. Zeile kommt dann die Fehlermeldung "Zu viele Zeilenfortsetzungen" dh du darfst maximal 24x mit "_" umbrechen. Lösungen fallen mir jetzt folgende ein: a) alles in eine Zeile oder zumindest mehrere Städte in eine Zeile, so dass du unter 26 Zeilen für die Konstante bleibst. b) Variable statt Konstante. Variablen kannst du mit : x = x & "abc" in einer eigenen Programmzeile schrittweise erweitert, so dass du beliebig viele Textteile hinzufügen kannst (ggf auch per Schleife aus einer Tabelle als Vorgabeliste) c) wenn die Konstante in mehreren Makros verwendet werden soll, kann man auch eine Funktion erstellen: Code: Public Function Stadtliste1() As StringStadtliste1 = " (Stadt like 'Köln%' "
 Stadtliste1 = Stadtliste1 & "  OR Stadt like 'Bochum%'"
 Stadtliste1 = Stadtliste1 & "  OR Stadt like 'Düssel%'"
 End Function
diese Funktion kannst du dann wie eine Konstante in anderen Makros verwenden. Gruß Daniel 
  (22.07.2025, 11:46)EA1950 schrieb:  Hallo,du kannst in einer VBA-Konstantendeklaration keine Operatoren verwenden,
 doch das geht. Einfache Operatoren wie & für Texte oder +-*/ sind in der Konstantendeklaration zulässig. sowas funktioniert: Code: Option ExplicitConst x As Long = (1 + 2 + 3) * 25
 
 Sub test()
 Debug.Print x
 End Sub
die verwendeten Werte müssen Konstant sein, dh man kann hier keine Variablen verwenden, aber man darf rechnen und vorhandene Konstanten verwenden. sogar das funktioniert: Code: Option ExplicitConst y As Long = 3
 Const x As Long = (1 + 2 + y) * 25
 
 Sub test()
 Debug.Print x
 End Sub
Gruß Daniel
	 
	
	
	
		
	Registriert seit: 18.01.2021
	
Version(en): 365
 
	
		
		
		22.07.2025, 12:15 
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2025, 12:18 von DeltaX.)
		
	 
		Für Konstanten ist folgendes möglich [MS-VBAL]: Constant Expressions | Microsoft LearnCode: Enum rechtX = 42
 Y = 43
 Z = 44
 End Enum
 Const rechtx = recht.X
 Const green = vbGreen
 
 Sub testC()
 Debug.Print rechtx, green
 End Sub
Abgesehen davon, wenn es darum geht eine WHERE Klausel  aus Städtenamen aufzubauen, würde ich folgende Funktion verwenden Code: Function BuildWhereClause(cityList As Variant) As StringDim whereClause As String
 Dim i As Integer
 If UBound(cityList) < 0 Then
 BuildWhereClause = ""
 Exit Function
 End If
 
 whereClause = "("
 For i = LBound(cityList) To UBound(cityList)
 whereClause = whereClause & "Stadt LIKE '" & cityList(i) & "%'"
 If i < UBound(cityList) Then
 whereClause = whereClause & " OR "
 End If
 Next i
 whereClause = whereClause & ")"
 
 BuildWhereClause = whereClause
 End Function
 
 Sub testBeispiel()
 Dim liste As Variant
 liste = Array("Köln", "Düsseldorf", "Bochum")  ' In Praxis aus einer Tabelle lesen
 Debug.Print BuildWhereClause(liste)
 End Sub
 
	![[-]](https://www.clever-excel-forum.de/images/collapse.png) Folgende(r) 1 Nutzer sagt Danke an DeltaX für diesen Beitrag:1 Nutzer sagt Danke an DeltaX für diesen Beitrag 28
	  • ExcelEnte 
	
	
	
		
	Registriert seit: 22.09.2024
	
Version(en): 2010, 2021
 
	
		
		
		22.07.2025, 15:05 
(Dieser Beitrag wurde zuletzt bearbeitet: 22.07.2025, 15:05 von knobbi38.)
		
	 
		@Ralf:
 Die Unterstriche sind ja auch nicht Teil des zusammengesetzten Strings, egal ob der & - Operator nachgestellt oder in der nächsten Zeile steht. Wichtig ist, daß der Unterstrich immer als Letztes in der Zeile die Fortführung ankündigt, sonst steigt der Parser aus.
 
 Der gezeigte Code ist somit eine gültige Konstantendefinition, auch wenn Anton das anders sieht.
 
 Daniel hat das alles eigentlich sehr verständlich erklärt. 👌
 
 Knobbi38
 
	
	
	
		
	Registriert seit: 06.12.2024
	
Version(en): LTSC / Excel 2013
 
	
		
		
		23.07.2025, 07:49 
(Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2025, 07:50 von ExcelEnte.)
		
	 
		Das sehe ich jetzt nur den Unterschied dass du erst den Zeilenumbruch machst und dann die Verkettung, und ich mache es andersherum.
 Ich schreibe es einfach als globale Variable, das ist die praktikabelste Lösung.
 Danke für euren Input!
 
	
	
	
		
	Registriert seit: 25.11.2021
	
Version(en): 2019, 365
 
	
	
		 (22.07.2025, 15:05)knobbi38 schrieb:  @Ralf:
 Die Unterstriche sind ja auch nicht Teil des zusammengesetzten Strings, egal ob der & - Operator nachgestellt oder in der nächsten Zeile steht. Wichtig ist, daß der Unterstrich immer als Letztes in der Zeile die Fortführung ankündigt, sonst steigt der Parser aus.
 ...stimt. Das kommt davon, wenn man Fett auf der Brille hat...     
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.
 
 Ciao, Ralf
 
 
 |