SoftMaker.de

Deutschsprachiges Diskussionsforum
Aktuelle Zeit: 22.05.2013 08:26:46

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Replace
BeitragVerfasst: 25.01.2011 16:09:19 
Offline

Registriert: 25.01.2011 15:59:50
Beiträge: 4
Ich möchte folgendes Makro von Visaul Basic portieren, es fehlt aber die Funktione Replace:

Attribute VB_Name = "Modul2"
Sub BerechneFormel()
Attribute BerechneFormel.VB_Description = "Berechnet den markierten Formel-Ausdruck in der Spalte rechts davon "
Attribute BerechneFormel.VB_ProcData.VB_Invoke_Func = " \n14"
' Berechnung von Formeln:
' Formel aus einer markierten Spalte wird zu einem Ausdruck umgewandelt und die
' Spalte rechts davon eingetragen
ACSheet = ActiveSheet.Name
With Worksheets(ActiveSheet.Name)
For Each xcell In Selection
Row = xcell.Row
Col = xcell.Column + 1
If Len(xcell) > 0 Then
S$ = Trim(xcell.Value)
S$ = "=" & Replace(S$, ",", ".")
Worksheets(ACSheet).Cells(Row, Col).Value = S$
End If
Next xcell
End With

End Sub

Function Replace (iStr as String,vStr as String,nStr as String)
Dim nc as Integer, n as Integer
nc = len(iStr)
n = 1
While n <= nc
If Mid(iStr,n,1) = vStr Then
Mid(iStr,n) = nStr
end if
n = n + 1
Wend

End Function

Auch die Funktione mid MID(S1,1) = "X" funktioniert nicht.
Wie kann ich ein Zeichen ändern?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 25.01.2011 17:10:40 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 958
Ein kleines Beispiel als Anregung, hilft dir vielleicht weiter, beim Namen "Müller" wird das "ü" durch ein "ue" ersetzt.

****** Beginn Code

n = "Müller"
x = InStr(1, n, "ü")
neu = Mid(n, 1 , x - 1) & "ue" & Mid(n, x + 1 , len(n)-x)
MsgBox neu

****** Ende Code


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 25.01.2011 19:55:17 
Offline

Registriert: 01.02.2010 19:38:04
Beiträge: 76
Zitat:
Auch die Funktione mid MID(S1,1) = "X" funktioniert nicht.

Den Befehl »MID(S1,1) = "X"« gibt es in BM nicht.
Es gibt nur die (fehlerhafte) Funktion t = Mid(String, Start [, Länge])



Hier eine Replace Funktion:

Code:
FUNCTION Replace( iStr AS STRING, vStr AS STRING, nStr AS STRING )
   DIM nc AS INTEGER, n AS INTEGER
   nc = LEN( iStr )

   WHILE INSTR( iStr, vStr )
      n = INSTR( iStr, vStr )
      iStr = LEFT( iStr, n - 1 ) & nStr & RIGHT( iStr, nc - n )
   WEND
   Replace = iStr

END FUNCTION


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 29.01.2011 14:34:16 
Offline

Registriert: 25.01.2011 15:59:50
Beiträge: 4
Danke für die Hinweise.

Aus verschiedenen Skrpits (die ich dankbarer Weise auf diesen Seiten gefunden habe) zusammengebaut, nun das Endprodukt "pmBerechneFormel.bas".
Das Skript wertet die Formeln in einer markierten Spalte aus und überträgt sie in die Nachbarspalten wo sie von PlanMaker ausgewertet werden. In meinem Fall wird diese Spalte beim Drucken ausgeblendet.

Das Skript mit Tabelle als Beispiel:
Dateianhang:
Dateikommentar: Das Skript pmBerechneFormel und eine Tabelle als Beispiel
pmBerechneFormel.ZIP [3.27 KiB]
57-mal heruntergeladen


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 01.02.2011 20:29:41 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.02.2007 08:37:26
Beiträge: 2940
Ich habe mir das Skript mal kurz angeschaut und ich mag mich irren, aber… …wieso nimmst Du nicht einfach die Zell-Funktion INDIREKT?


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 02.02.2011 12:32:11 
Offline

Registriert: 25.01.2011 15:59:50
Beiträge: 4
Es geht Folgendes:
in der Spalte B werden die Berechnungsformeln als Text eingetragen.
in der Spalte D sollen die Zischenergebnisse und Ergebnisse der Formeln aufscheinen.

Für die Behörde, die jeden Rechenvorgang überprüfen möchte, drucke ich die Spalten A,B und D aus. Für die Auswertung der Formeln habe ich nichts (auch in Excel) gefunden als den Zwischenschritt über ein Makro den Text in eine Formel umzuwandeln.

Bin für jede Vereinfachung Dankbar.


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 03.02.2011 14:10:50 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 23.02.2007 08:37:26
Beiträge: 2940
OK, vergiss das wieder. Ich war irgendwie auf dem falschen Gleis abgebogen…


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 03.02.2011 17:19:20 
Offline
SoftMaker Volunteers
SoftMaker Volunteers

Registriert: 06.02.2007 14:01:47
Beiträge: 958
Ich würde mit der Eigenschaft "FORMULA" arbeiten.

Ein kleines Beispiel für eine Zelle, hier für Zelle "C3". Da du ja Scripts schreiben kannst, habe ich mir erspart, das Script für einen Durchlauf für alle Zellen auszubauen. Falls es doch Probleme gibt, melde dich wieder.

************************
Dim pm as Object

Set pm = CreateObject("PlanMaker.Application") ' Verbindung aufbauen
pm.Application.Visible = True

Formel = "=" & pm.ActiveSheet.Cells.Item(3,2).Value
pm.ActiveSheet.Range("C3").Formula = formel

Set pm = Nothing ' Verbindung aufheben
*********************************


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Replace
BeitragVerfasst: 03.02.2011 18:05:39 
Offline

Registriert: 25.01.2011 15:59:50
Beiträge: 4
So ähnlich hatte ich es gemacht und so (mit der notwendigen Verfeinerung) steht es im Skript zum Herunterladen. Für mich ist der Fall erledigt.


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 9 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de