0
votes

Excel 2016 VBA Macro à des plages de cellules claires, puis insérez des données dans des cellules vides

Le but de ma macro est de réinitialiser ma feuille.

Ma macro est d'abord la fondation ClearContents dans plusieurs plages de cellules différentes.

Ensuite, je veux remplir certaines de ces cellules avec 0

J'ai trouvé une recommandation que j'ai changée = "on" à = "0"

Intersect (Sélection, plage ("D7: R23")) = "0"

Je reçois ce qui suit,

Erreur d'exécution '91'

variable d'objet ou avec une variable de bloc non définie

aucune idée de ce que je fais mal?

code est comme suit: xxx


1 commentaires

Veuillez fournir votre code complet afin que nous puissions essayer de vous aider à dépanner.


3 Réponses :


1
votes

Cette erreur signifie que NO SELECT (CODE> ED Les cellules tombent dans la plage D7: R23 . Les deux gammes sont complètement disjoints. Par exemple:

 Entrez la description de l'image ici

Dans l'exemple ci-dessus, i SELECT 'ED LE BLOC A1: B5 Avant de courir la ligne de code.


4 commentaires

Cela signifie-t-il que je dois aller faire une rangée à la ligne?


@Miam NON Cela signifie que lorsque cette ligne de code est exécutée, les cellules SELECT 'doivent se chevaucher le bloc D7: R27 bloc de cellules


Désolé je suis nouveau à cette programmation macro. Donc, je dois sélectionner les cellules avant d'exécuter la macro?


@Miam La ligne unique de code que vous avez affichée vous suppose (ou les lignes de code précédentes) avoir Sélectionnez 'ED ou toutes les cellules du bloc.



0
votes

Je n'ai pas pu comprendre comment effacer, puis insérer, ce code remplace simplement toutes les cellules avec une valeur 0. Qui est finalement ce que je voulais faire.

Sub Clearcells()    
Range("D2:Z2").ClearContents    
Range("D3:AG3").ClearContents    
Range("D4:AG4").ClearContents    
Range("AE2:AG2").ClearContents    
Range("B27:AG43").ClearContents    
Range("C7:C23").ClearContents    
Range("D7:R23") = "0"    
Range("W7:Y23") = "0"    
Range("AC7:AF23") = "0"    
End Sub


0 commentaires

1
votes

Essayez ceci; Vous essayez de faire une clairière simple, puis écrivez dans les cellules vides; Vous n'avez pas besoin d'utiliser intersect et vous pouvez combiner toutes les gammes pour raccourcir votre code.

Range("D2:Z2, D3:AG3, D4:AG4, AE2:AG2, C7:R23, W7:Y23, AC7:AF23, B27:AG43").ClearContents
Range("D7:R23, W7:Y23, AC7:AF23") = "0"


0 commentaires