PDA

Vollständige Version anzeigen : Excel Formeln in VBA


SeNf
21.04.2009, 12:36
bin beim suchen nicht wirklich fündig geworden...

gibt es eine übersicht wie ich formeln aus excel ins VBA übertagen oder wie die formeln in VBA aussehen müssen?
jetzt gerade wäre es die =max(A:A) aber das problem habe ich immer mal wieder...?

Gruß

ZeC
21.04.2009, 12:47
Hi SeNf!

Vl hilt dir der Link zur Office-HP (http://office.microsoft.com/en-us/excel/HP052042111033.aspx)

Ist zwar Englisch aber, das sind Funktionen auch :grins:

und hier ein Link zur Übersetzung von Funktionen und deren englisches Gegenstück (für VBA):
Klickst du mich (http://www2.odn.ne.jp/excel/functioningermany.html)

pefeu
21.04.2009, 12:48
Hallo SeNf,

Tipp: man kann eine Formel in eine Zelle kopieren -- dann Recorder starten -- F2 und Enter und schon steht die Formel im Makro.

Gruß Peter

hary
21.04.2009, 12:54
Hi
oder so bei Normaler schreibweise zB.
<pre>
Range("G3").FormulaLocal = "=max(A:A)"
</pre>
Gruss Hary

EarlFred
21.04.2009, 12:56
Hallo SeNf,

such mal im Programmordner\Office\Excel nach der Datei VBALISTE.xls

Da ist eine Übersicht der Tabellenblattfunktionen sowie der englischen Übersetzungen enthalten.

Grüße
EarlFred

SeNf
21.04.2009, 13:50
@all
vielen Dank bin fündig geworden :-)
Gruß
Steffen

SeNf
21.04.2009, 14:00
nein doch nicht ganz, ich möchte nicht die formel in das sheet schreiben über vba, ich möchte die formel in einer user form rechnen lassen damit ich das ergebnis direkt zurückgeben kann...
gruß
Steffen

jinx
21.04.2009, 14:08
Moin, Steffen,

und nun wird´s gemischt - es gibt Funktionen, die eine Entsprechung in VBA haben, die also per ihren VBA-Anweisungen eingesetzt werden. Alle übrigen können per WorksheetFunction.Name(Parameter).

Für Deine Frage:

Private Sub CommandButton1_Click()
Dim dblWert As Double
dblWert = WorksheetFunction.Max(Range("A:A"))

MsgBox dblWert & vbCrLf & dblWert / 4 & vbCrLf & _
dblWert * dblWert & vbCrLf & WorksheetFunction.RoundDown(dblWert / 100, 1)

End Sub

SeNf
22.04.2009, 06:25
so jetzt hats geklappt, aber wenn ich das richtig verstanden habe geht das nicht generell so?
gruß

jinx
22.04.2009, 06:31
Moin, Steffen,

was geht nicht generell so?

SeNf
30.04.2009, 14:30
ich meinte so wie von harry beschrieben zb:
Range("G3").FormulaLocal = "=max(A:A)"
oder muß ich wirklich immer nur die englische formel nehmen?
Gruß
Steffen

hary
30.04.2009, 14:45
Hi Steffen
Ne, das wird nicht. Ich davon ausgegangen das Du via VBA die Formel in die Tab bringen wolltest.
Zur berechnung innerhalb VBA
Worksheet Function in Englisch
evtl eine ander Moeglichkeit. Formel eingabe wie ich beschrieben,dann Zelle auslesen und den Zellinhalt wieder loeschen.
Wuerde aber im Englischn bleiben.
Gruss Hary

NoNet
30.04.2009, 16:14
Hallo Senf,

wenn Du in VBA mit den Tabellenblattfunktionen rechnen möchtest ("WorksheetFunction"), dann musst Du (wie auch im restlichen VBA-Code) englischsprachige VBA-Anweisungen/Funktionsnamen verwenden.

Um zu ermitteln, wie eine bekannte deutsche Funktion auf englisch heisst, kannst Du in der VBALISTE.XLS nachschauen oder auch folgenden kleinen Trick verwenden :

- gib in eine Zelle eine Funktion ein, z.B. : =SVERWEIS(E1;A1:C10;3;0) und bestätige per ENTER
- Klicke diese Zelle nochmals an, damit sie markiert ist (=> aktive Zelle)
- Wechsle in den VBA-Editor
- Drücke Strg+G um in den Direktbereich zu gelangen
Gib dort folgende Befehlszeile ein (mit ENTER bestätigen) : ?Activecell.Formula

Nun wird die englische Schreibweise der Funktion angezeigt : =VLOOKUP(E1,A1:C10,3,0)

Die meisten Funktionen kannst Du 1:1 als Woksheetfunction in VBA verwenden, hier also :
Msgbox Application.WorksheetFunction.VLOOKUP(E1,A1:C10,3,0)