2014-07-03 3 views
0

im avoir des choses étranges se produisent avec un code dans ExcelUserform montrant quand pas voulu, pas appelé à

Private Sub CommandButton2_Click() 

Dim thiswb As Workbook 
Set thiswb = ActiveWorkbook 


Call EnterDataToSS(thiswb) 
Me.Hide 
BeamNoFind.Show vbModal 



End Sub 

le code appelé tombe essentiellement des valeurs dans une feuille de calcul. Les valeurs restantes sont renseignées dans LISTBOX1 sur BeamNoFind Userform.

Ensuite, sur le formulaire utilisateur BeamNoFind, il y a un bouton et le LISTBOX1. Lorsque vous sélectionnez et un élément de listbox1 et cliquez sur le bouton, un troisième formulaire utilisateur s'ouvre (VBMODELESS) pour permettre le placement de la valeur.

ci-dessous est le code du bouton pour afficher la troisième forme d'utilisateur.

Private Sub CommandButton2_Click() 
Dim Selected_Length As String 
Dim Selected_Name As String 

Dim Selected_Length_index As Integer 

Selected_Length_index = BeamNoFind.ListBox1.ListIndex 

With BeamNoFind.ListBox1 

If .ListIndex > -1 Then 

    Selected_Name = .Column(0, .ListIndex) 
    Selected_Length = .Column(1, .ListIndex) 

    CellInputForm.beam_length_label.Caption = Selected_Name & " [ " & Selected_Length & " ] " 

    BeamNoFind.Hide 
    'ChngDataSrc.Hide 
    'Unload ChngDataSrc 
    CellInputForm.Show vbModeless 



Else 
    MsgBox "No selection", vbExclamation, "Oops!" 

End If 
End With 

End Sub 

la chose étrange est, quand je clique sur le bouton pour afficher mon modeless userform, pour placer les données dans une cellule, la macro initiale est déclenchée que vous tombe dans la première userform. Où j'ai le code commenté 'ChngDataSrc.Hide' et 'Unload ChngDataSrc' sont mes tentatives d'arrêter l'affichage de l'utilisateur quand je ne le veux pas. Quand je décharger le formulaire, je puis obtenir une erreur au lieu de la forme d'affichage, l'erreur est avec la macro initiale:

Sub get_scheduling_data(control As IRibbonControl) 
ChngDataSrc.Show 

End Sub 

Il a quelque chose à voir avec vbModeless parce que si je remplace « vbModeless » de « CellInputForm .Show vbModeless "ligne avec" vbModal ", il s'affiche correctement, sans le formulaire indésirable (ChngDataSrc). mais alors la fonction du formulaire (sélectionnez la cellule, appuyez sur le bouton OK, la valeur placée dans la cellule sélectionnée) a disparu.

Répondre

0

J'ai trouvé une solution, mais ce ne est pas une vraie solution, i placé

ChngDataSrc.Hide dans la sous Activer la UserForm CellInputForm. Ainsi, lorsque CellInputForm.show vbModeless est exécuté et que la forme d'utilisateur ChngDataSrc s'affiche de manière indésirable, elle est à nouveau masquée.

Id plutôt savoir pourquoi il est montré en premier lieu, mais cette solution semble fonctionner pour le moment.

Questions connexes