Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1332to1336
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
Inhaltsverzeichnis

ausgabe in mehrere arbeitsblätter

ausgabe in mehrere arbeitsblätter
12.10.2013 19:53:42
werner
Hallo,
ich möchte Zufallszahlen(0-100) in einer Schleife in mehrere Arbeitsblätter ausgeben. Es soll immer eine Zufallszahl berechnet werden, diese ausgegeben und dann eine neue ZF in die nächste Arbeitsmappe.
Dies gelingt mir mit meinen Anweisungen nicht. Da läuft leider was falsch. Es werden zwar die Arbeitsmappen abgearbeitet, aber die Zufallszahlen werden immer in das 1. Arbeitsblatt ausgegeben wo ich stehe.
Was mache ich falsch, bitte um Hilfe.
der Code von mir:
Sub zufallszahl()
Dim zf As Integer
For Zahl = 1 To 100
Worksheets("Sp1").Select
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Worksheets("Sp2").Select
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Worksheets("Sp3").Select
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Worksheets("Sp4").Select
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Worksheets("Sp5").Select
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Worksheets("Sp6").Select
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Next Zahl
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ausgabe in mehrere arbeitsblätter
12.10.2013 19:58:34
Stefan
Hallo,
wenn Du auf das Select verzichtest und korrekt referenzierst, dann sollte das kein Problem sein
Sub zufallszahl()
Dim zf As Integer
For Zahl = 1 To 100
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
With Worksheets("Sp1")
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp2")
Randomize
zf = Int(a + Rnd * (100 - 0 + 1))
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
Gruß Stefan

AW: ausgabe in mehrere arbeitsblätter
12.10.2013 20:11:19
werner
habe es nun so eingegeben:
Sub zufallszahl()
Dim zf As Integer
For Zahl = 1 To 65
With Worksheets("Sp1")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp2")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp3")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp4")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp5")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp6")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
End Sub

nun passiert folgendes, ergibt zufallszahlen nur bei blatt sp1 und sp3 aus.
warum?

Anzeige
AW: ausgabe in mehrere arbeitsblätter
12.10.2013 20:22:23
Stefan
Hallo Werner,
ich hatte die Punkte nicht nur so zum Spaß eingefügt. ;-)
Sub zufallszahl()
Dim zf As Integer
For Zahl = 1 To 65
With Worksheets("Sp1")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp2")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp3")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp4")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp5")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
With Worksheets("Sp6")
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
.Cells(.Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
End With
End Sub
Gruß Stefan

Anzeige
AW: ausgabe in mehrere arbeitsblätter
12.10.2013 20:42:09
UweD
Hallo
das lässt sich reduzieren auf....
Wobei " 36-0+1 " dafür kannst du auch einfach 37 schreiben.
Außerdem a ist in dem Fall auch immer 0
Sub zufallszahl()
Dim zf As Integer, Zahl As Integer, a, J As Integer
For Zahl = 1 To 65
For J = 1 To 6
Randomize
zf = Int(a + Rnd * (36 - 0 + 1))
Worksheets("Sp" & J).Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Next J
Next Zahl
End Sub

Gruß UweD

AW: ausgabe in mehrere arbeitsblätter
13.10.2013 11:16:48
werner
Danke UweD für den Tipp wie es einfacher geht.

AW: ausgabe in mehrere arbeitsblätter
13.10.2013 11:50:45
Matthias
Hallo
Du weist aber schon, das mit jedem Ausführen des Prg.Code Deine Liste der Zufallszahlen immer länger wird !?
Gruß Matthias

Anzeige
AW: ausgabe in mehrere arbeitsblätter
13.10.2013 18:36:31
werner
Hallo,
ja Matthias, deshalb gebe ich auch 65 mal je Blatt eine aus.
Bg
Werner

AW: ausgabe in mehrere arbeitsblätter
13.10.2013 19:28:34
Matthias
Hallo
Bin mir nicht sicher ob wir das Selbe meinen
Ich meinte:
Wenn Du den Code ausführst werden 65 Zz. /je Tabelle(1-6) erstellt.
Soweit ok.
Wenn Du nun aber ein zweites Mal den Code ausführst,
werden die jetzt neu ermittelten Zahlen je Tabelle immer unten angefügt.
Somit werden die Einträge in der Spalte(2) immer und immer länger.
Wenn Du das so willst, dann ist es ja ok.
Ich wollte nur drauf hinweisen, für den Fall das Du es nur übersehen hast.
Übrigens:
ist Randomize nur 1x vor der Schleife nötig:
Ich hab das für mich mal so umgesetzt und die 2 Schleifen getauscht:
Option Explicit
Sub zufallszahl()
Dim zf As Integer, Zahl As Integer, a, J As Integer
Randomize Timer
For J = 1 To 6
Worksheets("Sp" & J).Range("B2:B66").ClearContents 'optional auskommentieren
For Zahl = 1 To 65
zf = Int((36 * Rnd) + 1)
Worksheets("Sp" & J).Cells(Rows.Count, 2).End(xlUp).Cells.Offset(1, 0).Value = zf
Next
Next
End Sub
Außerdem wird duch,
Int((36 * Rnd) + 1)
die Rückgabe von 0 (Null) verhindert.
Gruß Matthias

Anzeige
AW: ausgabe in mehrere arbeitsblätter
13.10.2013 20:26:36
werner
Hallo Matthias,
danke für den Hinweis, ich bin für alle Hinweise dankbar, da ich VB nur zusätzlich in meinen EXCEL Programmen nutze und nicht viel Ahnung von VB habe.
Ich habe mir aber in meinem Startprogramm ein löschen aller Arbeitsblätter eingefügt, also macht er das schon richtig.
Deine Version ist natürlich viel eleganter.
Bg
Werner

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige