Mise à jour de la valeur de la cellule

Je veux une application de sorte que lorsque je double-clique sur une cellule, le UserForm devrait sortir, puis il y a deux TextBoxes où je peux taper le titre du problème et la description de celui-ci. Après avoir tapé le problème et la description et en cliquant sur un SaveButton, je veux que le titre du problème soit affiché et, d'une manière ou d'une autre, souligné dans la cellule entière que j'ai initialement sélectionnée.

Pour l'instant, lorsque je clique deux fois sur la cellule, le UserForm apparaît comme il se doit. Cependant, lorsque je tape le titre et la description du problème, puis click "Enregistrer", alors UserForm continue à ouvrir et je ne peux pas le fermer.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim Calrange As Range Dim Cell As Range Set Calrange = Range("A4:G12") Cancel = True For Each Cell In Calrange task_form.Show Next End Sub 

Et le code dans le UserForm pour SaveButton:

 Private Sub SaveButton_Click() Application.ScreenUpdating = False ActiveCell.Value = Me.title.Value ActiveCell.Value = Me.description_problem.Value Unload task_form End Sub 

De plus, j'ai un nombre dynamic de feuilles de travail. Pour l'instant, je collez le code ci-dessous dans la feuille de calcul qui est actuellement ouverte. Cependant, je ne sais pas à l'origine combien de feuilles de travail il va y avoir. Dans l'image, je colle mon code à l'intérieur de "Sheet1", cependant, lorsque j'exécute mon code, il est possible de créer dix feuilles de calcul et je veux que cette fonction fonctionne pour chacune d'elles.

entrez la description de l'image ici

  Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean) Dim Calrange As Range . . . . 

Les formulaires de l'user sont délicats.

La meilleure façon de gérer cela est d'utiliser task_form.hide plutôt que de unload task_form , puis de le décharger après le task_form.Show . Faire de cette façon signifie que vous ne devez pas countr sur ActiveCell , vous pouvez utiliser Target à partir de l'événement double-clic comme celui-ci:

 task_form.Show Target.Value = Me.title.Value Target.Value = Me.description_problem.Value unload task_form 

Cela signifie que Target.Value est défini comme la valeur du titre, puis est écrasé avec la valeur description_problem, et je ne pense pas que vous le vouliez.

De cette façon, mieux vaut:

 task_form.Show Target.Value = Me.title.Value & vblf & Me.description_problem.Value unload task_form 

vblf insère un return de carrage entre les deux déclarations.

Pour répondre à votre autre question concernant le transfert de code entre les feuilles de calcul, si vous cliquez avec le button droit de la souris sur une feuille de calcul, copyz-la de cette façon, le code est également copié, afin que vous puissiez configurer une feuille de calcul du model avec le code en place et le copyr en cas de besoin.

Alternativement, vous pouvez utiliser un événement au niveau du classur, qui capture tout double clic sur n'importe quelle feuille de calcul:

 Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) End Sub 

Ceci se trouve dans le module "ThisWorkbook". Gardez à l'esprit que cela fonctionnera après le code de niveau de la feuille de calcul, de sorte que votre code soit dans les modules de la feuille de calcul, soit dans le module du classur, mais pas dans les deux.

J'espère que cela t'aides!