Excel VBA 下拉列表,默认值

Excel VBA Dropdown list, default value

如果 A Col 有值,则使用以下代码创建下拉列表。 如何将 No 设置为默认值?

  Dim myList As String, r As Range

  myList = "Yes,No"

  If w1.Range("A" & Rows.Count).End(xlUp).Address <> "$A" Then
    For Each r In w1.Range("A2", w1.Range("A" & Rows.Count).End(xlUp))
        If r.Value <> vbNullString Then
            With r.Offset(, 2).Validation
            .Delete
            .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=myList
            End With
            If r.Offset(, 2).Value = "" Then r.Offset(, 2).Value = "No"
            If r.Offset(, 2).Value = "" Then Split myList, ","
            End If
      Next r
  End If

验证下拉菜单没有默认值。您可以使用 "No" 填充空单元格,并使用 "No,Yes" 作为您的列表。

Excel,与数据库不同,不需要(默认情况下)启动新的 record/row,因此默认值对 Excel 没有意义。鉴于此,仅用 "No" 填充所有空白单元格没有帮助,因为您不知道用户是否知道或打算 select "No".

(使用数据库,用户将实际看到假设默认值 "No" 的字段值,然后他们可以明确选择是接受还是更改。)

应用 DV 时插入默认值:

替换:

With r.Offset(, 2).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=myList
End With

与:

With r.Offset(, 2).Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Formula1:=myList
End With
r.Offset(, 2).Value = "No"