Le code VBA ne fonctionne pas

J'ai le code VBA suivant:

Problème

 Private Sub Worksheet_Change (cible ByVal en tant que plage) Dim cRow en tant qu'entier si intersection (cible, plage ("R11: R20")) n'est rien, puis Exit Sub si Target.Value = "F", puis ActiveSheet.Unprotect cRow = Target.Row Range (Cellules (cRow, "T"), Cellules (cRow, "U")). Locked = True ActiveSheet.Protect End If If Target.Value = "T" ou Target.Value = "" ActiveSheet.Unprotect cRow = Target .Row Range (Cellules (cRow, "T"), Cellules (cRow, "U")). Verrouillé = False ActiveSheet.Protect End If End Sub 

Ce dont j'ai besoin, c'est ClearContents pour (cRow target.Row) en majuscule avant d'être verrouillé.3

  • J'ai une feuille Excel pour calculer les heures supplémentaires, elle comprend plusieurs lignes pour chaque mois. Elle est protégée mais permet à l'utilisateur de saisir des données dans une plage spécifiée (P11: P20, R11: X20) (Permet à l'utilisateur de modifier une plage).
  • En outre, les plages (R11: R20) sont des lignes avec un menu déroulant de 4 valeurs (1, 2, 3, 4).
  • Mon cas: par exemple, si l'utilisateur a sélectionné la valeur 3 ou 4 UNIQUEMENT dans la cellule (R15), je dois bloquer ou protéger la plage (T15: U15) et si, avec la même feuille, sélectionner la valeur 3 ou 4 dans la cellule R19 pour protéger la gamme (T19: U19) et ainsi de suite.
  • Par conséquent, j'ai besoin si une valeur est sélectionnée dans une cellule spécifique pour protéger certaines plages dans la même ligne. Veuillez noter que l'utilisateur peut sélectionner une sélection ou une sélection multiple dans la même feuille.

Solution

Pour votre requête actuelle, j'ai supposé que vous souhaitiez effacer le contenu des colonnes T et U de la ligne cible.

 Private Sub Worksheet_Change (cible ByVal en tant que plage) Dim cRow en tant qu'entier si intersection (cible, plage ("R11: R20")) n'est rien alors Exit Sub si Target.Value = "F" puis ActiveSheet.Unprotect cRow = Target.Row avec Plage (Cellules (cRow, "T"), Cellules (cRow, "U")) .ClearContents .Locked = True End avec ActiveSheet.Protect End If If Target.Value = "T" ou Target.Value = "" Then ActiveSheet .Unprotect cRow = Target.Row Range (Cellules (cRow, "T"), Cellules (cRow, "U")). Locked = False ActiveSheet.Protect End If End Sub. 

Merci à TrowaD pour ce conseil.

Article Précédent Article Suivant

Les Meilleurs Conseils