2017-08-21 9 views
0

J'essaie de créer un outil dans Excel. Mon premier problème est que je ne peux pas instancier de manière fiable des étiquettes et des textboxes sur ma feuille de calcul. J'ai actuellement le code ci-dessous.Instancier des contrôles ActiveX dans une feuille de calcul en utilisant vba

Sub Test2() 
Dim Schedule As Worksheet 
Set Schedule = Worksheets("Schedule") 

'Creates the row number 
Schedule.OLEObjects.Add ClassType:="Forms.Label.1" 
With Worksheets("Schedule").Label1 
.Caption = 1 
.width = 18 
.Height = 18 
.Top = 0 
.Left = 0 
.SpecialEffect = 1 
.BackColor = &H8000000F 
.TextAlign = 2 
End With 

End Sub 

et

Sub Test3() 
Dim Schedule As Worksheet 
Set Schedule = Worksheets("Schedule") 

Schedule.OLEObjects.Add ClassType:="Forms.TextBox.1" 

With Worksheets("Schedule").TextBox1 
.Text = "Task Name" 
.width = 200 
.Height = 18 
.Top = 0 
.Left = 18 
.SpecialEffect = 0 
.BackColor = &H80000005 
.TextAlign = 1 
.BorderStyle = 1 
End With 

End Sub 

Ces deux travaux eux-mêmes, mais lorsque vous exécutez une puis l'autre une erreur est générée

« Erreur d'exécution '438': objet ne supporte pas cette propriété ou méthode ".

Un conseil?

De même, comment puis-je stocker et accéder à ces étiquettes et boîtes de texte si j'ai une quantité indéfinie en cours de création, je suppose une sorte de collecte?

+0

À quelle ligne l'erreur se produit-elle? –

Répondre

0

Pour certaines des propriétés, vous aurez besoin de se référer à la propriété de l'objet de l'objet OleoObject ...

Sub Test2() 

    'Creates the row number 
    With Worksheets("Schedule").OLEObjects.Add(ClassType:="Forms.Label.1") 
     .Left = 0 
     .Top = 0 
     .Width = 18 
     .Height = 18 
     With .Object 
      .Caption = 1 
      .SpecialEffect = 1 
      .BackColor = &H8000000F 
      .TextAlign = 2 
     End With 
    End With 

End Sub 

Sub Test3() 

    With Worksheets("Schedule").OLEObjects.Add(ClassType:="Forms.TextBox.1") 
     .Left = 18 
     .Top = 0 
     .Width = 200 
     .Height = 18 
     With .Object 
      .Text = "Task Name" 
      .SpecialEffect = 0 
      .BackColor = &H80000005 
      .TextAlign = 1 
      .BorderStyle = 1 
     End With 
    End With 

End Sub 

Hope this helps!