Excell 2003 - Makro

13/08/2009 - 16:47 von Rudolf | Report spam
Hallo,
in einem Makro sollen Wert1 mit Wert2 dividiert werden [gesucht wird
Primzahl= ja/nein].
Wenn das Ergebnis eine Ganzzahl ist, dann
meine Syntax bisher:
inhalt = C5
prim =inhalt -1
ActiveCell.FormularR1C1 = inhalt / prim
If ActiveCell = Ganzzahl Then
ActiveCell.FormulaR1C1 = "keine Primzahl"
Else
ActiveCell.FormulaR1C1 = "Primzahl"
Endif
Vermute, die Syntax ist falsch.
Kann mir jemand helfen?
Vielen Dank.
 

Lesen sie die antworten

#1 Andreas Killer
13/08/2009 - 17:44 | Warnen spam
Rudolf schrieb:

in einem Makro sollen Wert1 mit Wert2 dividiert werden [gesucht wird
Primzahl= ja/nein].


...
Vermute, die Syntax ist falsch.


Nun, zum einen solltest Du immer ein Makro komplett posten und nicht
nur Schnipsel, das ist einfacher für uns und besser für Dich.

Zum anderen ist Deine Syntax überhaupt keine.

Den Wert aus einer Zelle lesen geht z.B. mit
Inhalt = Range("C5")
Ob Du dabei die Zelle über Range("?") oder Cells(?, ?) oder ActiveCell
ansprichst ist egal (die ? geben die Position der Zelle an).

Ob eine Zahl eine Ganzzahl ist kannst Du mit
X = Int(X)
prüfen, wobei X die Zahl ist.

Wenn Du irgendwas in eine Zelle schreiben möchtest dann bitte mit
Range("C5") = Inhalt
d.h. nicht .FormulaR1C1 benutzen, das ist für Formeln gedacht, nicht
für Werte/Texte.

Deine Idee zum Test einer Primzahl ist..., naja ich sag mal vergiss es
einfach. Ich hànge Dir mal eine Test-Function für kleine Zahlen dran,
für größere bitte hier nachlesen:
http://de.wikipedia.org/wiki/Primzahltest

Der angehàngte Code muss in ein normales Modul, wie's geht steht hier:
http://www.online-excel.de/excel/si....php?fD#s2

Wenn nun Deine Zahl in Zelle C5 steht, dann schreibst Du in eine
andere Zelle die Formel
=IsPrime(C5)
und erhàlst als Ergebnis WAHR oder FALSCH. Möchtest Du einen anderen
Text ausgeben, dann kannst Du IsPrime auch in einer WENN-Formel verwenden:
=WENN(IsPrime(C5);"Primzahl";"keine Primzahl")

Andreas.

Function IsPrime(ByVal n As Long) As Boolean
'Returns true if the number is a prime number.
'This should work reasonably well for small numbers.
'For larger numbers the Rabin-Miller test should be used.
Dim i As Long
IsPrime = False
If n <> 2 And (n And 1) = 0 Then Exit Function 'test if div 2
If n <> 3 And n Mod 3 = 0 Then Exit Function 'test if div 3
For i = 6 To Sqr(n) Step 6
If n Mod (i - 1) = 0 Then Exit Function
If n Mod (i + 1) = 0 Then Exit Function
Next
IsPrime = True
End Function

Ähnliche fragen