gpt4 book ai didi

excel - 限制 Excel 用户窗体中的文本框条目

转载 作者:行者123 更新时间:2023-12-04 22:08:43 25 4
gpt4 key购买 nike

我正在 Excel VBA 中构建一个用户表单,用于简单的数据输入(即调查)。调查采用基本的“非常不同意”到“非常同意”格式。每个受访者每个问题有 8 个选项(“1”-“5”表示一致性排名,“99”表示不适用,“88”表示受访者选择不回答)。为了提高数据输入过程的速度和准确性,我需要我的用户窗体只允许文本框中的那些整数。

我搞砸了 KeyPress,但在输入两位数时遇到了一些麻烦。这是我所拥有的:

Private Sub textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case Asc("1") To Asc ("5")
Case Asc("88")
Case Asc("99")
Case Else
KeyAscii = 0
End Select
End Sub

这没问题,只是它并不完美,因为它还允许无效条目,例如“11”-“15”、“81”-“85”等等。我花了整整两个星期在互联网上寻找一些东西,但没有找到任何东西。当然,有一种简单的方法可以按照我的要求验证这些文本框,但我似乎无法弄清楚。任何帮助将不胜感激。

如果有人需要更多代码,请告诉我。在此先感谢您的帮助。

最佳答案

如果是我,我会使用组合框,其选项仅限于您的列表。对于演示,在表单上放置几个组合框并将其添加到其代码中:

Private Sub UserForm_Activate()
Dim ctl As MSForms.Control
Dim cbo As MSForms.ComboBox
Dim i As Long

For Each ctl In Me.Controls
If TypeOf ctl Is MSForms.ComboBox Then
Set cbo = ctl
With cbo
.MatchRequired = True
.Style = fmStyleDropDownList
.AddItem "Select One"

For i = 1 To 5
.AddItem i
Next i
If Left(.Name,8)="cboType2" then
For i = 6 To 10
.AddItem i
Next i
End If
.AddItem 88
If Left(.Name,8)="cboType1" then
.AddItem 99
End If

.ListIndex = 0
End With
End If
Next ctl
End Sub

编辑:在评论中的每个对话上方添加了“选择一个”行。

编辑 2:添加示例代码以区分两种类型的 ComboBoxes - cboType1 和 cboType2。使用这两个前缀之一命名您的组合框,代码将正确填充它们。请注意,还有其他方法可以做到这一点,例如,使用 ComboBox 的 Tag属性(property)。关键是能够在代码中区分它们。

关于excel - 限制 Excel 用户窗体中的文本框条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14758843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com