Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1828to1832
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

Zeilenschaltung in Formel

Zeilenschaltung in Formel
14.05.2021 10:52:35
Norbert_H
Hallo,
ich ändere Dateien über eine Updateroutine. Dabei sollenbei 35 Dateien an Neun Stellen Daten geändert werden. Dies klappt bisher auch ganz gut,
Im speziellen Fall handelt es sich um eine Formel die Kontaktinformationen in eine Zelle schreibt, die mit einem Zeilenumbruch formatiert ist.
In der Zelle habe ich den Umbruch manuell über Alt Return an den passende Stelle eingefügt. Alle Versuche die Formel über VBA zu ändern scheitern aber an der Zeilenschaltung.
Nachfolgend ein Teil der Formel (Im Original kommen noch einige geschachtelte Wenns hinterher).
=WENN(A1="K. Mustermann";"Home Office
Telefon : 01234 / 5678-98
Telefax : 01234 / 5678-99";WENN(A1="A. Müller";"Telefon : 98765 / 4320-11";""))
Die Zeilenumbrüche haben Zeichen(10). Die Formel, die in die Zelle geschrieben wird beginnt mit Range("BE39").FormulaLocal = ?
Zeilenumbrüche mit chr(10) oder vbCrLf funktionieren bei mir nur in reinen Textformeln.
Etwas wie & chr(10) & steht dann wortwörtlich in der Zelle wird aber nicht als Funktion für den Zeilenwechsel ausgeführt.
Ist es möglich, die Formel mit der Zeilenschaltung in der Zelle in VBA nachzubauen?
Schon mal im Voraus besten Dank an die Gemeinde.
Grüße Norbert

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilenschaltung in Formel
14.05.2021 11:02:20
ChrisL
Hi Norbert
Hast du unter Zellen formatieren, Ausrichtung, den Zeilenumbruch aktiviert?
cu
Chris
AW: Zeilenschaltung in Formel
15.05.2021 11:24:12
Norbert
Hallo Chris,
der Textumbruch ist in der Zellformatierung aktiviert.
Im Direktbereich wird auf die Abfrage:

range("B1").FormulaLocal
nachfolgendes mit "Zeilenschaltung" angezeigt:

=WENN(A1="K. Mustermann";"Home Office
Telefon : 01234 / 5678-98
Telefax : 01234 / 5678-99";WENN(A1="A. Müller";"Telefon : 98765 / 4320-11";""))
Allein die vorangegangene Formel unter VBA hinzubekommen würde mir schon reichen. Wobei der Zeilenumbruch nicht abhängig von der Zellgröße ist, sondern manuell über Alt Return "Chr(10)" vorgenommen wird.
Musterdatei anbei: https://www.herber.de/bbs/user/146203.xlsm
Grüße Norbert
Anzeige
AW: Zeilenschaltung in Formel
17.05.2021 08:31:38
ChrisL
Hi Norbert
Ich empfehle die englische Schreibweise (Formula), da du damit unabhängig von der Spracheinstellung bist.
Du musst dich entscheiden, ob du Chr als VBA-Befehl oder CHAR (ZEICHEN) als Formel verwenden willst. Schlussendlich geht es nur darum den Text-String richtig zu formulieren.

Range("C1").Formula = "=""Hans" & Chr(10) & "Meier"""

Range("C2").Formula = "=""Hans""&CHAR(10)&""Meier"""

Range("B1").Formula = "=IF(A1=""K. Mustermann"",""Home Office" & Chr(10) & "Telefon : 01234 / 5678-98" & Chr(10) & "Telefax : 01234 / 5678-99"",IF(A1=""A. Müller"",""Telefon : 98765 / 4320-11"",""""))"

Range("B2").Formula = "=IF(A1=""K. Mustermann"",""Home Office""&CHAR(10)&""Telefon : 01234 / 5678-98""&CHAR(10)&""Telefax : 01234 / 5678-99"",IF(A1=""A. Müller"",""Telefon : 98765 / 4320-11"",""""))"
Die Sinnhaftigkeit der Musterformel erschliesst sich mir nicht. Wenn du für jeden Namen eine WENN-Verschachtelung machst, dann wird die Formel lang und unübersichtlich. Ohne die exakte Aufgabe zu kennen würde ich darauf tippen, dass eine Tabellen-Liste und SVERWEIS besser geeignet wäre.
cu
Chris
Anzeige
AW: Zeilenschaltung in Formel
17.05.2021 15:23:26
Norbert_H
Hallo Chris,
vielen Dank für deinen Lösungsansatz. Ich sehe im Ergebnis keinen Unterschied zwischen der ersten und zweiten Variante bei mir, außer dass das
char10 zwischen den & noch ein Leerzeichen hat. Anbei ein Beispiel, wie es in der Zelle steht.

=WENN(A1="K. Mustermann";"Home Office"&ZEICHEN(10)&"Telefon : 01234 / 5678-98"&ZEICHEN(10) &"Telefax : 01234 / 5678-99";WENN(A1="A. Müller";"Telefon : 98765 / 4320-11";"")) 
Die Originalformel enthielt auch vorher das char(10), allerdings als Zeilenschaltung und nicht als Befehl.
Das ganze über einen SVERWEIS zu regeln macht Sinn. Allerdings passt das nicht auf die Tabellen und müsste in einem neuen Arbeitsblatt hinterlegt werden. Den Aufwand habe ich bis jetzt gescheut, weil ich an vielen Stellen Makros laufen habe, die zum identifizieren der "gültigen Arbeitsblätter" jedes Blatt durchläuft und dann in einem Select Case die Arbeitsblätter bearbeitet. Unter anderem läuft das ganze dann in eine Fehlermeldung, weil der neue Tabellenname für die Stammdaten bisher nicht vorhanden ist. Hier müsste ich an duzenden Stellen Anpassungen vornehmen.
Beim Ausprobieren bin ich auf folgendes gestoßen. Wenn man zuerst das ganze in eine Textvariable speichert, dann verschwindet das & Zeichen(10) & in der Formel bei Eingabe von:

Sub Neu1()
Dim strText As String
strText = "WENN( ..... )"
With Tabelle1.Range("B2")
.FormulaLocal = "=" & strText
End With
End Sub
Es dauert etwas, bis mann die vielen einfachen und doppelten Gänzefüßchen an der richtigen Stelle hat.
Meine Frage ist hiermit beantwortet. Wäre schön, wenn Du mir "blindes Huhn" noch erklärst, wo der Unterschied zwischen der 1+2 / 3+4 Variante ist.
Vielen Dank für die Hilfe
Grüße Norbert
Anzeige
AW: Zeilenschaltung in Formel
17.05.2021 16:24:23
ChrisL
Hi Norbert
Danke für die Rückmeldung.
Wie erwähnt, das eine ist ein VBA-Befehl, welcher einen Charakter erzeugt. Das andere ist eine Formel (Tabellenfunktion). Vielleicht siehst du den Unterschied hiermit:

Range("A1") = Chr(65)
Range("A2").Formula = "=CHAR(65)"
Der Unterschied war nicht nur der Leerschlag. Die Formel bleibt innerhalb vom Text-String, während für VBA-Chr der Textstring unterbrochen wurde, damit der Befehl bereits in VBA ausgeführt wird.
Womöglich müsstest du mal mit Text-Strings und Gänsefüssen experimentieren, damit die Grundlagen vorhanden sind. Beispiele wie z.B.

MsgBox "Hallo Welt"
MsgBox "Hallo " & 1 & " Welt"
MsgBox "Hallo " & 1 & " ""schöne"" Welt"
MsgBox "=""Hallo ""&DummyFormel(1)&"" Welt"""
MsgBox """Hallo " & 1 & " ""schöne"" Welt"""
Z.B. If-Then-Else kannst du ja auch direkt in VBA verwenden. Oder aber du kannst eine WENN-Formel schreiben.
cu
Chris
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige