Microsoft Excel

Herbers Excel/VBA-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

Beiträge aus dem Excel-Forum zum Thema "AW: VBA Lösung gesucht"