0
votes

Comment faire si ... et la déclaration fonctionne dans Excel pour voir si une variable est égale à l'un d'un ensemble de chiffres

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 commentaires

Numéro aléatoire = 3 ou numéro aléatoire = 6 etc


Vous avez également un "single" sinon dans votre code. La ligne Balance = Balance - Playerbet sera toujours exécutée.


Pourquoi ceux qui sont inutiles -0 et +0 ?


3 Réponses :


2
votes

Vous devez écrire xxx pré>

comme p> xxx pré>

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


0 commentaires

0
votes

@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


0 commentaires

2
votes

Trois façons de le faire:

Votre code d'origine corrigé: p> xxx pré>

ou, comme le nombre de n ° aléatoires doit être un multiple de 3 pour être une victoire: p> xxx pré>

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


4 commentaires

"9 mod 3" - oups.


Ouais, je viens de le voir ... oups. :) Désolé, je n'ai pas vu la version mod 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 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