Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
384to388
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
384to388
384to388
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

code??

code??
21.02.2004 13:49:30
cunradus
hallo programmierer,
folgendes problem:
will verschiedenste Formeln als text in einer zelle auslesen lassen
so z.B. in a1 steht 2, in a2 steht 3
in b1 erfolgt berechnung mit a1+a2
in b2 soll mir nunmehr ausgegeben werden: = 2 + 3 = (ohne ergebnis)
nachfolgender code von andre behandelt das problem bisher nur zum teil.
zum ersten gibt er das mit ergebnis aus (gut, damit könnte ich noch leben), aber sobald in der formel noch operanden wie z.B. a1*100+a2/3 vorhanden sind, dann erscheint die fehlermeldung '#wert'.
hier hätte ich dann aber gerne die darstellung: = 2*100 + 3/3 =
hat von euch einer eine idee
grüsse cunradus
Function Rechenweg2(Bereich As Range) As String
'von Andre Schau / 19.02.2004
Dim RechenZeichen, RechenWeg
Dim RechenZeichenStelle As Integer
  If Bereich.Count > 1 Then Bereich = Bereich(1)
  RechenWeg = Bereich.Address(0, 0) & " " & Bereich.FormulaLocal
  RechenZeichen = Array("=", "+", "-", "*", "/", "^")
  RechenZeichenStelle = Len(RechenWeg)
  Do While RechenWeg <> ""
    For i = 0 To UBound(RechenZeichen)
      If InStr(RechenWeg, RechenZeichen(i)) < RechenZeichenStelle And _
        InStr(RechenWeg, RechenZeichen(i)) <> 0 Then _
        RechenZeichenStelle = InStr(RechenWeg, RechenZeichen(i))
    Next
    If RechenZeichenStelle = Len(RechenWeg) Then
      Rechenweg2 = Rechenweg2 & Range(RechenWeg)
      RechenWeg = ""
    Else
      Rechenweg2 = Rechenweg2 & Range(Left(RechenWeg, RechenZeichenStelle - 1)) & _
                Mid(RechenWeg, RechenZeichenStelle, 1)
      RechenWeg = Right(RechenWeg, Len(RechenWeg) - RechenZeichenStelle)
    End If
    RechenZeichenStelle = Len(RechenWeg)
  Loop
End Function

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
hier n bischen code
23.02.2004 16:02:48
LarsLarsen
Guten Tag,
hab da mal schnell was hingetippt, sieht auch nicht besonders schön aus, sollte aber funktionieren.
bis dann
'**** Codeanfang

Function MySolution(ByVal bereich As Range) As Variant
'von mir / heute
Dim pos%
Dim Formel As String
Dim part
Dim Operanden()
Dim loesung
If bereich.Count > 1 Then
bereich.Text = "Bitte nur eine Zelle angeben!"
Else
Formel = bereich.Address(0, 0) & " " & bereich.FormulaLocal
Operanden = Array("=", "+", "-", "*", "/", "^")
'Ergebnisermittlung
pos = InStr(1, Formel, "=")
loesung = Range(Left(Formel, pos - 1)).Value & "="
Formel = Right(Formel, Len(Formel) - pos)
formellaenge = Len(Formel)
For i = 1 To formellaenge
For j = 0 To UBound(Operanden)
If Mid(Formel, i, 1) = Operanden(j) Then
part = Mid(Formel, 1, i - 1)
If IsNumeric(part) = True Then
loesung = loesung & part & Operanden(j)
Else
loesung = loesung & Range(part).Value & Operanden(j)
End If
Formel = Right(Formel, Len(Formel) - i)
i = 1
j = UBound(Operanden) + 1
Else
If i >= Len(Formel) Then
part = Formel
If IsNumeric(part) = True Then
loesung = loesung & part
MySolution = loesung
i = 10000: j = 10000
Else
loesung = loesung & Range(part).Value
MySolution = loesung
i = 10000: j = 10000
End If
End If
End If
Next j
Next i
End If
End Function

'**** Codeende
Larsen
Anzeige
Nachtrag
23.02.2004 16:11:36
LarsLarsen
Hab noch was vergessen: Der Aufruf muss etwa so aussehen:
=MySolution(A1)
aber nicht: =MySolution("A1")
So jetzt aber
Larsen
AW: Lars Larsen
25.02.2004 12:27:33
cunradus
Dank auch dir larslarsen,
aber bei kompilierungsfehler - bereich operanden=array...
schau mal weiter oben den code von ramses an
stichwort: letzter versuch
der funktioniert gut, bis auf das die zahlen in der formel dann mit allen nachkommastellen angezeigt werden.
grüsse
conrad

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige