274 Aufrufe
Gefragt in Tabellenkalkulation von afassa Einsteiger_in (48 Punkte)
Hallo kann mir bitte jemand mit dem VBA Code helfen wie ich in einem Tabellenbereich von A1: AZ35 per Zufallsgenerator alle Zeichen per Zufall eintragen kann welche die QWERTZ Tastatur hergibt.

Vielen Dank!

Grüße

4 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
Hallo Community

Bedingt durch Sonderzeichen und Steuerzeichen,wäre das mein Vorschlag!

Zeichenstring ist mit gewünschten Zeichen zu ergänzen.

Ziehung erfolgt ohne Doppelte!

Gruß Nighty

Sub Zufall()
 Randomize Timer
 Dim Zeichen As String
 Dim Zelle As Object
 Dim Gezogen As Integer
     Zeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
     For Each Zelle In Range("A1:AZ35")
      Gezogen = Int(Rnd * Len(Zeichen)) + 1
      Cells(Zelle.Row, Zelle.Column) = Mid(Zeichen, Gezogen, 1)
      Zeichen = Mid(Zeichen, 1, Gezogen - 1) & Mid(Zeichen, Gezogen + 1, Len(Zeichen))
     Next Zelle
End Sub
0 Punkte
Beantwortet von afassa Einsteiger_in (48 Punkte)
Zeichen dürfen bei der Menge an Zellen mehrmals vorkommen, wichtig ist nur das sie zufällig und mindestens jeden Zeichen einmal Vorkommt.

Danke soweit ich werde das heute gleich mal ausprobieren
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
Hallo Community

Mit Doppelten ist der Code kürzer!

Gruß Nighty

Sub Zufall()
 Randomize Timer
 Dim Zeichen As String
 Dim Zelle As Object
     Zeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
     For Each Zelle In Range("A1:AZ35")
      Cells(Zelle.Row, Zelle.Column) = Mid(Zeichen, Int(Rnd * Len(Zeichen)) + 1, 1)
     Next Zelle
End Sub
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
ausgewählt von afassa
 
Beste Antwort
Hallo Community

Nun nach deinen Wünschen!

Zeichen im String ergänzen,der Rest passt sich dynamisch an!

Gruß Nighty

Sub Zufall()
 Randomize Timer
 Dim Zeichen As String
 Dim Zelle As Object
 Dim Gezogen As Integer
     For Each Zelle In Range("A1:AZ35")
      If Len(Zeichen) = 0 Then Zeichen = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
      Gezogen = Int(Rnd * Len(Zeichen)) + 1
      Cells(Zelle.Row, Zelle.Column) = Mid(Zeichen, Gezogen, 1)
      Zeichen = Mid(Zeichen, 1, Gezogen - 1) & Mid(Zeichen, Gezogen + 1, Len(Zeichen))
     Next Zelle
End Sub
...