首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >VBA中用于科研的数据录入表单

VBA中用于科研的数据录入表单
EN

Stack Overflow用户
提问于 2019-06-08 06:30:37
回答 1查看 60关注 0票数 0

虽然理论上我可以直接将数据输入到工作表中,但我担心我最终会在错误的行中结束,并意外覆盖之前的输入,或者一旦我最终有几百行,就完全迷失了方向。我更喜欢通过软件来做到这一点,但我还没有发现任何好的东西,并得出了我需要使用VBA的结论。这是一个问题,因为当我还是个孩子的时候,除了在计算机夏令营的几个星期的HTML之外,我没有做过任何代码。这是我第一次尝试脱离Excel中基本的面向用户的过程(还有为什么VBA看起来完全像Office 2003?)

我想有许多数据输入样式(自由输入,下拉,单选按钮,并从每个主题的信息进入其自己的行。理想情况下,如果满足我的排除标准,我还希望让一些选项灰显整行(并从我的数据中排除它)。在一些选项中,理想情况下,我还希望能够输入值,如果它超出预设范围,则让下一列将其标记为“异常”,但如果太复杂,我可以手动完成这两项操作。

到目前为止,我从我的研究中得到的主要结论是VBA似乎是我应该使用的。我试着看了几个关于这个主题的不同的视频,并且在某种程度上能够创建一个表单。我面临的一个挑战是,我似乎不知道如何将选项添加到我的下拉列表中。我试图通过转到"view“"code”然后输入

代码语言:javascript
运行
复制
Private Sub ComboBox1_Change()
ComboBox1.AddItem([apples],[bananas])
End Sub

但是我得到了“编译错误:预期=",所以很明显我在什么地方出错了。

另外,我的表单空间已经用完了,我不知道如何在底部增加更多的空间(带滚动条)(我只能让它和屏幕一样高)。

也就是说,这里的大问题显然是试图弄清楚我到底如何将我的数据发送到excel工作表本身,以便我可以分析它。我甚至不知道该从何说起。我在网上看到的示例代码似乎与我想要做的(在我外行看来)有很大的不同--例如https://www.contextures.com/xlUserForm02.html的示例

我会寻求任何我能得到的帮助。

编辑:我在网上发现了一些代码,它们似乎与我正在尝试做的事情相匹配(我仍然需要找出单选框,我可能只是使用更多的下拉列表,即使它是更多的点击),但我得到了“编译错误:成员已经存在于该对象派生自的对象模块中”我按照指示从此处复制了它,然后对其进行了编辑以匹配我的字段,所以我不确定哪里出了问题:

代码语言:javascript
运行
复制
Private Sub problem()
    'Populate control.
    Me.cboClass.AddItem "Amphibian"
    Me.cboClass.AddItem "Bird"
    Me.cboClass.AddItem "Fish"
    Me.cboClass.AddItem "Mammal"
    Me.cboClass.AddItem "Reptile"

End Sub

Private Sub addcase()
    'Copy input values to sheet.
    Dim lRow As Long
    Dim ws As Worksheet
    Set ws = Worksheets("Sheet1")
    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    With ws
        .Cells(lRow, 1).Value = nmbr
        .Cells(lRow, 2).Value = problem
        .Cells(lRow, 3).Value = age
    End With

    'Clear input controls.
    patientnmbr = ""
    Chiefcomplaint = ""
    agebox = ""


End Sub

Private Sub cmdClose_Click()
    'Close UserForm.
    Unload Me

End Sub
EN

回答 1

Stack Overflow用户

发布于 2019-06-08 06:37:08

你不应该在change事件本身的过程中填充combobox,可能会得到奇怪的结果……

尝试从其他地方填充(您通常会从一些基本内容的用户表单初始化开始),可能的其他事件(按钮按下、文本框更改、其他组合框更改):

看看这是否有帮助:

代码语言:javascript
运行
复制
Private Sub UserForm_Initialize()
    With ComboBox1
        .AddItem "one item"
        .AddItem "two items"
        .AddItem "three items"
        .AddItem "more items"
        .AddItem "how many items?!"
    End With
End Sub

上面的代码可以帮助您解决您所显示的特定问题。

至于从哪里开始和更多细节,我会搜索(任何通用搜索引擎都应该做的) VBA用户表单数据输入,有一些很好的和详细的教程,从基本的到更复杂的表单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56501870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档