Unterschiedliche Formate in einem String

Bild

Betrifft: Unterschiedliche Formate in einem String
von: Dominik
Geschrieben am: 09.08.2015 03:34:40

Moin Leute,
ich hab ein kleines Problem. Ich habe bzw bin dabei ein Programm zur einfachen Formatierung von chemischen Formeln zu schreiben. Ich habe vor einem halben Jahr bereits so ein Programm geschrieben. Leider war das auf meinem alten Rechner und ich war einfach zu faul das Programm auf die neue Festplatte zu ziehen. Aber jetzt zu meinem Problem. Ich habe ne Maske in die ich die einzelnen Teile der Formel rein schreibe (BSP [H 2 S O 4] in fünf Zellen). Über drei Buttons kann ich jetzt entscheiden wie ich den Teil formatieren möchte, sprich hochgestellt, tiefgestellt oder normal. In meiner "Ergebnis"-Zelle habe ich dann die gesamte Formel stehen (BSP [H2SO4]. Soweit so gut. Soooooo. Jetzt müsste ich die Formate der einzelnen Zellen auf die entsprechenden Ziffern in der fertigen Formel übertragen. Hier beginnt mein Problem. Ich hatte damals mal nen Algorithmus geschrieben mit dem das kein Problem war. Der Algorithmus war nur 5/6 Zeilen lang. Ich habe allerdings leider keinen Schimmer mehr wie das war. Ich weiß nur noch, dass es mit len() für die Länge des Strings und mid() für die Positionen der Zifferm zu ermitteln war. Die einzige Lösung die mir momentan nochmal einfällt wäre die Länge der Strings in den einzelnen Zellen zu ermitteln und dann über die left() Funktion die Postion der Ziffern zu ermitteln. Das dauert bei knapp 30 Zellen leider etwas länger ;-D um genau zu sein zu lang.
Wenn einem von Euch was einfällt wäre ich Euch sehr dankbar mir eine Lösung oder einen Lösungsvorschlag zu unterbreiten
https://www.herber.de/bbs/user/99429.xlsx (Screenshot der Maske)
Grüße und Danke schonmal im Vorraus
Dominik

Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: Sepp
Geschrieben am: 09.08.2015 07:54:34
Hallo Dominik,
was sollen wir mit dem Screenshot anfangen? Warum lädst du nicht die Datei mit der Maske hoch?

Gruß Sepp


Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: Dominik
Geschrieben am: 09.08.2015 17:26:11
Gibt bisher nicht viel dran rumzuspielen ;-) Aber hier ist sie soweit
Ich habe, ums Euch leichter zu machen die ganzen Begrenzungen wie Scrollarea rausgeholt. Könnte beim Experimentieren hinderlich sein
https://www.herber.de/bbs/user/99442.xlsm
Grüße Dominik

Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: Sepp
Geschrieben am: 09.08.2015 18:03:19
Hallo Dominik,
https://www.herber.de/bbs/user/99444.xlsm

Gruß Sepp


Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: Dominik
Geschrieben am: 09.08.2015 20:21:43
Vielen Dank erstmal für die schnelle Lösung allerdings funktioniert diese nur wenn man immer nur einen Buchstaben oder eine Ziffer eingibt. Bei einer Formel wie C6H12O6 oder Fe2O3 wird bei der "kritischen Stelle" jeweils nur der erste Buchstabe bzw die erste Ziffer richtig formatiert danach ist alles um eins verschoben.
Grüße Dominik

Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: Sepp
Geschrieben am: 09.08.2015 20:24:07
Hallo Dominik,
genau das hast du gefordert!
"Ich habe ne Maske in die ich die einzelnen Teile der Formel rein schreibe (BSP [H 2 S O 4] in fünf Zellen)"

Gruß Sepp


Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: Dominik
Geschrieben am: 09.08.2015 23:41:40
Das stimmt :-D ich konnte schriftlich noch nie gut beschreiben was ich meine :-) Ich werde mal schauen ob ich das ganze in den nächsten Tagen nochmal zusammen gebastelt bekomme. Falls ja schreib ich hier nochmal nen Post rein.
Grüße Dominik

Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: fcs
Geschrieben am: 11.08.2015 04:38:30
Hallo Dominik,
hier das angepaßte Makro "Ergebnis" in der Datei von Sepp, so dass das Format in den Einzelnen Zellen in die Ergebnis-Zelle übernommen wird.
Gruß
Franz

Sub ergebnis()
    Dim lngCol As Long, lngCount As Long
    Dim strTmp As String
    For lngCol = 4 To 37
      If Cells(5, lngCol) = "" Then Exit For
      strTmp = strTmp & Cells(5, lngCol).Text
    Next
    
    With Range("AO5")
        .Font.Superscript = False
        .Font.Subscript = False
        .Value = strTmp
        If Len(strTmp) Then
            strTmp = ""
            For lngCol = 4 To 37
                If Cells(5, lngCol) = "" Then Exit For
                lngCount = Len(Cells(5, lngCol).Text)
                If Cells(5, lngCol).Font.Superscript = True Then
                    .Characters(Len(strTmp) + 1, lngCount).Font.Superscript = True
                ElseIf Cells(5, lngCol).Font.Subscript = True Then
                    .Characters(Len(strTmp) + 1, lngCount).Font.Subscript = True
                End If
                strTmp = strTmp & Cells(5, lngCol).Text
            Next
        End If
    End With
    
End Sub


Bild

Betrifft: AW: Unterschiedliche Formate in einem String
von: Dominik
Geschrieben am: 14.08.2015 22:12:40
Ja, tut mir leid hatte Deine Nachricht gar nicht gesehen. Das ist es was ich gesucht habe. Funktioniert. Danke
Grüße Dominik

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Unterschiedliche Formate in einem String"