3.5k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (119 Punkte)
Guten Tag, ich habe ein Problem mit einer Basic Formel die in ein VBA Makro eingebunden werden sollte. Die Formel habe ich im Upload hinterlegt.
http://www.file-upload.net/download-1521564/MAKRO-A.xls.html Würde mich freuen wenn einer da helfen könnte

12 Antworten

0 Punkte
Beantwortet von
hi,
kannst du die formel nicht hier veröffentlichen?

so einfach ein download? vielleicht sind da viren drin?

gruss
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Hi,
vielen Dank für den Hinweis, die Formel lautet wie folgt: Z=Z+1
FOR I = 1 TO Z
IF I = 1 THEN ER = A( I ) : A( I ) = A ( I+1 ) ELSE A ( I ) = A ( I+1)
NEXT I
A ( Z ) = ER : CLS
IF I > 12 THEN Z=1
Diese ist eine Basic Formel, und ich brauche diese in VBA mit einem Makro zu bedienen,
sodas nach 12 maliger Betätigung die gleiche Reihenfolge von A1:A12 wieder von 1-12 in A1:A12 erscheint.In A1:A12 steht eine Zahlen Reihe von A1=1, A2=2 usw. Die Zahlen werden mit dieser Formel nur getauscht. Gruß
0 Punkte
Beantwortet von
hi,
funktioniert wahrscheinlich so auch in vba.
ich muß aber jetzt mal weg,
kann nicht so genau jetzt hinschauen.
bin später wieder da.

gruss
0 Punkte
Beantwortet von
hi,
kurz mal wieder hier,


Z=Z+1
FOR I = 1 TO Z
IF I = 1 THEN ER = A( I ) : A( I ) = A ( I+1 ) ELSE A ( I ) = A ( I+1)
NEXT I
A ( Z ) = ER : CLS
IF I > 12 THEN Z=1


was bedeutet bei dir das "I" und "Z" in klammern?
soll das eine zahl bzw. der zähler sein?

soll es ein wert aus der tabelle auslesen, muß du das ganze anders gestalten.

vba interpretiert das als dimensionierte variable.

den befehl "CLS" kann er wie gewünscht auch nicht ausführen.

übersichtliche schreibweise ist auch empfehlenswert.
z.b.: (ohne syntaxberichtigung)

Z=Z+1
FOR I = 1 TO Z
IF I = 1 THEN
ER = A( I )
A( I ) = A ( I+1 )
ELSE A ( I ) = A ( I+1)
END IF ' < zusatz von mir wegen anderer aufteilung
NEXT I
A ( Z ) = ER : CLS
IF I > 12 THEN Z=1

je nach einstaz der variablen, mußt du diese vorher entsprechend deklarieren
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Hi,
du müßtest mal in Excel dieses mal eingeben mit einem Makro und dann probieren, das Z ist die Zählvariable. das CLS ist bei Basic der Befehl zum löschen. das I in der Variable die Spalte A von A1= 1 bis A12=12
probiere es mal, bis bald Gruß von mi
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi kallie ^^

vielleicht so :-)

gruss nighty

Sub BereichScroll()
Dim ELager As Variant
Dim IndZaehler As Integer
ELager = Cells(12, 1)
For IndZaehler = 12 To 2 Step -1
Cells(IndZaehler, 1) = Cells(IndZaehler - 1, 1)
Next IndZaehler
Cells(1, 1) = ELager
End Sub
0 Punkte
Beantwortet von
hi kallie,

dein basic kenn ich nicht, und wie du das prg hier aufgeschrieben hast, funktioniert es auch nicht in vba unter excel.
das brauch ich gar nicht zu versuchen.

beim listing von nighty fehlt der bezug zum tabellenblatt.

wenn du einen wert aus einer tabelle einlesen willst, mußt du dem programm auch mitteilen, von welchen tabellenbllatt, zeile und spalte der wert eingelesen werden soll.

danach kannst du es in form einer "FOR - NEXT" schleife dann machen, wenn du vorher die variablen, ähnlich wie im beispiel von nighty, mit "DIM" declarierst.

in excel gibt es dazu auch hilfen. teilweise kannst du dann von den beispielen brauchbares in dein prg. hineinkopieren.

gruss
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi gast123 ^^

wie gewuenscht :-)

gruss nighty

Sub BereichScroll()
Dim ELager As Variant
Dim IndZaehler As Integer
With Worksheets("Tabelle1")
ELager = .Cells(12, 1)
For IndZaehler = 12 To 2 Step -1
.Cells(IndZaehler, 1) = .Cells(IndZaehler - 1, 1)
Next IndZaehler
.Cells(1, 1) = ELager
End With
End Sub
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Hi nighty,
ich finde das wirklich gut und vielen Dank, daß du dir die Mühe machst mir zu helfen weil ich es wirklich in Excel einbauen möchte, Ich habe dein Script so übernommen aber es macht natürlich noch Fehlermeldung, die ich auch nicht alleine beseitigen kann, deshalb schreibe ich dir, wo ich mit dem Makro 2 es eingebaut haben möchte. Wenn es dir nichts ausmacht dann probiere es mal bei dir in deinem Excel mit meinem Script als Probelauf aus und schicke es mir danach zurück. Erst mal vielen Danke Nighty

Sub Makro1()
Range("X1:X36").Copy Range("X1") ' Zufallgenerator (3 6Zahlen)
End Sub

Sub Makro2()
Range("A1:A12").Copy
Range("G1").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("G1").Select
End Sub

Sub Makro3()
Range("X1:X6").Copy
Range("M12").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Application.CutCopyMode = False
With Selection.Interior
.ColorIndex = 6
.Pattern = xlSolid
End With
End Sub

von X1: X6 werden 6 Zahlen genommen die nach Zeile M12:R12 copiert werden

=VERGLEICH(KKLEINSTE(Y$1:Y$36;ZEILE());Y$1:Y$36;0) 'In Spalte X1runter ziehnen bis X36

=ZUFALLSZAHL() ' in Spalte Y1 runter ziehnen bis Y36
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Hi nighty,
ein Nachtrag, die dann in Spalte G1 : G12 stehende Zahlen soll dein Script mit dem Makro 2 die Zellenwerte tauschen, ich hoffe du verstehst was ich damit meine. Gruß Kallie
...