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"
如果 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"