为什么我的列表框不会自动返回“ null”,而是自动返回“”(空字符串)?

时间:2019-07-12 19:57:19

标签: excel vba null listbox

所以我有一个带有多个列表框的用户窗体。所有这些列表框都从另一个工作表中检索listbox.values。 (这意味着您可以在其中编辑另一个工作表的表单,从本质上讲,它已对所有listbox.items进行了编程,并且从电子表格中检索了它们在打开表单时的预选择内容。)我的问题是其中的两个自动返回“”(一个空字符串),而不是自动返回null。这将导致表格中填写的电子表格中的值消失。

基本故障排除后,我开始调试该程序。我将所有列表框都包括在内,因此可以看到它们的值何时更改。我读到列表框将一直返回null直到被选中,除非它们是multiselectMulti或Extended(不是)。在逐步执行程序的过程中,我观察了这些值。列表框的值是“”和null的混合。通过这些步骤后,null会更改为值,而“”则没有。出于某种原因,似乎我要引用的单元格等于“”,但是肯定不是。我在这里茫然。那只是列表框之一的代码,以节省时间和空间。每个其他列表框实际上是相同的,这就是我如此困惑的部分原因。我希望这些列表框自动返回null,以便在我完成操作时需要保持相同,保持不变以及需要更改的所有内容发生变化。希望你们能帮忙!


Private Sub UserForm_Initialize()

'Setting the active row as a match function that returns the row of the plan name
Dim activeRow As Long
activeRow = WorksheetFunction.Match(PlanName_text.Value, Range("B:B"), 0)

'Clear FinalForm_list
FinalForm_list.Clear

'Fill FinalForm_list
With FinalForm_list
    .AddItem "2018"
    .AddItem "2019"
    .AddItem "2020"
    .AddItem "2021"
    .AddItem "2022"
    .AddItem "2023"
End With

'Sets Final Form Year equal to what the spreadsheet says
FinalForm_list.Value = Cells(activeRow, 11).Value

End Sub

Private Sub complete_active_Click()

Cells(activeRow, 11).Value = FinalForm_list.Value

Unload Me

End Sub

0 个答案:

没有答案