donc j'ai ce code et ce que je veux faire est le suivant:
si Range ("aj61: aj432") est vide et Range ("F61: F432" ) contient du texte, puis définissez les cellules vides sur 0
Voici ce que j'ai essayé mais j'ai obtenu une incompatibilité de type
Sub Insert_0()
Dim rng As Range
Set rng = Range("AJ61:AJ432")
If IsEmpty(rng) And rng.Offset(-30, 0) <> "" Then rng.Value = 0
End Sub
5 Réponses :
Vous devez parcourir la plage:
For i = 61 To 432
If Cells("AJ" & i).Value = "" And Cells("F" & i).Value <> "" Then Cells("AJ" & i).Value = 0
Next
a obtenu une erreur: Erreur d'exécution '5': Appel de procédure ou argument non valide sur la ligne if cells
Si vous voulez vérifier si une plage de plusieurs cellules est vide, vous devez utiliser quelque chose comme:
If WorksheetFunction.CountA(rng) = 0 Then
Vous devrez parcourir les cellules de la plage. Quelque chose comme:
dim cel as range
for each cel in rng.cells
If IsEmpty(cel) And cel.Offset(-30, 0) <> "" Then cel.Value = 0
next
pour le rendre plus rapide, vous pouvez remplir un tableau avec les valeurs de la plage
obtenu une erreur lorsque j'ai exécuté votre code, donc j'ai ajouté ceci après la commande dim: set cel = Range ("AJ61: AJ432") et l'erreur est: Erreur d'exécution '424': Objet requis.
aucune boucle
Sub Insert_0()
Intersect(Range("F61:F432").SpecialCells(xlCellTypeConstants).EntireRow, Range("AJ:AJ")).SpecialCells(xlCellTypeBlanks).Value = 0
End Sub
Utilisez SpecialCells pour capturer les lignes des valeurs de texte de la colonne F qui se croisent avec les valeurs vides de la colonne AJ.
Option Explicit
Sub Insert_0()
Dim rng As Range
On Error Resume Next
Set rng = Intersect(Range("F61:F432").SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow, _
Range("AJ61:AJ432").SpecialCells(xlCellTypeBlanks))
On Error GoTo 0
If Not rng Is Nothing Then
rng = 0
Else
Debug.Print Err.Number & ": " & Err.Description
On Error GoTo -1
End If
End Sub
Utilisation très intelligente de INTERSECT () (+1)
Bonne utilisation de INTERSECT avec SpecialCells . Jamais vu auparavant
Donnez-nous l'erreur exacte dans un
extraits'il vous plaîtIsEmptyretournera toujours false pour les variables initialiséesParlez-vous de cellules vraiment vides ou de cellules avec des formules qui renvoient
""?l'erreur est: Erreur d'exécution '13': - Incompatibilité de type