Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1428to1432
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
rdm Spalte per Button in 2te Tabelle kopieren
02.06.2015 12:59:53
Berlin030
Hallo Großmeister des Excel
Ich versuche einen Code zu schreiben dessen Aufgabe es ist nach einem ButtonClick aus einer Liste von Namen eine zufällige Auswahl zu treffen. Der Code soll die zufällige Zeile selektieren und in eine zweite Tabelle kopieren.
Wird der Button erneut gedrückt, soll eine weitere Zeile markiert werden und ebenfalls in die zweite Tabelle kopiert werden; unterhalb des Datensatzes vom ersten mal Klicken auf den Button.
Den Code für die rdm Auswahl habe ich selbst schon ein Stück weit fertig. Allerdings selektiert mein Code nur eine Zelle, keine ganze Zeile, und die Ausgabe erfolgt bisher nur über eine MsgBox. Wie man die Werte in eine zweite Tabelle kopiert ohne bereits vorhandene Zellen zu überschreiben weis ich leider nicht.
Ich hoffe dass mir einer von Euch helfen kann.
Im Folgenden mein bisheriger Code:

Sub CommandButton1_Click()
Dim ZZahl As Variant 'Variablendefinition
Dim T As Variant
Randomize
ZZahl1 = Int((9 * Rnd) + 1)
zzahl2 = ZZahl1 + 2 'Zur Zufallszahl wird 2 addiert, da es ab Zelle A2 funktionieren soll
i = "A" & zzahl2
T = Range(i)
MsgBox "Per Zufall wurde ausgefwählt: " & T & " aus Zelle " & i
Range(i).Select 'Zufalls-Zelle wird ausgewählt
End Sub

Ich hoffe mir kann jemand weiterhelfen.
Besten Dank im Vorraus,
Berlin030

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: rdm Spalte per Button in 2te Tabelle kopieren
02.06.2015 16:25:55
Michael
Hi Berlin030,
Du solltest Dir angewöhnen, als allerserstes option explicit zu setzen, denn dann bekommst Du eine Fehlermeldung, wenn Variablen nicht sauber deklariert wurden.
So DIMst Du zwar ZZahl, verwendest sie aber gar nicht, sondern vielmehr ZZahl1 und zzahl2.
Das Problem mit der Ausgabezeile kann man auf mehrere Arten lösen: man sucht bei jedem Aufruf nach der untersten Zeile, die Werte enthält (eine kurze Suche findet z.B. das hier:
https://www.herber.de/forum/archiv/1068to1072/1070588_VBA_Letzte_Zeile_ermitteln.html
), oder man nutzt einfach einen Zeilenzähler, der je um 1 erhöht wird, wenn eine Zeile geschrieben wird.
Ich habe letztere Möglichkeit gewählt und Deine Aufgabenstellung leicht verallgemeinert; die Zeile mit der msgbox kannste ja dann löschen:
Option Explicit
Sub CommandButton1_Click()
Dim ZZahl As Long, von As Long, bis As Long, zeile As Long
Dim T As Variant
von = Range("H7").Value
bis = Range("H8").Value
' allg. Lösung für unterschiedliche Bereiche
T = Range("H9").Value
If IsNumeric(T) Then
If T > 0 Then
zeile = T + 1
Else
zeile = 1
End If
Else: zeile = 1
End If
Randomize
ZZahl = Round(Rnd() * (bis - von) + von, 0)
Range("A" & ZZahl & ":F" & ZZahl).Copy Sheets("Tabelle2").Range("A" & zeile)
MsgBox "Zeile " & ZZahl & " kopiert nach Zeile " & zeile
Range("H9").Value = zeile
End Sub

Ach, ich habe mir gedacht, daß Du sicher keine *ganze* Zeile benötigst, sondern nur eine bekannte Anzahl von Spalten; hier habe ich A-F eingesetzt, das F kannst Du durch eine beliebige Spaltenbezeichnung ersetzen.
Datei: https://www.herber.de/bbs/user/97990.xls
Happy Exceling,
Michael

Anzeige
AW: rdm Spalte per Button in 2te Tabelle kopieren
04.06.2015 12:31:18
Berlin030
Hallo Michael,
vielen Dank für Deine Hilfe. Leider kam ich erst heute dazu mir alles anzusehen und mich einzulesen.
Ich habe den Code bereits etwas abändern können für meine Zwecke, was für mich bereits ein riesen Erfolg ist.
Dabei sind mir noch ein paar andere Ideen gekommen wo ich gerne von Dir gewusst hätte ob man das umsetzten kann.
Bis ist es so das ich einen Button in einer Exelmappe betätige und der Code daraufhin Werte von einer Tabelle in die andere kopiert. Meine Frage wäre nun ob es möglich wäre einen Code zu schreiben der wieder per Zufall Zeilen selektiert und kopiert. Nun diesmal aus Tabellen die in anderen Excelmappen verewigt sind.
Meine Frage wäre also gibt es einen Code-Befehl mit dem ich sagen kann: Kopiere nicht aus dieser Tabelle sondern aus Tabelle3 in Datei XYZ.
Ich hoffe Du kannst mir hier nochmal helfen.
MfG,
Berlin030

Anzeige
AW: rdm Spalte per Button in 2te Tabelle kopieren
04.06.2015 17:18:52
Michael
Hallo Berlin030,
aus "Tabelle3" der gleichen Datei (die das Makro enthält) oder aus einer weiteren?
Sei's drum - letztlich muß nur der Kopierbefehl angepaßt werden.
Die ganze Geschichte steht und fällt natürlich damit, ob die betroffenen Datein geöffnet sind; hier hilft
https://www.herber.de/mailing/Pruefen_ob_Arbeitsmappe_geoeffnet_und_wenn_nein_oeffnen.htm
Ich habe den Code leicht angepaßt und in die Datei eingefügt, so daß das Makro etwas erweitert ist und nunmehr in Modul1 steht.
Es ist nicht besonders elegant, u.a. weil ich bei jedem Aufruf prüfe, ob die anderen Files geöffnet sind und sie auch umgehend wieder schließe.
Das Schließen könnte man auskommentieren - und die Dinger nach getaner Arbeit händisch schließen bzw. speichern.
Das Makro geht davon aus, daß alle Datein sich im gleichen Verzeichnis befinden (und vorhanden sind). Zum Testen hatte ich zwei mit nur jeweils einem Blatt angelegt.
Datei: https://www.herber.de/bbs/user/98036.xls
Happy Exceling,
Michael
Anzeige

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige