Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1396to1400
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

VBA Zufallsbuchstaben/zeichen generieren

VBA Zufallsbuchstaben/zeichen generieren
11.12.2014 16:05:31
David
Hallo liebe Leute,
das hier ist mein erster Beitrag hier, ich bedanke mich schon im Voraus für eure Hilfe.
VBA-Kentnisse habe ich nicht wirklich. Hab schonmal ein bisschen zugeschaut, aber noch nie selber etwas gemacht.
Hier mein Ziel, das ich über VBA realisieren möchte:
Ich habe ein Optionsfeld, namens "OptionButton_Alle", wenn ich das aktiviere, dann soll in meinem Tabellentblatt "Programm" in Zelle (3,5) per Zufall einer der folgenden Einträge erscheinen:
C
D
E
F
G
A
B
Db
Bb
Eb
Gb
Ab
Der Eintrag soll nicht einmalig sein, sondern wenn man F9 drückt, soll diese Zelle immer wieder mit einem der Einträge oben beschrieben werden, natürlich per Zufall.
Ich hoffe ich habe mich verständlich ausgedrückt, vielen Dank für Eure Hilfe! =)
David

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
11.12.2014 16:10:29
Daniel
HI
ich würde die Werte aus denen zufällig ausgwählt werden soll in eine freie Spalte schreiben (z.B.: Z1:Z12) und dann in den Zellen die Formel verwenden:
=Index($Z$1:$Z$12;Zufallsbereich(1;12))

Gruß Daniel

AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 08:52:43
David
Hallo,
ich möchte das ganze schon in Excel über VBA realisieren. Kann mir jemand, für den das kein Problem ist den Code schicken? Das ware genial! =)
Also Quasi was ich anstatt den Punkten einfügen kann:
Private Sub OptionButton_Alle_Click()
ActiveCell.Select
If OptionButton_Alle.Value = True Then
................
End If
End Sub
Vielen Dank für Eure Hilfe!

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 09:45:18
hary
Moin David
Meinst du so?
Private Sub OptionButton_Alle_Click()
Dim werte()
Dim zufall As Integer
werte = Array("C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
If OptionButton_Alle.Value = True Then
zufall = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
ActiveCell = werte(zufall)
End If
End Sub

gruss hary

AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 09:49:50
daniel
Hi
Das mit der F9-Taste funktioniert nur dann, wenn eine Formel mit Zufallsberechnung in der Zelle steht.
Gruß Daniel

AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 10:15:08
David
Hallo Hary,
vielen vielen Dank für deine Nachricht, genau das meinte ich - fast. Wenn der OptionButton gedrückt ist, dann wird in meiner gewünschten Zelle automatisch ein zufälliger Eintrag aus meinen vorgegebenen Zeichen erzeugt, jedoch bleibt dieser Eintrag, auch wenn ich die F9-Taste drücke. Kann man das noch irgendwie lösen per VBA?
Aber wie gesagt, schonmal herzlichen Dank, ich freue mich sehr darüber! =)
David

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 10:23:06
hary
Moin
Wie Daniel schrieb F9 loest eine Neuberechnung aus.
Mach es so.
Button:
Private Sub OptionButton_Alle_Click()
zufall
End Sub

In ein Makro und eine TastenKombi zuweisen mit dem du das Makro startest:
Sub zufall()
'diesem Makro eine Tastenkombi zuweisen
Dim werte()
Dim zufall As Integer
werte = Array("C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
If OptionButton_Alle.Value = True Then
zufall = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
ActiveCell = werte(zufall)
End If
End Sub

grus hary

Anzeige
AW: Korrektur
12.12.2014 10:27:30
hary
Moin
Muss so sein.
Private Sub OptionButton_Alle_Click()
If OptionButton_Alle.Value = True Then zufall
End Sub

und
Sub zufall()
'diesem Makro eine Tastenkombi zuweisen
Dim werte()
Dim zufall As Integer
werte = Array("C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
zufall = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
ActiveCell = werte(zufall)
End Sub

Es sei den du moechtest noch ruefen ob der Button True ist. Dann muss die Pruefung ins Makro.
gruss hary

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 11:48:47
David
Hi Hary,
also irgendwas mache ich falsch...
Ich habe unter den Button den Code:
Private Sub OptionButton_Alle_Click()
zufall
End Sub
eingegeben. Dann bin ich mit Alt F11 in den Editor, hab mir bei "Module" ein freies genommen und da den Code:
Sub zufall()
'diesem Makro eine Tastenkombi zuweisen
Dim werte()
Dim zufall As Integer
werte = Array("C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
If OptionButton_Alle.Value = True Then
zufall = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
ActiveCell = werte(zufall)
End If
End Sub
eingegeben. Dann habe ich dem Makro "zufall" die Tastenkombination Strg + Ä gegeben, wenn ich jetzt den OptionButton aktiviere, dann kommt ein Laufzeitfehler "Objekt erforderlich", wenn ich dann auf Debuggen gehe, dann wird folgende Zeile gelb markiert:
If OptionButton_Alle.Value = True Then
Sorry, ich komme in Excel gut zurecht und hab auch schon viel mit Makros gebastelt, aber sobald es um Code geht, tue ich mich momentan noch schwer. Wäre lieb, wenn du mir helfen könntest.
Vielen Dank, David

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 12:03:58
hary
Moin
Du musst VBA sagen wo(weiss ich auch nicht) der Button liegt.
Ungetestet.
If ActiveSheet.OptionButton_Alle.Value = True Then

oder
if Worksheets("Tabelle1").OptionButton_Alle.Value = True Then

gruss hary

AW: VBA Zufallsbuchstaben/zeichen generieren
12.12.2014 12:19:04
David
Hallo Harry,
ich habs versucht, aber ich brings nicht hin... =(
Es ist so blöd, wenn man in dem Ganzen nicht so drinnen ist, ich glaube ich bin kurz davor, dass es funktioniert.. ich hab jetzt die ganze Woche an einer Excel-Datei rumgebastelt und hab auch mit viel rumprobieren alles so hingebracht wie ich es geplant hatte, bis auf das eine hier, das fehlt noch...

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
16.12.2014 09:12:01
David
Hary,
DANKE DANKE DANKE !!!! =)
Ich hab jetzt ca. noch ne dreiviertel Stunde gespielt, und nun ist es ganz genau so, wie ich es wollte. Hammer, wirklich hammer!
Vielen lieben Dank für deine schnelle und geduldige Hilfe, das hätte ich selber nicht geschafft. Aber in Zukunft schon, mal wieder was dazugelernt.... =)
Liebe Grüße,
David

AW: VBA Zufallsbuchstaben/zeichen generieren
16.12.2014 10:45:37
David
Hey Hary,
hab doch nochmal eine kurze Frage.
Irgendwas scheint noch nicht mit der Zeile:
Zufalls_Buchstabe_Alle = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
zu stimmen, weil bei den Zufallsbuchstaben, die ich generiere ist nie das C dabei...
Das bezieht sich ja auf diese Zeile:
werte = Array("C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
Vielleicht sieht´s jemand auf den ersten Blick..
Liebe Grüße,
David

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
16.12.2014 13:35:15
hary
Moin
Sub zufall()
'Tastenkombi srtg + q
Dim werte()
Dim zufall As Integer
Dim i As Long
For i = 1 To 500
werte = Array(" ", "C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
If ActiveSheet.OptionButton1.Value = True Then
zufall = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
Cells(i, 1) = werte(zufall)
End If
Next
End Sub

gruss hary

AW: Korrektur
16.12.2014 13:38:09
hary
Moin
Natuerlich ohne Schleife.
Sub zufall()
'Tastenkombi srtg + q
Dim werte()
Dim zufall As Integer
werte = Array(" ", "C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
If ActiveSheet.OptionButton1.Value = True Then
zufall = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
ActiveCell = werte(zufall)
End If
End Sub

gruss hary

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
16.12.2014 14:45:41
David
Ich habs so mittlerweile so gelöst:
Sub Zufalls_Buchstabe_Alle()
'Tastenkombi srtg + q
Dim werte()
Dim Zufalls_Buchstabe_Alle As Integer
werte = Array("", "C", "D", "E", "F", "G", "A", "B", "Db", "Bb", "Eb", "Gb", "Ab")
If ActiveSheet.OptionButton_Alle.Value = True Then
Zufalls_Buchstabe_Alle = WorksheetFunction.RoundUp(Rnd() * UBound(werte) + 1, 0) - 1
Cells(5, 3) = werte(Zufalls_Buchstabe_Alle)
End If
End Sub
Jetzt wollte ich fragen, warum ich das mit dem "" machen muss und ob ich das nicht vermeiden kann. Ich mein stören tut es überhaupt nicht, ich wollte nur wissen, was dahinter steckt.
Aber das passt ja auch so, oder?

Anzeige
AW: VBA Zufallsbuchstaben/zeichen generieren
16.12.2014 14:58:24
Daniel
Hi
ich vermute mal, dass dein Zufallsgenerator so geschrieben ist, dass er nur Werte zwischen 1 und dem letzen Index ausspuckt, bzw durch das RoundUp kommt die 0 nur dann als Ergebnis zustande, wenn die RND-Funktion genau 0 ausspuckt und das drüfte sehr selten sein.
setzt mal ein paar Klammern, vielleicht wirds dann besser:
zufall = WorksheetFunction.RoundUp(Rnd() * (UBound(werte) + 1), 0) - 1
ich würde hier aber folgendes verwenden (hängt aber davon ab, ob deine Excelversion die Funktion kennt, 2003: nein, 2010: ja 2007: ?):
zufall = Worksheetfunction.RandBetween(0, Ubound(werte))
Gruß Daniel

AW: VBA Zufallsbuchstaben/zeichen generieren
17.12.2014 05:54:24
hary
Moin Daniel
Hab ich nicht dran gedacht.
2007=ja
gruss hary

AW: Mit Formel gehts auch
12.12.2014 12:20:27
Daniel
Hi
du kannst auch mit Optionbutton eine Formellösung wie von mir beschreiben erstellen:
1. verknüpfe den Optionbutton mit einer Ausgabezelle.
bei ActiveX-Steuerelementen schreibst du hierzu die Zelladdress (bspw X1) in die Eigenschaft: LinkedCell
in dieser Zelle steht dann der Optionbuttonzustand mit WAHR oder FALSCH
bei Formularsteuerlementen über Kontextmenü - Steuerelement formatieren - Steuerung - Zellverküpfung
hier steht dann in der Zelle die Nummer des aktiven Optionbuttons (du hast ja sicherlich mehrere)
2. ergänze die Formel dann so:
a) für ActiveX-buttons: =Wenn(X1=Wahr;Index($Z$1:$Z$12;Zufallsbereich(1;12));"")
b) für Formularbuttons: =Wenn(X1=1;Index($Z$1:$Z$12;Zufallsbereich(1;12));"")
(Nummer des zuständigen Optionbuttons für die 1 einsetzen)
deine möglichen Werte stehen weiterhin in Z1:Z12
Gruß Daniel

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige