2017-06-12 2 views
0

J'ai écrit le code suivant pour un bouton de commande pour ajouter le (texte) le contenu d'un UserForm à une plage dynamique existante (nommée) « MasterTable »:Excel VBA commande code du bouton ne reconnaît pas objet variable

Private Sub AddDev_Click() 

    Application.CutCopyMode = False 

    With Worksheets("Table").Range("MasterTable").ListObject.ListRows.Add 
     .Offset(1, 0).Value = NewDevRecord.NewCorp.Value 
     .Offset(1, 1).Value = NewDevRecord.NewAddr.Value 
     .Offset(1, 1).Value = NewDevRecord.NewFac.Value 
    End With 

End Sub 

Lorsque je remplis le pour et cliquez sur le bouton, il lance Error 91- Object Variable or With Block Variable Not Set et met en surbrillance Worksheets("Table").Range("MasterTable") en tant que délinquant. N'est-ce pas un moyen valable de référencer une gamme? Cela fonctionne dans mes modules de livre et de feuille vba - Les composants UserForm n'ont-ils pas accès? Qu'est-ce que je fais mal?

+0

Je crois que lorsque vous appelez une plage nommée, vous pouvez juste utilisez 'With Range (" MasterTable ") ...' – BruceWayne

Répondre

0

Si MasterTable a été créé en tant que ListObject alors vous référer comme:

Worksheets("Table").ListObjects("MasterTable") 

donc ce code fonctionnerait:

Private Sub AddDev_Click() 

    Application.CutCopyMode = False 

    With Worksheets("Table").ListObjects("MasterTable").ListRows.Add 
     .Offset(1, 0).Value = NewDevRecord.NewCorp.Value 
     .Offset(1, 1).Value = NewDevRecord.NewAddr.Value 
     .Offset(1, 1).Value = NewDevRecord.NewFac.Value 
    End With 

End Sub