Tester si une cellule est vide en VBA
Je suis en train d'écrire un module VBA pour prendre une feuille de calcul contenant la structure d'un site web et de sortie dans une feuille de calcul à deux colonnes (colonne 1) le nom d'une page, et (colonne 2) la section du site que la page est en. (Pour que je puisse en faire usage dans Visio)
Ma feuille de calcul existante contient une structure comme ceci:
Root / Section / Sub-section / Page
Root / Section / Page
Root / Section / Sub-section / Sub-section / Page
c'est à dire chaque ligne affiche la page des ancêtres dans les colonnes à gauche, mais il y a différents niveaux de la structure ce qui complique les choses.
Je suis en train de faire une boucle par la présente, à partir de la colonne 7 (le niveau le plus profond de la navigation), et en boucle gauche premier temps, pour trouver une cellule non vide, et la copie de la cellule et son parent dans ma nouvelle feuille. Une fois qu'il frappe la colonne 2, je veux descendre, car il contient de la racine; cela continue jusqu'à la dernière ligne à 562.
Mon code est ci-dessous, mais il me fait une erreur sur mon Tout Isempty en ligne". Qu'ai-je fait de mal?
Sub directDescendent()
Dim readCol As Integer
Dim readRow As Integer
Dim writeRow As Integer
readCol = 7
readRow = 2
writeRow = 2
While readRow < 562
While IsEmpty(ActiveWorkbook.Sheets(2).Cells(readRow, readCol).Value)
readCol = readCol - 1
Wend
If readCol < 3 Then
readCol = 7
readRow = readRow + 1
End If
ActiveWorkbook.Sheets(3).Cells(writeRow, 1).Value = ActiveWorkbook.Sheets(2).Cells(readRow, readCol).Value
ActiveWorkbook.Sheets(3).Cells(writeRow, 2).Value = ActiveWorkbook.Sheets(2).Cells(readRow, readCol - 1).Value
writeRow = writeRow + 1
Wend
End Sub
Vous devez vous connecter pour publier un commentaire.
Votre
readCol
valeur de la variable est égale à 0 (zéro) lorsque le code entreWhile IsEmpty(ActiveWo...
la 7ème fois (valeur min il devrait y avoir 1) si une exception est levée comme index est en dehors des limites (en demandant l'0e élément de quelque chose qui a des éléments1 to n
)Vous pouvez utiliser pour la prochaine étape = -1. Tout-wend n'est pas nécessaire parce que le nombre de itereations est connu (7).