【问题标题】:vba loop through textboxes then place values in a range of cellsvba 循环遍历文本框,然后将值放在一系列单元格中
【发布时间】:2018-08-08 19:38:20
【问题描述】:

我有另一个关于用户窗体中的循环和文本框的新手场景。

这是单击“保存”命令按钮时我想要完成的操作。

  1. 一个循环遍历名称以“co”开头并以数字 1-15 结尾的每个文本框。
  2. 如果该文本框中有值,则代码将该值添加到指定范围内的第一个单元格,然后移动到下一个文本框和单元格。

下面是包含单元格范围和用户表单的工作表图像。

WS 和用户窗体

我的代码是否在正确的轨道上?或者有没有更有效的方法可以在没有循环的情况下做到这一点?提前感谢您对此提供的帮助。

Private Sub SandCont_Click()
    Dim wb As Workbook
    Dim wsJHA As Worksheet
    Dim wsRange1b As Range
    Dim wsRange1c As Range
    Dim wsRange2 As Range
    Dim wsRange3 As Range
    Dim wsRange4 As Range
    Dim wsRange5 As Range
    Dim wsRange6 As Range
    Dim wsRange7 As Range
    Dim wsRange8 As Range
    Dim wsRange9 As Range
    Dim wsRange10 As Range
    Dim c As Control
    Dim i As Integer    'used to loop through cells in ranges listed below???
    Dim x As String     'will be first two characters of textbox name
    Dim y As String     'will be last character of textbox name
    Dim z As Integer    'used to loop through textboxes on userform???

    Set wb = Application.ThisWorkbook
    Set wsJHA = wb.Sheets("JHA Keying")
    Set wsRange1b = wsJHA.Range("B4:B11")
    Set wsRange1c = wsJHA.Range("C4:C11")


    For Each c In Me.Controls
        If TypeName(c) = "TextBox" Then
            x = Left(c.Name, 2)
            y = Right(c.Name, 3)
            If x = "co" And y <= "015" Then
                wsRange1b.Value = c.Value
            End If
        End If
    Next c

'    Application.ThisWorkbook.Save

End Sub

【问题讨论】:

  • y ?这是什么?
  • 此外,在循环中,您总是将值分配给 same 范围。好吗?
  • 每个文本框都以数字 001 到 1xx 结尾,我忘了删除该值周围的“”。
  • 我希望完成的是以“co”开头并以 1 到 15 结尾的文本框名称的值会将值传输到第一个单元格范围。如果我没有很好地解释它,请原谅我对 VBA 还是很陌生。

标签: vba excel excel-2013


【解决方案1】:

你应该这样检查文本框的名称:

If c.Name Like "co*0[0-1][0-5]" Then...

说明:

  • co - 匹配 'co' 字面意思
  • * - 匹配任意数量的任意字符
  • 0 - 匹配零
  • [0-1] - 匹配 0 到 1 范围内的数字
  • [0-5] - 匹配 0 到 5 范围内的数字

【讨论】:

  • 效果很好。您介意解释一下 [0-1][0-5] 的含义吗?
  • 非常感谢@JohnyL。这是一个很大的帮助,对于我正在从事的这个项目的其余部分非常有用。
  • @ZackE 不客气! :) 当然,您可以使用正则表达式,但 Like 可以轻而易举地处理这种情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-12
  • 2021-06-28
  • 1970-01-01
相关资源
最近更新 更多