0
votes

Incapable de produire `0 à 9` et` A à Z` à tour de rôle

J'ai écrit un script dans VBA qui est capable de produire des lettres de A à z em> strong>. Maintenant, je souhaite produire a-z code> et 0-9 code> à tour de rôle. Je ne suis pas sûr, mais je pense que comme em> strong> l'opérateur a quelque chose à voir avec cela.

J'ai essayé avec (producteur alphabets): P>

Sub FetchLinks()
    Const URL$ = "https://www.sharedividends.com.au/wp-content/custom/livesearch.php?"
    Dim params$, I&, N$

    For I = 0 To 35
        N = IIf(I <= 25, Chr(I + 65), CStr(I - 26))

        params = "q=" & N

        Debug.Print URL & params
    Next I
End Sub


8 commentaires

Pourquoi ne pas créer de tableau avec 36 articles? En outre, pourquoi pensez-vous que l'opérateur similaire est pertinent?


Que voulez-vous dire "en même temps"?


Sans créer plusieurs boucles @sjr.


Si vous n'êtes toujours pas clair, laissez-moi savoir @sjr.


@ robots.txt Voir ma réponse (édité). Mais il n'y a pas d'avantage en utilisant une boucle au lieu de 2. La quantité d'itération des étapes est la même si vous faites 0 ... 35 ou 0 ... 25 + 0 ... 9


Parce que je pensais que comme opérateur fonctionne de plus en plus sur le fonctionnement de Regex, comme dans "[A-Z0-9]" @John Coleman.


@ robots.txt - FYI a publié une approche de tableau flexibilisée


S'il vous plaît vérifier la modification. Merci.


4 Réponses :


4
votes

quelque chose comme ça?

A
B
C
…
X
Y
Z
 0 
 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 


0 commentaires

1
votes

Vous pouvez faire quelque chose comme le suivant

Sub GetAlphabets()
    Dim i As Long
    For i = 0 To 35
        Debug.Print IIf(i <= 25, Chr(i + 65), CStr(i - 26))
    Next i
End Sub


5 commentaires

Oui, c'est ce que je souhaite obtenir. Le seul problème est - les chiffres ont des espaces de premier plan. Pouvez-vous dépouiller cet espace? Merci.


@ Robots.txt C'est à quoi ils sont affichés dans l'instruction DEBUG.PRINT . Ils ne seront pas comme une variable. Je pense que la seule façon de contourner ce problème est de le convertir en une chaîne (voir la mise à jour)


En fait, il n'y a aucun avantage à utiliser une boucle sur 2 boucles. La quantité d'itérations est la même et elle est beaucoup moins lisible que 2 boucles. Je recommanderais d'utiliser 2 boucles à la place pour un meilleur entretien, une meilleure lisibilité et une même performance.


C'est tellement parfait !!!!!!! Je les ai enfin besoin comme des cordes que je les utiliserai dans un site Web paginé. Merci.


@ Pᴇʜ Je suis d'accord avec vous dans ce cas, mais peut être bénéfique s'il fait partie d'un code plus vaste (qui, par les sons, c'est)



1
votes

Si vous en avez besoin exactement avec cette sortie (lettres et numéros), vous pouvez utiliser:

Sub GetAlphabets()
Dim i As Byte

For i = 65 To 90
    Debug.Print Chr(i)
Next i

For i = 48 To 57
    Debug.Print Chr(i)
Next i

End Sub


0 commentaires

0
votes

Sortie de la matrice flexible forte>

Pour le bien de l'art, j'ai démontré une approche flexibilisée permettant un nombre fort> de caractères et de chiffres: p>

P> P> Exemple d'exemple Call STRT> P>

Function GetAlphaAndNums(Optional ByVal alphaLength& = 26, Optional ByVal numLength& = 10) As Variant()
    Dim chars, i&
  ' [1] get ASC values of alphabet
    If alphaLength > 0 Then
        If alphaLength > 26 Then alphaLength = 26            ' allow alphabetic characters from A-Z only

        chars = Evaluate("column(1:" & alphaLength & ")+64") ' assign alphabetic asc values to 1-based array chars

    Else                                                     ' (i.e. no alphabetic characters at all)
        If numLength = 0 Then numLength = 1                  '  avoid empty array
        ReDim chars(1 To Abs(numLength))                     '  define any array length if no alphabetic chars at al
    End If
    ReDim Preserve chars(1 To alphaLength + numLength)       ' provide for sufficient items
  ' [2] Fill array with characters and numbers
    For i = 1 To UBound(chars)
        chars(i) = IIf(i <= alphaLength, Chr(chars(i)), CStr(i - alphaLength - 1))
    Next i
    GetAlphaAndNums = chars                                  ' return array
End Function


0 commentaires