4.1k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (119 Punkte)
Hallo Excel Freunde,
kann mir einer die Variable A1:A12 in diesem Script richtig einbauen bzw. lauffähig machen.Gruß kallie

Sub Makro2()
Dim Zelle As Range
Dim ELager As Variant
Dim IndZaehler As Integer
Range ("A1:A12")
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

13 Antworten

0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Kallie,

zwei Zeilen im Cose sind unnütz, habe sie auskommentiert
Option Explicit

Sub Makro2()
'Dim Zelle As Range
Dim ELager As Variant
Dim IndZaehler As Integer
'Range ("A1:A12")
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


Gruß
Rainer
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Hi rainberg,
vielen Dank du hast recht für deine Korrektur, ja richtig ich hatte einen Denkfehler gemacht, es läuft tatsächlich. Wenn es möglich wäre, möchte ich gerne eine Änderung dazu eingebaut haben.
Einmal möchte ich in Spalte C diese Aktion auszuführen können, ich weiß nicht wo ich diese Spaltenangabe eingeben könnte,
und zweitens tauscht dieser Code die Zellenwerte nicht wie ich das gerne möchte. Nach meine Vorstellung müßte einmal ein Zähler mit eingebaut werden weil dieser den Tauschcode bestimmt in Zusammenhang mit der IF Zeile 3 und 5 aus meinen Basic Code. Ich habe dafür eine Tabelle angefertigt wie der Tauschcode aussehen sollte.
1 2 1 3 2 3 4 2 4 1 mit 9x ist ein Durchgang
2 1 3 2 3 4 2 4 1 2 normalerweise beendet.
3 3 2 4 4 2 1 1 2 3
4 4 4 1 1 1 3 3 3 4

1 4 3 2 1 Jetzt tauscht der Code 4x nach diesem System,
2 1 4 3 2 das ist zu weng.
3 2 1 4 3
4 3 2 1 4

Sub Makro2()
Dim ELager As Variant
Dim IndZaehler As Integer

With Worksheets("Tabelle1")
Dim IndZaehler As Integer
ELager = .Cells(4, 1)
For IndZaehler = 4 To 2 Step -1
.Cells(IndZaehler, 1) = .Cells(IndZaehler - 1, 1)
Next IndZaehler
.Cells(1, 1) = ELager
End With
End Sub


'1 Z = Z + 1
'2 For I = 1 To Z
3 If I = 1 Then ER = C(I) : C(I) = C(I + 1) Else C(I) = C(I + 1)
'4 Next I : C(Z) = ER
'5 If I > 4 Then Z = 1
6 A$ = INKEY$: If A$ = "" Then GoTo 7
'8 GoTo 1
Wenn du dich damit auseinander setzten würdest, würde ich mich sehr freuen.
Gruß kallie
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo kallie,

ich kann Dir leider nicht helfen, da ich absolut nicht verstehe, was Du hier produzieren willst.
Stell doch mal eine Beispieldatei ein aus der man zweifelsfre ersehen kann, was das Makro verbiegen soll.

Gruß
Rainer

PS: Bitte keine weiteren Nachfragen per Pager, ich antworte auf eine Frage immer nur wenn ich kann und wenn ich will!
0 Punkte
Beantwortet von Mitglied (119 Punkte)
hi rainberg,
vielleicht kannst du aus dieser Tabelle erkennen wie ich die Zellenwerte in C1:C4 mit den Zahlen 1 2 3 4 getauscht haben möchte

Spalte C Tausch-Tabelle

1 2 1 3 2 3 4 2 4 1
2 1 3 2 3 4 2 4 1 2
3 3 2 4 4 2 1 1 2 3
4 4 4 1 1 1 3 3 3 4

mit Makro2 mit 9x Klick
ist ein Durchlauf bei 4 Zahlen
beendet.
Gruß kallie
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo kallie,

verstanden habe ich es jetzt, aber leider fällt mir keine Logik ein um diesen Algorithmus zu erzeugen.

Gruß
Rainer
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Hi rainberg,
prima das du den Sinn meines Vorhabens erkannt hast, denn es ist ganz einfach, wenn es dir nichts ausmacht und du noch ein wenig Zeit und Verständnis aufbringen könntest würde ich dir sehr dankbar sein, ich möchte dir mein Basic Code, was ich dir unter dem VBA-Code mit aufgezeigt habe und das nach diesem Algorithmus Prinzip richtig arbeitet mit wenigen Worten erklären. Der VBA-Code der ja schon richtig ist, brauchte bloß mit einem kleinen zusätzlichen VBA-Abfrage Code an der richtigen Stelle aus meinem Basic-Code in den vorhandenen VBA-Code wie folgt umprogrammiert werden. In der Spalte C müssen die Zahlenwerte in C1=1, C2=2 ,C3=3, C4=4 vorher abgelegt sein.
--Danach müsste
die Zeilen ( 1), Z = Z + 1
die Zeile 3, If I = 1 THEN ER = C(I) : C(I) = C(I + 1) Else C(I) = C(I + 1) und die Zeile (5), If I > 4 Then Z = 1 und
die Zeile (8), GoTo 1 : Aus meinem Basic Code in den VBA Code zusätzlich einprorammieren.
Erläuterung: Durch den Code in Zeile ( 8 ) wird die Schleifenvariable ( Z = Z + 1 ) nach den ersten Makro2 Klick auf 1 zurück gestellt. Nach 9x Klick mit dem Makro2 ist der ganze Algorithmus einmal durchgelaufen und die Umstellung beginnt von vorne. Aus der Zeile 3, If I = 1 THEN ER = C(I) : C(I) = C(I + 1) Else C(I) = C(I + 1) müßte man sich das so vorstellen, daß in den Variable C( I ) bei Beginn überall der Inhalt von C1=1 enthalten ist. Die Variable ER kann auch anders benannt werden sie einfach eine Hilfs.- oder Tauschvariable wo die Zahlenwerte von C1 abgelegt und vorübergehend zum tauschen übernommen werden. Die Zeile 8 aus dem Basic Code ist nicht zu berücksichtigen, sie verhält sich wie das Makro2. Lieber Excel-VBA-Programmier rainberg, hab Verständnis für mein Anliegen, ich kann leider nicht in VBA programmieren. Gruß Kallie
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo kallie,

akzeptiere bitte meine letzte Antwort.

Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi kallie ^^

ich haette da noch eine idee :-)

gruss nighty

gehen wir das eben rueckwaerts an :-))

die cell bezuege anpassen,zur zeit A1 bis A4

Sub Tauschen()
Dim Tzahlen() As Variant
Dim zaehler As Integer
Tzahlen = Array(1, 2, 3, 4, 2, 1, 3, 4, 1, 3, 2, 4, 3, 2, 4, 1, 2, 3, 4, 1, 3, 4, 2, 1, 4, 2, 1, 3, 2, 4, 1, 3, 4, 1, 2, 3, 1, 2, 3, 4)
For zaehler = 0 To UBound(Tzahlen) Step 4
If zaehler < 9 * 4 And Cells(1, 1) = Tzahlen(zaehler) And Cells(2, 1) = Tzahlen(zaehler + 1) And Cells(3, 1) = Tzahlen(zaehler + 2) And Cells(4, 1) = Tzahlen(zaehler + 3) Then
Cells(1, 1) = Tzahlen(zaehler + 4)
Cells(2, 1) = Tzahlen(zaehler + 5)
Cells(3, 1) = Tzahlen(zaehler + 6)
Cells(4, 1) = Tzahlen(zaehler + 7)
Exit For
End If
If zaehler = 36 Then
Cells(1, 1) = Tzahlen(1)
Cells(2, 1) = Tzahlen(2)
Cells(3, 1) = Tzahlen(3)
Cells(4, 1) = Tzahlen(3)
Exit For
End If
Next zaehler
End Sub
0 Punkte
Beantwortet von Mitglied (119 Punkte)
hi nighty,
he, du hast es geschafft mir eine Lösung zu schreiben,
nochmals vielen Dank.
Ich würde mich freuen, wenn du mir eine kleine Antwort geben könntest, auf die Frage,
wenn ich nun die cell bezeuge in Spalte G abfragen möchte, an welcher Stelle müsste ich den Code dann ändern.
danke nighty, vielleicht kannst du mir diesen Code geändert zusenden.
gruss kallie
0 Punkte
Beantwortet von Mitglied (119 Punkte)
Hallo rainberg,
ja ich habe verstanden, ich werde deine letzte Antwort akzeptieren,
vielen Dank nochmals.
Gruß Kallie
...