首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过userform中的textbox控件进行VBA循环

通过userform中的textbox控件进行VBA循环
EN

Stack Overflow用户
提问于 2018-08-08 15:20:00
回答 1查看 7.7K关注 0票数 1

我看过许多关于循环遍历UserForm控件的帖子,但似乎无法根据我的需要调整我找到的代码,需要帮助。

我正试图找出这样的情景:

  1. 我在一个用户表单上有44个文本框,其名称都以"ch“示例"chTextBox1”开头
  2. 当用户表单激活时,我需要循环遍历以"ch“开头的所有文本框,并根据单元格的内部颜色将这些文本框的背景色更改为颜色。

下面是我一直在处理的代码,我要么在无限循环中结束,要么我得到

错误424

代码语言:javascript
复制
Private Sub UserForm_Activate()
    Dim wb As Workbook
    Dim wsRR As Worksheet
    Dim bColor As Range
    Dim c As Control
    Dim y As String

    Set wb = Application.ThisWorkbook
    Set wsRR = wb.Sheets("RiskRating")
    Set bColor = wsRR.Range("C3")   

    For Each c In JHKey.Controls
        If TypeName(c) = "TextBox" Then
            y = Left(c, 2)
        End If
        If y = "ch" Then
            c.BackColor = bColor.Interior.Color
        End If
    Next c
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-08 16:05:33

尝试将If语句测试"ch“放在If语句测试"TextBox”中。此外,在检查控件名称时,应指定控件的name属性,否则该属性默认为其Value属性。另外,顺便提一下,我建议用关键字Me代替JHKey,它指的是用户名本身,而不管它的名称如何。

代码语言:javascript
复制
Private Sub UserForm_Activate()
    Dim wb As Workbook
    Dim wsRR As Worksheet
    Dim bColor As Range
    Dim c As Control
    Dim y As String

    Set wb = Application.ThisWorkbook
    Set wsRR = wb.Sheets("RiskRating")
    Set bColor = wsRR.Range("C3")

    For Each c In Me.Controls
        If TypeName(c) = "TextBox" Then
            y = Left(c.Name, 2)
            If y = "ch" Then
                c.BackColor = bColor.Interior.Color
            End If
        End If
    Next c
End Sub
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51750281

复制
相关文章

相似问题

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