VB Excel Makro - Ausgabe in neues Tabellenblatt

Guten Tag Spezialisten,

ich muss aus datensätzen zufallszahlen aussuchen lassen.
die anzahl der auszuwählenden hängt davon ab wieviel datensätze angeliefert werden bzw. ob ein hohes oder niedriges risiko besteht

es sollten 3 sachen geändert werden:

1.das makro sollte als erstes ein pop-up generieren mit der frage ob es sich um ein hohes oder ein niedriges risiko handelt.(anstatt buttons)
das makro soll von jeder belibigen excel-liste aus gestartet werden können

2.die ausgewählten datensätze soll in eine neue tabelle kopiert werden.

3.es kann durchaus sein dass ein excel tabelle mit mehreren spalten angeliefert wird. dann sollten alle spalten pro datensatz berücksichtigt werden ( bei personendaten z.b. nicht nur der name sondern auch nachname, adresse etc.)

Option Explicit

Private Sub cmdUnwichtig\_Click()
 prcCopySome False
End Sub

Private Sub cmdWichtig\_Click()
 prcCopySome True
End Sub

Private Sub prcCopySome(ByVal bolWichtig As Boolean)
 Dim arListe As Variant ' Array mit allen Werten aus Spalte A
 Dim lngZeilen As Long ' Anzahl dieser Werte
 Dim lngKopieren As Long ' Anzahl zu kopierender Werte
 Dim i As Long ' Zähler
 Dim lngZufall As Long ' eine Zufallszahl zwischen 1 und lngZeilen

 With Worksheets("Tabelle3")
 lngZeilen = IIf(Len(.Cells(.Rows.Count, 1)), .Rows.Count, .Cells(.Rows.Count, 1).End(xlUp).Row)
 arListe = .Cells(1, 1).Resize(lngZeilen)
 .Cells(1, 2).Resize(lngZeilen).ClearContents ' Spalte B löschen

 Select Case lngZeilen
 Case Is 

es wäre super wenn mir jemand helfen könnte. 

vielen dank im voraus!

Clyde

Punkt 2:
Zu 2
Selection.Copy
Sheets(„Tabelle2“).Select
Range(„A2“).Select
ActiveSheet.Paste

Das wäre dann mal erledigt, die Selection muss aber angewählt sein. Wie kann man das machen? Ganz einfach, ein Parameter der nach Links- und einer der nach unten geht bis zur leeren Zelle.

dim row as long, col as long

for row = 1 to 65536
if Tabelle2.cells(row,1) = „“ then exit for 'Parameter nach unten
next row
for col =1 to 255
if Tabelle2.cells(1,col) = „“ then exit for 'Spaltenparameter
next col

Range(Tabelle1.Cells(1, 1), Tabelle1.Cells(row, col)).Select

So, das wäre mal nahezu gelöst
Grüsse Sebastian

Punkt 3
Siehe Punkt 2

Punkt 1
Zu Punkt 1

Popupfenster:
If MsgBox („Handelt es sich um ein grosses Risiko?“,vbYesNo, „Frage“) = vbNo then
’ Es handelt sich um ein kleines Risiko

else
’ Es handelt sich um ein grosses Risiko

end if

So und jetzt das mit der Excel, das jede Exceltabelle als Standard dieses Programm öffnet. Brauchte ich noch nie. Lege es doch in einer Vorlage an. Womöglich geht das.

Grüsse Sebastian

hi sebastian,

ich danke dir vielmals für die tipps.
da ich in sachen makros sogar noch vor der anfängerstufe bin hab ich noch fragen:

was mus ich in meinem code durch deine änderungen ersetzen bzw. wo soll ich deine codes einfügen?

das allerbeste wäre es natürlich du würdest meinen code dementsprechend abändern bzw. deine änderungen einfügen.
das wäre echt ne riesige sache, diese sache ist echt wichtig für mich.

danke nochmal!

clyde

Private Sub prcCopySome()

If MsgBox („Handelt es sich um ein grosses Risiko?“,vbYesNo, „Frage“) = vbNo then
’ Es handelt sich um ein kleines Risiko
exit sub

else
’ Es handelt sich um ein grosses Risiko

dim row as long, col as long

for row = 1 to 65536
if Tabelle2.cells(row,1) = „“ then exit for 'Parameter nach unten
next row
for col =1 to 255
if Tabelle2.cells(1,col) = „“ then exit for 'Spaltenparameter
next col

Range(Tabelle1.Cells(1, 1), Tabelle1.Cells(row, col)).Select

Selection.Copy
Sheets(„Tabelle2“).Select
Range(„A2“).Select
ActiveSheet.Paste
end if
end sub

'-------------alter code, wird nicht benötigt ----------
Private Sub cmdUnwichtig_Click()
prcCopySome False
End Sub

Private Sub cmdWichtig_Click()
prcCopySome True
End Sub

Private Sub NotInUse()

Dim arListe As Variant ’ Array mit allen Werten aus Spalte A
Dim lngZeilen As Long ’ Anzahl dieser Werte
Dim lngKopieren As Long ’ Anzahl zu kopierender Werte
Dim i As Long ’ Zähler
Dim lngZufall As Long ’ eine Zufallszahl zwischen 1 und lngZeilen

With Worksheets(„Tabelle3“)
lngZeilen = IIf(Len(.Cells(.Rows.Count, 1)), .Rows.Count, .Cells(.Rows.Count, 1).End(xlUp).Row)
arListe = .Cells(1, 1).Resize(lngZeilen)
.Cells(1, 2).Resize(lngZeilen).ClearContents ’ Spalte B löschen

Select Case lngZeilen
Case Is

danke!

ich hab jetz mal das makro gestartet.
wenn ichs richtig verstanden habe soll man davor die zellen in der ersten tabelle markieren?!
also bei mir gitb er immer an der stelle „A2“ im zweiten blatt eine „1“ aus…

die zufallszahlen sollen übrigens wie in jenem file ausgewählt werden (da ist auch der alte code enthalten):
http://www.sendspace.com/file/ao4e5s

d.h. dort ist zwar die richtige logik enthalten, nur werden die ergebnisse in spalte 2 anstatt in einem neuen blatt ausgegeben.
und das makro ist auch nur auf eine spalte ausgelegt…

hab jetz leider das problem dass ich nicht weiß wie ich meinen code abändern kann/soll.
ich kann den ja nicht einfach ganz weglassen…
hab mich evtl blöd ausgedrückt.
sorry!