【问题标题】:Vba userform to place dataVba 用户窗体放置数据
【发布时间】:2017-06-11 08:35:14
【问题描述】:

好的,伙计们,我有一个跟踪得分信息的 Excel 工作簿。 有12张,每个月一张。 在这些表中,b2:b54 包含办公地点。 F1:I1 包含标题“审计 1”“审计 2”等等。

当这本书打开时,一个用户窗体初始化为月份的 12 个按钮。 我将以三月为例。当用户单击 March 按钮时,它会将他们带到 March 表。

March 表单打开后,另一个用户窗体会初始化。

此用户表单包含 2 个列表框、1 个文本框和一个提交按钮。

这个想法是用户将从列表框 1 中选择办公室位置,这将确定放置分数的行。

用户可以从列表框 2 中选择审核类型,这将确定放置分数的列。

用户将在 textbox1 中输入分数,这将是输入所需的数据。

按下“提交”按钮后,分数将放置在所选办公室和审核类型的交点处。

我正在尝试一次完成一件。所以这是我的第一个问题:

我不知道如何将 textbox1 中的数据添加到包含来自列表框 1 的选择的行与包含选择列表框 2 的列的交点。

以下代码是我目前正在尝试的,没有运气:

Private Sub Marsubmit_Click()

将 MarR 调暗为字符串

Dim MarC As Integer

    Dim M_A As String

        Dim M_B As String

        Dim M_S As String

        Dim M_C As Range

    Dim C As Integer

    Dim R As Integer



    R = 2

    C = 2







        M_S = Marscbx.Value

            M_B = Formboxmar.Value

                M_A = Officeboxmar.Value

                MarC = 2



                If M_B = ActiveSheet.Range("F1").Value Then MarC = MarC + 4

                If M_B = ActiveSheet.Range("G1").Value Then MarC = MarC + 5

                If M_B = ActiveSheet.Range("H1").Value Then MarC = MarC + 6

                If M_B = ActiveSheet.Range("I1").Value Then MarC = MarC + 7







               If M_A = ActiveSheet.Cell(C, R).Value Then MarR = "True"

               If MarR = "True" Then M_C = ActiveSheet.Cell(C, MarC)

            Do Until MarR = "True"

               C = C + 1

               Loop



                ActiveSheet.Range(M_C).Value = M_S

【问题讨论】:

  • 现在不能更接近您的问题,但是只有一个用户窗体和三个组合框(月份、位置、审计)、输入和提交不是更容易吗?当然,您应该将ActiveSheet 更改为Worksheet(ComboMonth.value) 或类似名称。如果没有其他回复,我会稍后再试。
  • @CMArg 我分离用户表单的原因是,一旦我让这部分工作并了解更多关于 vba 的知识,我计划向选择用户表单的用户表单添加一些额外的项目和功能月。在您看来,vba 是一种很好的学习第一语言吗?我也在涉足一点 c# 和 c++,但到目前为止,vba 对我来说是最容易理解的。我对此很陌生,所以任何建议都将不胜感激。

标签: vba excel listbox userform


【解决方案1】:

一个非常缩小的例子。 ListIndex 表示 ComboBox 的选定项的编号,从 0 开始。只需更改 +1 即可获得正确的行/列。例如,如果 Audit1 进入 F 列,Audit2 进入 G 列,Audit3 进入 I 列,则在 ComboBox for audit 中写入 ComboBoxAudit.ListIndex + 6

Private Sub Marsubmit_Click()
    Dim C1 As Integer
    Dim C2 As Integer
    Dim T1 As String

    C1 = ComboBox1.ListIndex + 1
    C2 = ComboBox2.ListIndex + 1
    T1 = TextBox1.Value

    Worksheets("Mar").Cells(C1, C2) = T1
End Sub

【讨论】:

  • 非常感谢!这正是我所需要的。一旦我更好地学习 vba,你会推荐接下来学习哪种语言。我的长期目标是在不使用 excel 或 access 的情况下构建一个功能相似的独立程序。
  • 真的不知道哪种语言好,因为我只知道一点点VBA和PHP,不属于“程序员社区”或类似的东西。你应该问别人。很高兴为您的代码提供帮助。
猜你喜欢
  • 1970-01-01
  • 2014-02-09
  • 1970-01-01
  • 1970-01-01
  • 2010-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多