Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1244to1248
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

Zeilenumbruch bei sehr langer Codezeile

Zeilenumbruch bei sehr langer Codezeile
Peter
Liebes Forum
Mir ist nicht klar, ob ich die lange Codezeile auf mehrere Zeilen verteilen kann (und wenn ja, wo das hier im konkreten Fall geht.
Sub ArrayFormelnEintragen()
Dim Zelle as Range
For Each Zelle in Range ("Eintrag")
With Zelle
.FormulaArray = "=IF(RC13="""","""",INDEX(INDIRECT(""'""&_Q&RC4&""'!""&N_T(R2C)&""2:""& _
N_T(R2C)&""12""),MAX(IF((INDIRECT(""'""&_Q&RC4&""'!E2:E12"")
Gruss, Peter
AW: Zeilenumbruch bei sehr langer Codezeile
16.01.2012 13:49:54
Rudi
Hallo,
kann man mit Leerzeichen+_ machen.
Der Formelstring kommt mir aber sehr merkwürdig vor. z.B. hier: ""&_Q&RC4&""
Wie soll der denn im Klartext aussehen?
Gruß
Rudi
AW: Zeilenumbruch bei sehr langer Codezeile
16.01.2012 14:02:48
Peter
Hallo Rudi
Ich musste da etwas basteln, damit die Formel 255 Zeichen nicht überschreitet.
_& ist eine benannte Zelle, dort ist [Simulation_Quelle.xlsm] eingetragen. Der von dir erwähnte Teilstring ist dann [Simulation_Quelle.xlsm]RC4, resp. das ganze Argument dort
[Simulation_Quelle.xlsm]RC4!E2:E12
Zu deiner Antwort: ich habe das an verschiedenen Stellen versucht, jedoch ohne Erfolg, denn ich erhalte immer die Fehlermeldung "erwartet Anweisungsende". Vielleicht geht das gar nicht, weil ich nirgends einen eigentlichen String habe?
Gruss, Peter
Anzeige
unverständlich
16.01.2012 14:38:06
Rudi
Hallo,
welche Formel soll in der Zelle stehen?
Gruß
Rudi
AW: unverständlich
16.01.2012 14:44:40
Peter
Hallo Rudi
Genau die Formel, die bei
.FormulaArray = "" in den Anführungszeichen steht
Das funktioniert alles, störend ist nur, dass dieser Code weit über den rechten Rand des Bildschirms hinausragt und ich deshalb zwei oder drei Zeilenumbrüche machen möchte, damit alles auf einmal ersichtlich ist.
Gruss, Peter
und ohne Schleife
16.01.2012 16:02:30
Josef

Hallo Peter,
geht auch ohne Schleife.
Sub ArrayFormelnEintragen()
  With Range("Eintrag")
    .Cells(1, 1).FormulaArray = "=IF(RC13="""","""",INDEX(INDIRECT(""'""&_Q&RC4&""'!""&" & _
      "N_T(R2C)&""2:""N_T(R2C)&""12""),MAX(IF((INDIRECT(""'""&_Q&RC4&""'!E2:E12""" & _
      ")<=_D)*(INDIRECT(""'""&_Q&RC4&""'!C2:C12"")=MAX(IF(INDIRECT(""'""&_Q&RC4&" & _
      """ '!E2:E12"")<=_D,INDIRECT(""'""&_Q&RC4&""'!C2:C12"")))),ROW(R1:R11)))))"
    .FillRight
    .FillDown
  End With
End Sub



« Gruß Sepp »

Anzeige
AW: und ohne Schleife
16.01.2012 22:02:47
Peter
Hallo Sepp
Das ist eine super Hinweis.
Hier im konreten Fall kann ich das so nicht machen, da in den einzelnen Spalten unterschiedliche Werte eingetragen werden (Beträge, Strings, Datum).
Ich habe deshalb versucht, nach Einfügen der Array-Formel in .Cells(1,1) diese Zelle zu kopieren und nur die Formeln im Bereich "Eintrag" einzufügen.
Allerdings stoppt mir der Code bei .PasteSpecial.
Was habe ich falsch gemacht?
Gruss, Peter
Sub ArrayFormelnEintragen()
With Range("TestEintrag")
.Cells(1, 1).FormulaArray = "=IF(RC13="""","""",INDEX(INDIRECT(""'"" &_Q&RC4&""'!""&" & _
"N_T(R2C)&""2:""&N_T(R2C)&""12""),MAX(IF((INDIRECT(""'""&_Q&RC4&""'!E2:E12""" & _
")

Anzeige
AW: und ohne Schleife
16.01.2012 23:19:40
Josef

Hallo Peter,
wenn die Referenzierung stimmt, dann geht das schon mit .Fill, wenn nicht, dann stimmt sie mit dem kopieren und einfügen auch nicht!
Die PasteSpecial - Methode geht hier nicht, händisch übrigens auch nicht, weil du damit den Teil eines Arrays ändern willst, und da kommt eben eine Fehlermeldung

« Gruß Sepp »

Anzeige
AW: und ohne Schleife
17.01.2012 07:24:12
Peter
Hallo Sepp
Vielleicht liegt ein kleines Missverständnis vor. Die Referenzierung klappt schon. Doch das Ergebnis der Abfrage liefert z.B. in der einen Spalte ein Datum und da mit rechts und unten abfüllen das Format aus der ersten Zelle übernommen wird, wird mir in der entsprechenden Spalte auch das Datumsformat überschrieben; alle Zellen enthalten dann das Format der ersten Zelle.
Deshalb dachte ich an die Lösung, die ich jeweils bei direkter Bearbeitung im Excel verwende: ich kopiere die erste Zelle, wähle den ganzen Bereich aus und füge nur die Formel ein; dann bleiben die ursprünglichen und gegebenenfalls unterschiedlichen Zellformate erhalten.
Gruss, Peter
Anzeige
AW: und ohne Schleife
17.01.2012 07:45:58
Josef

Hallo Peter,
dann schreib die Formel doch je Spalte nur in die erste Zeile und fülle diese Spalte nach unten aus, dann sparst du dir wenigstens ein paar Schleifendurchläufe.

« Gruß Sepp »

AW: und ohne Schleife
17.01.2012 10:04:41
Peter
Hallo Sepp
Vielen Dank. Ich werde das so machen.
Ich habe trotzdem noch eine Verständnisfrage:
Weshalb kann ich eine Matrixformel zwar nicht kopieren, aber trotzdem nach unten oder rechts ausfüllen?
Ist das "Ausfüllen" nicht auch so ähnlich wie kopieren?
Gruss, Peter
Anzeige
AW: und ohne Schleife
17.01.2012 10:16:46
Josef

Hallo Peter,
nein, probier es doch mit der Hand aus.
Schreib die Formel in eine Zelle, d kannst problemlos die Zelle an der unteren rechten Ecke fassen und nach unten ziehen, du kannst aber nicht die Zelle kopieren und dann in den größeren Bereich einfügen, wenn du die Formlezelle mit auswählst.

« Gruß Sepp »

Anzeige
AW: Vielen Dank - owT
17.01.2012 10:25:02
Peter
AW: Zeilenumbruch bei sehr langer Codezeile
16.01.2012 15:53:36
Josef

Hallo Peter,
du must jeweils vor und nach & _ ein Anführungszeichen (") setzen, damit sich pro Zeile ein abgeschlossener String ergibt.
Sub ArrayFormelnEintragen()
  Dim Zelle As Range
  For Each Zelle In Range("Eintrag")
    With Zelle
      .FormulaArray = "=IF(RC13="""","""",INDEX(INDIRECT(""'""&_Q&RC4&""'!""&" & _
        "N_T(R2C)&""2:""N_T(R2C)&""12""),MAX(IF((INDIRECT(""'""&_Q&RC4&""'!E2:E12""" & _
        ")<=_D)*(INDIRECT(""'""&_Q&RC4&""'!C2:C12"")=MAX(IF(INDIRECT(""'""&_Q&RC4&" & _
        """ '!E2:E12"")<=_D,INDIRECT(""'""&_Q&RC4&""'!C2:C12"")))),ROW(R1:R11)))))"
    End With
  Next
End Sub



« Gruß Sepp »

Anzeige
AW: Zeilenumbruch bei sehr langer Codezeile
16.01.2012 21:49:34
Peter
Hallo Sepp
Das hat jetzt geklappt.
Vielen Dank
Gruss, Peter
String aufteilen
16.01.2012 14:53:21
Harald
Hallo Peter,
Du kannst nicht innerhalb eines Strings auf eine Fortsetzungszeile wechseln. Das dazu nötige "_" wird der Interpreter als Teil des Strings interpretieren. Also musst Du den String auftrennen, z.B. so (der Teil " & _ " vor "=MAX..."):
With Zelle
.FormulaArray = "=IF(RC13="""","""",INDEX(INDIRECT(""'""&_Q&RC4&""'!""&N_T(R2C)&""2:""& _
N_T(R2C)&""12""),MAX(IF((INDIRECT(""'""&_Q&RC4&""'!E2:E12"")<=_D)*(INDIRECT(""'""&_Q&RC4&""'!C2:C12"")" & _
"=MAX(IF(INDIRECT(""'""&_Q&RC4&""'!E2:E12"")<=_D,INDIRECT(""'""&_Q&RC4&""'!C2:C12"")))),ROW(R1:R11)))))"
End With
Gruß Harald
Anzeige

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige