Je fais une table de roulette dans Excel pour un projet. J'ai une variable de numéro aléatoire nommée RandomNumber qui génère et stocke une valeur aléatoire entre 0 et 36 dans une cellule, qui fonctionne. Mais lorsque j'écris une déclaration IF pour vérifier si WeatherNumber est égal à l'un des numéros qui feraient que ce pari soit un pari gagnant, cela ne fonctionne pas. Comme dans le code ci-dessous, il renvoie toujours une réussite lorsqu'il devrait être faux, car il apparaît qu'il vient de voir tous les chiffres entre tous les "ou" ou tout ".
Désolé pour le mauvais anglais, merci pour toute entrée p>
J'ai essayé plusieurs matchs et gammes dans la feuille de calcul pour le faire fonctionner. P>
Sub Column_bet_1st()
Dim PlayerBet As Range, Balance As Range, Bet_input As Range, RandomNumber As Integer
Set PlayerBet = Range("O21")
Set Balance = Range("L18")
Set Bet_input = Range("O18")
RandomNumber = Int((36 - 0 + 1) * Rnd + 0)
If Bet_input = "Column 1" And RandomNumber = 3 Or 6 Or 9 Or 12 Or 15 Or 18 Or 21 Or 24 Or 27 Or 30 Or 33 Or 36 Then Balance = Balance + PlayerBet * 2 Else
Balance = Balance - PlayerBet
End Sub
3 Réponses :
Vous devez écrire comme p> mieux encore, utilisez aléatoireNumber MOD 3 = 0 code> (Vérification explicitement si randonnumber code> n'est pas 0 code> si tel est une possibilité que vous ne voulez pas). Ensemble que vous obtenez P> If Bet_input = "Column 1" And RandomNumber Mod 3 = 0 Then
Balance = Balance + PlayerBet * 2
Else
Balance = Balance - PlayerBet
End If
@magnus henden Pourriez-vous essayer le code ci-dessous et fournir un retour d'information?
Option Explicit
Sub Column_bet_1st()
Dim PlayerBet As Range, Balance As Range, Bet_input As Range, RandomNumber As Long
'Refe to specific worksheet
With ThisWorkbook.Worksheets("Sheet1")
Set PlayerBet = .Range("O21")
Set Balance = .Range("L18")
Set Bet_input = .Range("O18")
RandomNumber = Int((36 - 0 + 1) * Rnd + 0)
If Bet_input = "Column 1" And (RandomNumber = 3 Or _
RandomNumber = 6 Or _
RandomNumber = 9 Or _
RandomNumber = 12 Or _
RandomNumber = 15 Or _
RandomNumber = 18 Or _
RandomNumber = 21 Or _
RandomNumber = 24 Or _
RandomNumber = 27 Or _
RandomNumber = 30 Or _
RandomNumber = 33 Or _
RandomNumber = 36) Then
Balance = Balance + PlayerBet * 2
Else
Balance = Balance - PlayerBet
End If
End With
End Sub
Trois façons de le faire:
Votre code d'origine corrigé: p> ou, comme le nombre de n ° aléatoires doit être un multiple de 3 pour être une victoire: p> ou à l'aide d'un Sélectionnez ... Case Code> Déclaration: P> If Bet_input = "Column 1" Then
Select Case RandomNumber
Case 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36
Balance = Balance + PlayerBet * 2
Case Else
Balance = Balance - PlayerBet
End Select
End If
"9 mod 3" - oups.
Ouais, je viens de le voir ... oups. :) Désolé, je n'ai pas vu la version mod code> que vous avez utilisée dans votre réponse ... avoir un uppot!
Aucun problème du tout. Le débordement de pile fonctionne mieux s'il existe une sélection de réponses, car nous avons tous tendance à mettre l'accent sur différentes choses. L'utilisation d'un mod code> est vraiment la seule chose saine à faire.
Merci beaucoup, j'ai découvert que personne n'a travaillé parce que j'ai eu un problème avec mon nombre de nègons aléatoire, j'ai donc changé de choses et maintenant ce code est parfait, merci beaucoup pour l'aide! ... J'ai utilisé le cas l'un, comme je l'ai aimé le meilleur hehe
Numéro aléatoire = 3 ou numéro aléatoire = 6 etc code>Vous avez également un "single"
sinon code> dans votre code. La ligneBalance = Balance - Playerbet Code> sera toujours exécutée.Pourquoi ceux qui sont inutiles
-0 code> et+0 code>?