Herbers Excel-Forum - das Archiv

AW: VBA Lösung gesucht


Betrifft: AW: VBA Lösung gesucht
von: Waldow

Geschrieben am: 19.09.2019 15:36:35
Hallo Exel Freunde,
ich wär gerne interessiert an einer VBA Lösung und bitte euch wenn einer so freundlich wäre mir dabei zu helfen das wär schön, vielen Dank im voraus.
Ich möchte gerne wie hier von einem Excel-Beispiel mit einem VBA Makro 1 und Makro 2 dieses Problem realisieren.
In der Spalte A1-A5 stehen feste Zahleninhalte z.B von 1-5, die durch eine Zufallszahl-Formel in Spalte C 1-5 eine Veränderung durch Betätigen der Funktionstaste F9 die Zahlen-Reihenfolge den Spalteninhalt in Spalte B1-B5 verändert und dann in E1-E5 ausgeben wird, sh. mein Beispiel in Excel.
Das Problem ist aber, dass beim nächsten einmaligen Betätigen (Button1) der Funktionstaste F9 immer das Ergebnis in Spalte E1-E5 überschrieben wird und das sollte nicht sein, denn das Ergenis sollte dann beim zeitenmale in die Spalte F1 übertragen werden also Spaltenweise und beim nächstenmale weiter in G1-G5 und dann immer so weiter, bis ich dann im dem zweiten VBA Markro 2 diese mit einem (Button2) alle ausgebeben Spalte ab E1 alle löschen kann.
Spalte A1-A5 1.2.3.4.5
Spalte B1-B5, Index(A$1:A$5;Rang.Gleich($C$1:$C$5;1))
Spalte C1-C5, =Zufallszahl()
Spalte E1-B5, 4.3.2.5.1
Spalte F1-F5,G1-G5,H1-H5 usw.
mit freundlichem Gruß
K-H Waldow
Die VBA Spaltenangaben könnten hier geändert werden!
Diese VBA Modul funktioniert nicht nach meiner Vorstellung
Option Explicit
Sub Makro1()
Range("X1:X5").FormulaC1= "=MATCH(SMALL(R1C(1):R36C(1),ROW()):R36C(1),0)"
DIM Zeile As Range
DIM Anz As Long
Range("X1:X5" = RANGE("X1:X5"). Value
Anz = Anz +1
Range("X1:X5" = RANGE("X1:X5"). Value
Range("A1:A5" . Copy
Range("G1").PasteSpecial, Paste:=x1PasteFormat
Application.CutCopyMode = False
Range ("G1") Select
End 

Sub
Option Explicit


Sub Makro2()
hier werden die Spalten ab E1 wieder gelöscht
End Sub

Betrifft: AW: AW: VBA Lösung gesucht
von: 1713959.html
Geschrieben am: 19.09.2019 18:50:29
Hi
Nur mal Syntax-Korrektur

Range("X1:X5" = RANGE("X1:X5"). Value
Anz = Anz +1
Range("X1:X5" = RANGE("X1:X5"). Value
Range("A1:A5" . Copy

Range("X1:X5") = Range("X1:X5").Value
Anz = Anz + 1
Range("A1:A5").Copy
Den gewünschten Code solltest du eigentlich mit dem Rekorder aufzeichnen können.
- Rekorder einschalten
- neue leere Spalte einfügen
- Ergebnisformel einsetzen
- Ergebnis kopieren
- an gleicher Stelle, rechte Maustaste, Inhalte einfügen, Werte
- Aufzeichnung abschliessen
Basiert auf der Annahme, dass du das neuste Ergebnis links willst und das älteste rechts.
Ansonsten Frage als offen markieren, Beispieldatei ins Forum laden und genau erläutern was wie wohin soll. X1:X5 kommt in deiner Beschreibung jedenfalls nicht vor.
cu
Chris
Excel-Beispiele zum Thema "AW: VBA Lösung gesucht"
Bildschirmauflösung auslesen UserForm unter Berücksichtigung der Auflösung maximieren
Bewerten Sie hier bitte das Excel-Portal