excel-formel per vba mehrmals ausführen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:


Excel-Version: 10.0 (Office XP)
nach unten

Betrifft: excel-formel per vba mehrmals ausführen
von: stevi
Geschrieben am: 26.05.2002 - 12:44:34

und zwar habe ich folgendes problem: ein in einer zelle stehender text (z.b. "juhu") soll per excel-funktion CODE in seine ascii-werte kodiert werden. die funktion CODE kodiert aber jeweils nur das erste zeichen eines textes, daher möchte ich per vba irgendwie lösen, dass CODE auf jeden buchstaben einzeln angewendet wird und mir anschließend eine zahlenkette mit dem wort in ascii kodiert zurückgibt. hat jemand ideen wie das gehen könnte (bin leider kein vb-könner)? danke!
nach oben   nach unten

Re: excel-formel per vba mehrmals ausführen
von: jinx
Geschrieben am: 26.05.2002 - 13:28:43

Moin, stevi,

füge den folgenden Code in ein allgemeines Modul im VB-Editor ein:

Sub Text()
' Umwandlung der Zeichen in ASCII-Werte
' Abfrage des genutzten Bereiches per InoputBox
Wert = Application.InputBox("Auf den gewünschten Text zeigen", "Text für die Umwandlung", _
"Zeigen Sie mit der Maus auf den Bereich, " & Application.UserName, , , , , 8)
' Schleife zum Einlesen der Buchstaben und Umwandeln
For i = 1 To Len(Wert)
StrHilf = Mid(Wert, i, 1)
StrNeu = Asc(StrHilf)
'Rückgabe = Rückgabe & StrNeu       'Rückgabe als Zahlenfolge
' Hier erfolgt einen Trennung der Zeichen durch Bindestrich
If Rückgabe <> "" Then
Rückgabe = Rückgabe & "-" & StrNeu
Else: Rückgabe = StrNeu
End If
Next
' Schreiben in die zur Zeit aktuelle Zelle
ActiveCell.Value = Rückgabe
End Sub

Bei der Ausgabe in der Aktiven Zelle wird 104-105-108-102-101 angezeigt, die Darstellung 104105108102101 (Exponentialdarstellung) kann durch Kommentieren des Textes zwischen If und End If und Auskommentieren der Zeile 'Rückgabe = Rückgabe & StrNeu 'Rückgabe als Zahlenfolge erfolgen...

HTH
jinx


nach oben   nach unten

Re: excel-formel per vba mehrmals ausführen
von: stevi
Geschrieben am: 26.05.2002 - 13:39:25

respekt!! danke, jinx!

nächste frage *g*
zum de-kodieren müsste man ja den 104-105-108 etc. string irgendwie aufgrund der "-" tokenizen, wie löst man das am besten?

1000 dank, stevi


nach oben   nach unten

Re: excel-formel per vba mehrmals ausführen
von: Klaus Schubert
Geschrieben am: 26.05.2002 - 13:42:47

Hallo Stevi,

so ganz ohne VBA wird's nicht gehen, aber auch kein Problem.
Ich hoffe , dass sich die Vorgehensweise bei Office XP nicht geändert hat.
Normalerweise musst du mit Alt + F11 in den VBA-Modus und in ein normales Modul den unten aufgeführten Code reinkopieren. Falls du nicht weißt, wie das läuft , kannst du es auch so machen: Klicke in der Menüleiste Extras/Makro/Makros... .Unter Makroname gibst du jetzt den Namen CODE_Wort ein und bestätigst den Namen mit der Return-Taste. Jetzt befindest du dich im VBA-Modus und überschreibst den Code

Sub CODE_Wort()
End Sub

mit dem nun folgenden Code:


Function CODE_Wort(Text As String)
Dim As Integer, Zwischenspeicher As String

    For i = 1 To Len(Text)
    Zwischenspeicher = Zwischenspeicher & Asc(Mid(Text, i, 1)) & "-"
    Next i

CODE_Wort = Left(Zwischenspeicher, Len(Zwischenspeicher) - 1)
End Function

Jetzt das VBA-Fenster schließen. Ab jetzt steht dir die benutzerdefinierte Funktion CODE_Wort zur Verfügung.
Gebe nun in einer Zelle z.B. =CODE_Wort("Juhu") ein und du bekommst das Wort in Zahlen.


Gruß Klaus


nach oben   nach unten

Re: excel-formel per vba mehrmals ausführen
von: stevi
Geschrieben am: 26.05.2002 - 13:54:41

auch perfekt, danke!
gibts da eine ebenso elegante funktion zum dekodieren auch gleich dazu? *g*

liebe grüße und danke, stevi


nach oben   nach unten

Re: excel-formel per vba mehrmals ausführen
von: jinx
Geschrieben am: 26.05.2002 - 13:58:21

Moin, stevi,

da ich nicht weiß, wie Du die Zahlen benötigst, hier einige weitere Vorschläge:

Schreiben der Werte in nebeneinanderliegende Zellen:
Len(Wert)
StrHilf = Mid(Wert, i, 1)
ActiveCell.Offset(0, i).Value = Asc(StrHilf)

Einfügen eines Zeilenumbruches:
Rückgabe = Rückgabe & Chr(10) & StrNeu

Auslesen geht analog zum Aufsplitten:
If i = 1 Then
a = 1
a = i * 3 + 1
End If
StrHilf = Mid(Wert, a, 3)

cu
jinx

nach oben   nach unten

Re: excel-formel per vba mehrmals ausführen
von: Klaus Schubert
Geschrieben am: 26.05.2002 - 19:22:07

Hallo Stevi,
damit meinst du wahrscheinlich den umgekehrten Weg , oder ?


Function WORT_Code(Text As String)
Dim As Integer, b As Integer
Dim ZS As String, Sp As String, TMP As String

Sp = "-"
    a = 1: b = 1
    TMP = Text

    Do While a <> 0
        a = InStr(TMP, Sp)
        If a = 0 Then
        ZS = ZS & Chr(TMP)
        WORT_Code = ZS: Exit Function
        Else
        ZS = ZS & Chr(Left(TMP, a - 1))
        TMP = Right(TMP, Len(TMP) - a)

        End If
    Loop

End Function

Ist genauso zu handhaben wie die Funktion zum kodieren.

Gruß Klaus

 nach oben

Beiträge aus den Excel-Beispielen zum Thema "excel-formel per vba mehrmals ausführen"