2017-10-08 1 views
0

J'essaie de corriger une erreur VBA pour un code que j'ai créé pour afficher les valeurs de zone de liste dans Excel. Quelqu'un peut-il aider s'il vous plaît?Erreur VBA pour un code de zone de liste

Dim lbValue As Long 
lbValue = Summary.ListBoxes("BusinessOwnerListBox").Value 

Dim lbtext As String 
With Summary.ListBoxes("BusinessOwnerListBox").ControlFormat 
    lbtext = .List(.Value) 
End With 

La liste est multi-sélection unique et les éléments sont ajoutés en utilisant Ajouter un élément. Les éléments sont affichés dans le formulaire, mais la valeur de liste choisie ne figure pas dans la feuille de calcul lors de l'exécution du code.

complet Code

Private Sub CancelButton_Click() 

Unload Me 

End Sub 

Private Sub ClearButton_Click() 

Call UserForm_Initialize 

End Sub 

Private Sub InitialTermListBox_Click() 

End Sub 


Private Sub OKButton_Click() 
Dim emptyRow As Long 

'Make Summary active 
Summary.Activate 

'Determine emptyRow 
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 

'Transfer information 
Cells(emptyRow, 1).Value = SupplierNameTextBox.Value 
Cells(emptyRow, 3).Value = GeneralDescriptionTextBox.Value 
Cells(emptyRow, 5).Value = DepartmentListBox.Value 
Cells(emptyRow, 6).Value = ContractStartDateTextBox.Value 
Cells(emptyRow, 7).Value = InitialTermListBox.Value 
Cells(emptyRow, 8).Value = RenewalTermListBox.Value 
Cells(emptyRow, 9).Value = PaymentTermsListBox.Value 
Cells(emptyRow, 10).Value = SelectionMechanismListBox.Value 
Cells(emptyRow, 11).Value = ValueOfContractTextBox.Value 

Dim lbtext As Variant 
lbtext = BusinessOwnerListBox.Value 
Worksheets("Summary").Cells(emptyRow, 4).Value = lbtext 


If SignedContractCheckBox.Value = True Then Cells(emptyRow, 2).Value =  SignedContractCheckBox.Caption 

End Sub 


Private Sub PaymentTermsListBox_Click() 

End Sub 

Private Sub RenewalTermListBox_Click() 

End Sub 

Private Sub SelectionMechanismListBox_Click() 

End Sub 

Private Sub UserForm_Click() 

End Sub 

Private Sub UserForm_Initialize() 

'Empty SupplierNameTextBox 
SupplierNameTextBox.Value = "" 

'Uncheck SignedContractCheckBox 
SignedContractCheckBox.Value = False 

'Empty GeneralDescriptionTextBox 
GeneralDescriptionTextBox.Value = "" 

'Empty BusinessOwnerListBox 
BusinessOwnerListBox.Clear 

'Fill BusinessOwnerListBox 
With BusinessOwnerListBox 
    .AddItem "" 
    .AddItem "Alison Gillies" 
    .AddItem "Bernard Hunwick" 
    .AddItem "Jon Williams" 
    .AddItem "Laurent Sylvestre" 
    .AddItem "Leeann McCallum" 
    .AddItem "Sue Lowe" 
End With 

'Empty DepartmentListBox 
DepartmentListBox.Clear 

'Fill DepartmentListBox 
With DepartmentListBox 
.AddItem "" 
.AddItem "Buildings" 
.AddItem "Corporate Services" 
.AddItem "ICT" 
.AddItem "People & Culture" 
.AddItem "Transport & Logistics" 
End With 

'Empty ContractStartDateTextBox 
    ContractStartDateTextBox.Value = "" 

'Empty InitialTermListBox 
    InitialTermListBox.Clear 

'Fill InitialTermListBox 
With InitialTermListBox 
.AddItem "" 
.AddItem "6" 
.AddItem "12" 
.AddItem "18" 
.AddItem "24" 
.AddItem "36" 
End With 

'Empty RenewalTermListBox 
    RenewalTermListBox.Clear 

'Fill RenewalTermListBox 
    With RenewalTermListBox 
.AddItem "" 
.AddItem "6" 
.AddItem "12" 
.AddItem "18" 
.AddItem "24" 
.AddItem "36" 
End With 

'Empty PaymentTermsListBox 
PaymentTermsListBox.Clear 

'Fill PaymentTermsListBox 
With PaymentTermsListBox 
.AddItem "" 
.AddItem "7 days" 
.AddItem "30 days" 
.AddItem "20th month" 
.AddItem "Quarterly" 
.AddItem "Annual" 
End With 

'Empty SelectionMechanismListBox 
SelectionMechanismListBox.Clear 

'Fill SelectionMechanismListBox 
With SelectionMechanismListBox 
.AddItem "" 
.AddItem "RolledContract" 
.AddItem "RFP" 
.AddItem "RFQ" 
.AddItem "3 Quotes" 
.AddItem "2 Quote" 
.AddItem "Business Selection" 
End With 

'Empty ValueOfContractTextBox 
    ValueOfContractTextBox.Value = "" 


'Set Focus on SupplierNameTextBox 
    SupplierNameTextBox.SetFocus 


End Sub 
+0

Peut-être se débarrasser de '.ControlFormat'? – YowE3K

+0

'lbtext = .List (.Value)' tout ce que fait est de définir la valeur d'une variable de chaîne? –

+0

Je suis confus par la déclaration "List is multi select single". Est-ce une sélection multiple ou une sélection unique? (Mais je n'utilise très rarement [c'est-à-dire jamais] les listboxes dans Excel, donc peut-être que "multi select single" est vraiment une chose et je ne sais pas de quoi je parle.) – YowE3K

Répondre

0

(le code supposant est dans le module de code du formulaire)

Pour écrire directement à partir du formulaire à la feuille:

Worksheets("some_sheet_name").Range("K9").Value = BusinessOwnerListBox.Value 

Pour placer la valeur sélectionnée dans une variable, puis écrire dans feuille de calcul e

Dim lbtext As String 
'String variables can't store "Null" so need to check 
If IsNull(BusinessOwnerListBox.Value) Then 
    MsgBox "Select something!!" 
    Exit Sub 
End If 
lbtext = BusinessOwnerListBox.Value 
Worksheets("some_sheet_name").Range("K9").Value = lbtext 

ou

Dim lbtext As Variant 
lbtext = BusinessOwnerListBox.Value 
Worksheets("some_sheet_name").Range("K9").Value = lbtext