【问题标题】:VBA Userform dropdown menu executionVBA Userform 下拉菜单执行
【发布时间】:2016-08-09 13:48:18
【问题描述】:

我目前有这段代码,它允许我启动用户窗体,在文本框中输入一个项目,自动填充日期,然后从下拉菜单中选择 然后将该信息粘贴到新行中。

cbm(组合框)项从单独的动态扩展表中提取其值,并且是用户窗体上的下拉菜单。日期是根据今天的日期自动填充的,文本框从用户输入的任何内容中提取其值。

Private Sub btnSubmit_Click()
Dim ssheet As Worksheet
Set ssheet = ThisWorkbook.Sheets("InputSheet")
nr = ssheet.Cells(Rows.Count, 1).End(xlUp).Row + 1
ssheet.Cells(nr, 3) = CDate(Me.tbDate)
ssheet.Cells(nr, 2) = Me.cmblistitem
ssheet.Cells(nr, 1) = Me.tbTicker

我的目标是,根据选择的列表项,我希望将该项的名称粘贴到与该项对应的列中。即如果用户选择“apples”并且第三列是“apple”列,我希望它粘贴到那个位置。

我假设这必须通过某种类型的“if”语句来解决。

感谢任何帮助。 Here is pic of my worksheet

【问题讨论】:

  • 当您说 ComboBox “从单独的动态扩展表中提取其值”时,您的意思是它是数据绑定的,还是您在代码中这样做?
  • 我使用名称管理器对其进行标记,然后编写代码: For Each cell In [name] me.cmblistitem.AddItem cell next cell
  • 所以你的“苹果”列会在其单元格中填充一堆“苹果”?您可能需要添加一些数据结构示例以及所需的逻辑

标签: vba drop-down-menu userform


【解决方案1】:

假设我的 猜测 正确,试试这段代码

Option Explicit

Private Sub btnSubmit_Click()
    Dim f As Range

    If Me.cmblistitem.ListIndex = -1 Then Exit Sub '<--| exit if no itemlist has been selected
    If Len(Me.tbTicker) = 0 Then Exit Sub '<--| exit if no item has been input

    With ThisWorkbook.Sheets("InputSheet")
        Set f = .Rows(1).Find(what:=Me.cmblistitem.Value, lookat:=xlWhole, LookIn:=xlValues, MatchCase:=False) '<--| look for proper column header
        If f Is Nothing Then Exit Sub '<--| if no header found then exit
        With .Cells(.Cells(Rows.Count, "A").End(xlUp).Row + 1, f.Column) '<--| refer to header column cell corresponding to the first empty one in column "A"
            .Resize(, 3) = Array(Me.tbTicker.Value, Me.cmblistitem.Value, CDate(Me.tbDate)) '<--| write in one shot
        End With
    End With
End Sub

已注释,因此您可以根据需要轻松更改列引用

顺便说一句,对于组合框的填充,您可能需要采用以下代码:

Dim cell As Range
With Me
    For Each cell In [myName]
        .cmblistitem.AddItem cell
    Next cell
End With

在进入循环之前已对 Me 进行了一次优化,以便在整个循环中保持它而无需进一步的内存访问

【讨论】:

  • 谢谢!我认为您正是我想要的,我只是想不出最好的实施方式。我附上了我的工作簿的截图。如您所见,根据我从用户中选择的下拉项目,我希望该项目发布到右侧网格上的正确位置。再次感谢您的意见。
  • 你的照片对我来说有点不清楚。请解释:1)我在图片中看到的每个控件的名称 2)文本框“符号”中的值(“TWTR”)起什么作用(如果与问题相关) 3)什么作用(如果与问题相关) ) 在正确播放的那三列中做值
猜你喜欢
  • 2021-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-01
  • 2019-11-02
  • 1970-01-01
  • 2017-05-10
相关资源
最近更新 更多