2017-06-27 4 views
0

J'ai une situation étrange que je n'ai pas été en mesure de trouver la solution.Excel 2016 VBA classeur active mais désactive puis

Je traite de grandes quantités de données sur plusieurs classeurs qui doivent être ouverts (disons 3 classeurs). J'ai besoin d'un Userform pour pouvoir interagir avec les 3 classeurs.

J'ai fait un ComboBox capable de le faire par lorsque le UserForm est initialisé, il ajoutera les noms des classeurs à la Combobox:

'* initialize the userform *' 
Private Sub UserForm_Initialize() 
    Dim wb As Workbook 

    '* get the name of all the workbooks and add to the combobox '* 
    For Each wb In Application.Workbooks 
     Me.PrimaryBook_ComboBox.AddItem wb.name 
    Next wb 

    Me.PrimaryBook_ComboBox = ActiveWorkbook.name 
End Sub 

Lors d'un changement, il va activer ce classeur:

Private Sub PrimaryBook_ComboBox_Change() 
    Application.ScreenUpdating = True 
    Dim wb As Workbook 
    If Me.PrimaryBook_ComboBox <> "" Then 
     Set wb = Workbooks(Me.PrimaryBook_ComboBox.Text) 
     wb.Activate 
    End If 

    Application.ScreenUpdating = False 
End Sub 

(ce userform a deux refedits en elle)

Lorsque je sélectionne un autre classeur dans la liste déroulante, il apporte ce classeur à l'avant comme il se doit. Mais dès que je clique dans l'une de mes boîtes de RefEdit, il revient au classeur d'origine ouvert en premier.

Voici une autre partie que je ne comprends pas, lorsque je charge cela dans Excel 2010, c'est sans faille. Je peux sélectionner le classeur que je veux et cliquer sur RefEdit et ce classeur restera activé.

Y a-t-il quelque chose qui me manque? Des astuces et/ou des trucs auxquels je n'ai pas pensé?

Merci

+0

ne devriez pas Application.ScreenUpdating être défini comme False Then vrai? Vous l'avez dans l'autre sens – RADO

+0

Je l'éteins dans ma macro qui appelle le formulaire, lorsque le formulaire est déchargé, je le rallume. Mais j'ai besoin de l'allumer lorsque j'active un classeur pour qu'il s'affiche à l'avant. Puis je l'éteins immédiatement (comme illustré) –

+0

Mise à jour @RADO: il semble que le classeur qui est actif (ouvert à l'avant) est celui auquel l'utilisateur est lié. Si j'ai le livre 3 en avant et lance le userform, quand je change le livre pour, disons, book2 il va l'activer mais dès que je clique ailleurs sur le userform il retourne directement au livre 3. –

Répondre

0

[supprimer, la solution n'a pas posté problème ROUGES]