如何在Excel activeX组合框中设置项目数?

时间:2015-09-03 13:28:34

标签: vba excel-vba combobox excel

如何在Excel VBA中设置要为activeX组合框显示的项目数?我试试这段代码。无论我在第二行设置的号码,总是默认8项,因为msgbox会吐出来。

public async Task AddPatientReportDentalChartAsync(AddPatientReportDentalChartInput input)
{
    var pid = input.PatientID;
    var chartdetails = _chartReportRepository
                        .GetAll()
                        .WhereIf(!(pid.Equals(0)),
                                   p => p.PatientID.Equals(pid)).ToList();

    if (chartdetails.Count > 0)
    {
        var entity = await _chartReportRepository
                                .YourTableName
                                .FindAsync(entity => entity.SomeId == matchingId);

        entity.PropertyA = "something"
        entity.PropertyB = 1;
        await _chartReportRepository.SaveChangesAsync();
    }
    else 
    { 
        var patientinfo = input.MapTo<PatientReportDentalChart>();
        await _chartReportRepository.InsertAsync(patientinfo);
    }
}

2 个答案:

答案 0 :(得分:1)

您需要使用Control对象.. 此代码来自https://msdn.microsoft.com/en-us/library/office/ff193982.aspx

Dim ListControl As Control 
 Set ListControl = Forms!Customers!CustomerList 
 With ListControl 
   If .ListCount < 8 Then 
      .ListRows = .ListCount 
   Else 
     .ListRows = 8 
   End If 
 End With 

以下代码使用此逻辑并将其应用于我的Form(UserForm1)组合框(Combobox1)。这反过来附加到按钮单击事件(CommanButton5)。更改J循环中的数字以查看显示的不同行数。注意:这不会改变Combobox中的行数,它只是限制初始下拉列表中的行数。您只能通过AddItem / RemoveItem更改组合框中显示的行!

Private Sub CommandButton5_Click()
Dim j As Integer
For j = 0 To 10
  ComboBox1.AddItem j
Next
Me.Repaint

Dim ListControl As Control
 Set ListControl = UserForm1!ComboBox1
 With ListControl
   If .ListCount < 8 Then
       .ListRows = .ListCount
   Else
     .ListRows = 8
   End If
 End With
 Me.Repaint
End Sub

注意:如果您在Form Initialize事件中控制它,则不需要Me.Repaint

答案 1 :(得分:0)

您的代码正在&#34;已编码&#34;。

ComboBox1.ListCount会在Items

中显示List的金额

ComboBox1.ListRows = 4设置您需要开始滚动之前可以看到的Items数量的值。

如果您想更改ItemsList的数量,则必须更改来源或使用RemoveItem方法。

请参阅:List PropertyListCountListRows