Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1116to1120
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- 25 Würfel verteilen

VBA- 25 Würfel verteilen
Chris
Hi Forum!
Eine kleines Würfel-Spielchen würde ich gern mit VBA in Excel umsetzen. Und zwar geht es um Folgendes:
Man hat 25 Würfel, auf denen jeweils 6 Buchstaben sind, z.B. Würfel 1: A, B, C, D, E, F ; Würfel 2: D, X, Y, Z, A, B, usw. Alle Würfel haben unterschiedliche Buchstaben drauf, deshalb nur das Beispiel für 2 Würfel.
Auf Knopfdruck auf eine Schaltfläche sollen:
In einem ersten Schritt diese 25 Würfel gewürfelt werden.
In einem zweiten Schritt die 25 gewürfelten Werte zufällig auf einer Fläche von 5x5 Zellen angeordnet werden.
Wie könnte man das umsetzen?
25 Würfel zufällig würfeln
23.11.2009 13:43:21
NoNet
Hallo Chris,
hier eine erste VBA-Lösung :
Sub Wuerfel25()
Dim wuerfel(1 To 25, 1 To 6)
Dim intS As Integer, intW As Integer, intZ As Integer
Dim strABC As String 'Variable für die möglichen Werte der Würfelseiten
strABC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'Mögliche Werte für die einzelnen Würfelseiten
Cells.Clear 'Alle Zellen zuvor löschen - für Mehrfach-Start !
With [A1:I1]
.Value = Array("Würfel Nr.", "Zahl 1", "Zahl 2", "Zahl 3", "Zahl 4", "Zahl 5", "Zahl 6", _
"", "Matrix 5x5 :")
.Font.Bold = True
End With
For intW = 1 To 25
Cells(intW + 1, 1) = intW 'Würfelnr. ausgeben
For intS = 1 To 6
Randomize Timer 'Zufallsgenerator "Mischen"
wuerfel(intW, intS) = Mid(strABC, Int(Rnd() * Len(strABC) + 1), 1)
Cells(intW + 1, intS + 1).Value = wuerfel(intW, intS)
Next
'Würfeln und in passende Zelle der 5 x 5 Matrix schreiben :
intZ = Int(Rnd() * 6 + 1) 'die gewürfelte Zahl dieses Würfels
Cells((intW - 1) \ 5 + 2, (intW - 1) Mod 5 + 10) = wuerfel(intW, intZ)
'Gewürfelten Wert des Würfels gelb einfärben :
Cells(intW + 1, intZ + 1).Interior.Color = vbYellow
Next
Columns.AutoFit
End Sub
Das Makro funktioniert bereits, allerdings könnte es sein, dass auf einem Würfel ein "Wert" (Buchstabe) auch mal doppelt vorkommt.
Ist das erlaubt (und damit OK) oder nicht ?
Gruß, NoNet
Anzeige
AW: 25 Würfel zufällig würfeln
23.11.2009 13:55:34
Chris
Super der Code! Danke schonmal.
Momentan ist es ja so, dass ein Y theoretisch genauso oft vorkommt wie ein E.
Allerdings ist das Spielchen so ähnlich wie Scrabble und die Buchstaben auf den Würfeln sind fest vorgegeben.
D.h. ich möchte vorher die Buchstaben auf Würfel 1 (besteht bspw. aus A,B,C,D,E,F), Würfel 2 (besteht bspw. aus E,G,H,M,W,Z) usw. deklarieren.
Außerdem wäre es super, wenn mir nur die 5x5 Matrix in TAbelle1 angezeigt werden würde und die Würfel-Matrix in Tabelle 2.
AW: 25 Würfel zufällig würfeln mit Formel
23.11.2009 14:04:24
hary
Hi Chris
muss es Vba sein? Geht auch so.
https://www.herber.de/bbs/user/66116.xls
Gruss hary
Anzeige
AW: 25 Würfel zufällig würfeln mit Formel
23.11.2009 14:11:48
Chris
Auch nicht schlecht.
Aber wie auch im Beitrag von Ede sind hier die Würfel festen Feldern zugeordnet.
Die gewürfelten Ergebnisse sollen in der 5x5 Matrix zufällig verteilt werden!
Aber wie machst du denn das mit diesem grünen "mischen"-Feld? Wie hinterlege ich denn einen "Aktualisieren-Link" hinter die Ellipse?
AW: "Aktualisieren-Link"
23.11.2009 14:18:26
hary
Hi
Autoform in Tabelle/rechtsklick/Makro zuweisen/neu/als Code: calculate
gruss hary
hatte Deine Antwort auf Edes Loesung zu spaet gesehen:-(
Alternative : Würfelwerte in Strings vorgegeben
23.11.2009 14:13:16
NoNet
Hallo Chris,
teste mal diese Version :
Sub Wuerfel25Version2()
'23.11.2009, NoNet - www.excelei.de
Dim wuerfel()
Dim intS As Integer, intW As Integer, intZ As Integer
'Deklaration der 25 Würfel per Strings :
wuerfel() = Array("ABCDEF", "DEFGHI", "ACXEMP", "YDMERS", "TBMNKL", _
"SEWACO", "UHNVIZ", "ADWERT", "EQXIJL", "LPODSM", _
"WSDAGH", "ASDSDF", "RWEPQW", "WREWEQ", "ASDGMS", _
"WFGHIJK", "ABCDEF", "GHIJKL", "MNOPQR", "STUVWX", _
"ZABCDE", "QWERTZ", "UIOPAS", "FGHJKL", "MNBVCX")
'Alternativ : Die Strings der Würfelwerte stehen in "Tabelle1", Bereich A1:A25 :
'wuerfel = Sheets("Tabelle1").[A1:A25]
Sheets("Tabelle2").Select
Cells.Clear 'Alle Zellen zuvor löschen - für Mehrfach-Start !
[A1] = "Matrix 5x5 :"
For intW = 1 To 25
'Würfeln und in passende Zelle der 5 x 5 Matrix schreiben :
intZ = Int(Rnd() * 6 + 1) 'die gewürfelte Zahl dieses Würfels
Cells((intW - 1) \ 5 + 1, (intW - 1) Mod 5 + 2) = Mid(wuerfel(intW - 1), intZ, 1)
Next
Columns.AutoFit
End Sub
Gruß, NoNet
Anzeige
AW: Alternative : Würfelwerte in Strings vorgegeben
23.11.2009 14:21:47
Chris
Ja, so meinte ich das! Danke
Allerdings werden die Würfel nicht zufällig den Feldern der 5x5Matrix zugeordnet, sondern das Ergebnis von Würfel 1 wird immer in B1 geschrieben usw.
Wie kann man das randomisieren?
Würfelwerte in Strings - Version 3
23.11.2009 14:28:38
NoNet
Hallo Chris,
jetzt habe ich das wohl korrekt verstanden - hier Version 3 :
Sub Wuerfel25Version3()
'23.11.2009, NoNet - www.excelei.de
Dim wuerfel()
Dim intS As Integer, intW As Integer, intZ As Integer, strTemp As String
'Deklaration der 25 Würfel per Strings :
wuerfel() = Array("ABCDEF", "DEFGHI", "ACXEMP", "YDMERS", "TBMNKL", _
"SEWACO", "UHNVIZ", "ADWERT", "EQXIJL", "LPODSM", _
"WSDAGH", "ASDSDF", "RWEPQW", "WREWEQ", "ASDGMS", _
"WFGHIJK", "ABCDEF", "GHIJKL", "MNOPQR", "STUVWX", _
"ZABCDE", "QWERTZ", "UIOPAS", "FGHJKL", "MNBVCX")
'Alternativ : Die Strings der Würfelwerte stehen in "Tabelle1", Bereich A1:A25 :
'wuerfel = Application.Transpose(Sheets("Tabelle1").[A1:A25])
'Würfel mischen :
For intS = LBound(wuerfel) To UBound(wuerfel)
intW = Int(Rnd() * UBound(wuerfel)) + LBound(wuerfel)
intZ = Int(Rnd() * UBound(wuerfel)) + LBound(wuerfel)
strTemp = wuerfel(intW)
wuerfel(intW) = wuerfel(intZ)
wuerfel(intZ) = strTemp
Next
Sheets("Tabelle2").Select
Cells.Clear 'Alle Zellen zuvor löschen - für Mehrfach-Start !
[A1] = "Matrix 5x5 :"
For intW = 1 To 25
'Würfeln und in passende Zelle der 5 x 5 Matrix schreiben :
intZ = Int(Rnd() * 6 + 1) 'die gewürfelte Zahl dieses Würfels
Cells((intW - 1) \ 5 + 1, (intW - 1) Mod 5 + 2) = _
Mid(wuerfel(intW - 1 + LBound(wuerfel)), intZ, 1)
Next
Columns.AutoFit
End Sub
GRuß, NoNet
Anzeige
AW: Würfelsimulation : Beispielmappe inside
23.11.2009 14:47:26
Chris
Vielen Dank!
Das Spiel heißt übrigens Boggle. Die Spielregeln findest du hier, falls du dein eigenes Werk mal spielen möchtest: http://de.wikipedia.org/wiki/Boggle#Regeln
AW: VBA- 25 Würfel verteilen
23.11.2009 14:08:56
Chris
Keine schlechte Idee!
Allerdings (wenn ich das richtig sehe) wird der Würfel 1 immer dem ersten Feld zugewiesen, Würfel 2 dem zweiten usw.
Das soll aber zufällig geschehen.
Anzeige
AW: VBA- 25 Würfel verteilen
23.11.2009 14:11:45
ede
Hallo chris,
natürlich kann man das auch noch per zufall machen.
gruss
AW: @ ede,geht doch einfacher
23.11.2009 14:09:27
hary
Hi Ede
Pro zelle eine Formel
=WAHL(GANZZAHL(ZUFALLSZAHL()*6)+1;"a";"b";"c";"d";"e";"f")
nur die Buchstaben entsprechend aendern.
siehe mein Beispiel.
gruss hary

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige