Comment dois-je stocker une plage de cellules dans une variable

Je suis actuellement en train de travailler sur un Sudoku programme comme un projet dans excel en utilisant VBA et j'ai besoin de stocker une Plage de cellules dans une variable.

Quelque chose le long des lignes de ce:

'''
dim grid as string 

grid = range("b3:j11")
'''

Mais je ne suis pas sûr de ce dim grille.
J'ai essayé entier, chaîne et de la plage, mais la grille ne semble jamais avoir une valeur.
Je suis aussi en supposant que je ne suis pas de l'affectation de la plage de la variable correctement

/////////////////////////////////

À la suite des réponses im-coller le code ici.
Le duplicatecheck fonction de recherche dans une plage de cellules pour vérifier s'ils sont plus d'un d'un certain nombre, puis mettez en surbrillance les cellules en conséquence

Que je veux regarder à travers une autre plage de cellules pour les différents contrôles j'ai besoin de faire de la portée d'une variable de la fonction peut être réutilisé

toutefois, lorsque la variable de la grille est appelée dans le duplicatecheck fonction, il n'a pas de valeur et theirfor pas de cellules sont en cours de vérification

Dim row As Integer

Dim col As Integer

Dim grid As Variant

Dim checkmark As Integer


Sub Rowcheck()

    checkmark = 1
    row = 0
    col = 0

    grid = range("b3:j3").Value

    For row = 0 To 8

        duplicatecheck

    Next row

End Sub

Function duplicatecheck()

Dim safe As Boolean

Dim check As Integer

Dim x As Integer

        ' check each number in a range for duplicates starting with 1
For check = 1 To 9
    If Application.Worksheet.Function.CountIf(Selection.Offset(row, col), range(grid)).check = 1      Then 
' if number is only found once
safe = True
    ElseIf Application.Worksheet.Function.CountIf(Selection.Offset(row, col), range(grid)).check < 1 Then
' if the number is found less than once in the range
safe = False
    ElseIf Application.Worksheet.Function.CountIf(Selection.Offset(row, col), range(grid)).check > 1 Then
' if the number is found more than once
Selection.Offset(row, x).range(grid).Interior.colour = vbBlue ' highlight the range red

        If checkmark = 1 Then
              For x = 0 To 8
                    Selection.Offset(row, x).range(geid).Value = check
                    Selection.Offset(row, x).range.ont.colour = vbRed
               Next x
        ElseIf checkmark = 2 Then
              For x = 0 To 8
                    Selection.Offset(x, col).range(grid).Value = check
                    Selection.Offset(x, col).range.ont.colour = vbRed

              Next x
              safe = False
                 error = True

    If safe = False Then
       complete = False
    End If

Fin Si
Fin De Si
Prochain contrôle
Fin De Fonction

  • J'ai essayé à la fois de ce code et de Rons, mais ils ne semblent être au travail. après l'exécution du code avec la grille définie comme la gamme ou de la variante après la grille ou filet = range("b3:j11") la variable de la grille ne marche pas encore avoir une valeur lorsqu'il est appelé plus tard
  • Vérifier mon commentaire en Ron de réponse. Des variantes peuvent stocker des plages ou des valeurs. Si vous essayez de stocker des valeurs, utilisez la valeur de la plage, pas la plage elle-même.
InformationsquelleAutor user2920648 | 2014-03-27