如何在运行时动态创建控件

2023-12-31

我试图根据正在查看的特定工作表上的列数在 Excel 用户窗体中创建可变数量的控件(组合框)。理想情况下,我想在运行时删除现有的并创建新的,而不是创建 100 个左右,然后在可见和不可见之间来回切换。我现在所拥有的将创建一个组合框和循环,但它只创建 1。看起来组合框正在被覆盖,并以创建的最后一个组合框结束。有什么建议可以让所有内容在运行时都进入同一个用户窗体吗?

Private Sub CommandButton1_Click()
 Dim cCont As New Control

 Dim ws As Worksheet
 Dim lc As Long
 Dim i As Long

 Set ws = Loan_Data

 lc = Loan_Data.Cells(1, Columns.Count).End(xlToLeft).Column


 For i = 1 To lc
    Set cCont = Me.Controls.Add("Forms.CommandButton.1", "NewCombo" & i)
    With cCont
        .Caption = cCont.Name
        .AutoSize = True
        .Visible = True
    End With
 Next i

End Sub


我可以与您分享一个我用来在运行时创建一些组合框的过程示例。

Private Sub Agrega_Combo(Unidades As Integer)
'Procedimiento para agregar los ComboBox, etiquetas y unidades a la lista.
    Dim i, j As Integer
    Dim Cmb As Control
    Dim Lbl As Control

    'Ciclo para crear los ComboBox y Etiquetas en el 'ArrUnidades'
    For i = 1 To UBound(ArrUnidades)
    'Agrega el ComboBox
        Set Cmb = Me.Controls.Add("Forms.combobox.1")
        'Se establece el nombre y la posición del nuevo ComboBox
        With Cmb
            .Name = "Combobox" & i
            .Left = 66
            .Width = 36
            If i = 1 Then
                .Top = 34
            Else
                .Top = 34 + (24 * (i - 1))
            End If
        End With
    'Agrega la Etiqueta'
        Set Lbl = Me.Controls.Add("Forms.label.1")
        With Lbl
            .Name = "Label" & i
            .Caption = ArrUnidades(i) & " :"
            .Left = 30
            .Width = 36
            If i = 1 Then
                .Top = 38
            Else
                .Top = 38 + (24 * (i - 1))
            End If
        End With
        'Ciclo para agregar las unidades indicadas al llamar el procedimiento.
        For j = 1 To Unidades
            Me.Controls("ComboBox" & i).AddItem j
        Next j
        'Selecciona el primer valor de la lista.
        Me.Controls("ComboBox" & i).Text = Me.Controls("ComboBox" & i).List(0)
    Next i
End Sub

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在运行时动态创建控件 的相关文章

  • VBA - 填充自定义功能区下拉列表/列表框

    我无法填充下拉列表 列表框 原始代码来自 https exceloffthegrid com inserting a dynamic drop down in ribbon https exceloffthegrid com inserti
  • 用户窗体上的类对象 TextBox 可用方法

    我注意到 当我为文本框创建类模块并在表单上使用它时 通过在表单 init 事件中通过 VBA 添加 Enter 或 Exit 方法都不可用 当然 如果我只是在表单中添加一个文本框 我可以让 DblClick 方法正常工作 因此我的类设置正确
  • 使用VBA复制垂直列并沿对角线粘贴

    我有一列数据 我们称之为 A 列 其中有 35 行数据 如何在此列上循环 然后将每个数据点粘贴到另一张工作表中 同时为每个循环循环增加列和行 换句话说 我寻求对角粘贴在第二张纸中 有没有一种简单的方法可以在 VBA 中执行此类操作 不要循环
  • VBA 激活 Internet Explorer 窗口

    我正在制作一个宏 用于打开 Internet Explorer 导航并登录网站 一切正常 但我需要将 IE 窗口放在前面并激活它 这样我就可以使用SendKeys在上面 我发现网站和视频在名为的命令上有不同的方法AppActivate我已经
  • Countif 不适用于小时和/或日期

    您好 我有 3 列内的数据 A 目的地 例如洛杉矶 B 承运人 例如 Ups C 发货时间 预计 4 00 使用的时间是24小时时间 不含Am Pm 我需要进行计数才能知道在特定时间我们有多少批货物 尝试过 COUNTIF A1 A100
  • MS Access 表单按钮,允许用户浏览/选择文件,然后将文件导入到表中

    在我的数据库中 我可以使用以下命令创建命令按钮导入文件 DoCmd TransferText acImportDelim 导入的原始数据 导入规范 导入的原始数据 D Users Denise Griffith Documents Grif
  • 文本到行 VBA Excel

    我有一个电子表格 其中包含大约 4000 行数据 其中一列数据具有唯一的订单号 我希望使用 作为分隔符将其分隔 所以本质上我想要 Name Order Date Jane 123 001 111 08 15 2013 Gary 333 12
  • 使用 VBA 的下拉菜单

    我需要使用 VBA 从下拉菜单中选择特定选项 我怎样才能做到这一点 链接到我们试图从中提取的网页 IE document getElementsByName down count click 我尝试过的代码 Full Module Priv
  • 如何在VBA编辑器中跳转到行号?

    我在 Office 2010 中使用 VBA 在顶部 有一个带有行号和列号的框 例如 Ln 1480 Col 17 有没有办法在代码编辑中 而不是在执行中 直接跳转到另一个行号 就像我使用的那样Ctrl G在记事本中 这个MSDN答案 ht
  • excel 2010刷新BackgroundQuery中运行时错误1004

    我正在尝试用 vba 编写一个脚本 用于将多个文本文件导入 Excel 一张纸 然后将它们绘制在一张图表上 我面临一个问题刷新后台查询命令并出现 1004 运行时错误 我怎样才能解决它 谢谢 埃亚勒 这是我的代码 Sub fring1 Di
  • 合并和颜色样式不适用于 Apache POI excel 2003 格式

    在 Apache POI 中 我为某些单元格应用了一些样式并合并了这些单元格 当我在 2010 年或 2007 年打开时 它工作正常 但在 2003 年 格式样式消失了 每次保存 2003 Excel 文件之前都会弹出兼容性检查对话框 请参
  • VBA 中的多线程

    这里有人知道如何让VBA运行多线程吗 我正在使用 Excel 无法用 VBA 本地完成 VBA 构建在单线程单元中 获得多个线程的唯一方法是使用 VBA 之外的其他具有 COM 接口的东西构建 DLL 并从 VBA 调用它 信息 OLE 线
  • Excel FILTER() 对于空白单元格返回 0

    我怀疑以前有人问过这个问题 但我找不到 FILTER 即使指定了返回字符串 通常也会为空白行返回 0 Using filter 我经常收到空单元格的 0 返回值 假设 A 列中有 6 行数据 abc xyz abc xyz abc If I
  • VBA 有没有办法了解未使用的变量?

    标准 VBA 编辑器中是否有工具 方法或设置来警告已被修改的变量Dim med 但没有被使用 MZ Tools http www mztools com index aspx将搜索您的代码并告诉您哪些内容未被使用 VBA的版本可以找到her
  • SQL Server,插入 Excel“链接服务器”时出现“无效列名”错误

    我有一个简单的 Excel 电子表格文档 运行 Office 2013 我使用 Microsoft Office 15 0 Access 数据库引擎 OLE DB 提供程序 将其用作数据库 我可以使用 MS SQL Server Manag
  • 我可以获取VBA代码中的注释文本吗

    可以说我有以下内容 Public Sub Information TEST End Sub 有没有办法得到 TEST 结果 不知何故通过VBA 例如 在 PHP 中 有一个获取注释的好方法 这里有什么想法吗 编辑 应该有办法 因为像 MZ
  • VBA 中的匈牙利语好吗?

    我在 Net 中不使用匈牙利语 str int 前缀 但我仍然发现它在 VBA 中很有用 因为在 VBA 中很难看到类型 这很糟糕吗 不必要 也许我错过了一些东西 我真的很感激任何反馈 我想知道有一段时间了 谢谢大家 我想说 这种匈牙利符号
  • 标志状态的 VBA 替换

    根据文档 Outlook 中的 MailItem FlagStatus 属性是已弃用 https msdn microsoft com en us library microsoft office interop outlook maili
  • 使用输入作为显示日期的基础

    我需要一种方法来使用用户窗体上的输入来确定将在输出上显示的日期 这是我的代码 If StatusBox Value lt 23 59 And ShiftCode Value AP Then Cells emptyRow 8 Value Da
  • 检查未绑定控件是否具有值的正确方法

    简单场景 一个表单和一个文本框 未绑定 Text1 If lt gt Text1 Then MsgBox Not Empty End If 上面的代码有效 表达方式 lt gt Text1如果文本框包含字符 则计算结果为 True 无论文本

随机推荐

  • r 如何保留自定义类的打印方法

    我已经定义了一种使用类测试打印向量的方法 print test lt function x x lt formatC as numeric x format f big mark decimal mark digits 1 x x NA l
  • Angular $http:在“超时”配置上设置承诺

    在角 http docs http docs angularjs org api ng service 24http 它提到您可以将 超时 配置设置为数字或承诺 timeout number Promise 超时 以毫秒为单位 或承诺 解决
  • 如何将自定义结构数组保存到 plist swift

    我正在尝试将警报数据保存到 plist 它采用类alertData 的数组的形式 我能找到的所有信息都指向对其进行编码 然后将其放入数组中 但我很困惑这是做什么的 我也不知道该怎么做 这是我的游乐场 任何帮助都会很棒 类 我正在尝试保存这些
  • 用于 DynamicObject 的 MVC3 ModelBinder

    我正在寻找是否有示例项目 教程 contrib 分支或类似的内容 详细介绍了为 MVC3 实现自定义 ModelBinder 以支持从 DynamicObject 继承的对象 我有一个域对象 它具有由数据库定义的动态数量的属性 并且这些属性
  • 从 C++ 注册预关闭通知的正确方法

    我使用 C 编写本地服务应用程序 但找不到注册预关闭通知的正确方法 适用于 Windows XP 之后的操作系统 我相信从Vista开始就添加了SERVICE CONTROL PRESHUTDOWN通知 但是当您调用SetServiceSt
  • python 打开文本文件,每个字符之间有一个空格

    每当我尝试使用 python 命令打开 csv 文件时fread open input csv r 它总是打开文件 每个字符之间都有空格 我猜文本文件有问题 因为我可以使用相同的命令打开其他文本文件 并且它们已正确加载 有谁知道为什么文本文
  • 通用 Windows (UWP) 范围滑块

    I want to create range slider in UWP I didn t find any example There are only single sliders but I want it like 有人知道我该怎么
  • 什么是密钥库?

    我一直在得到 sun security validator ValidatorException PKIX path building failed sun security provider certpath SunCertPathBui
  • 如何在 Blogger 帖子中嵌入 Google Drive 文档 (PDF)?

    我想将 Google 云端硬盘中的 pdf 文档嵌入到我的 Blogger 帖子中 选择您要嵌入的 pdf 文件 右键单击 gt Preview gt 更多操作 gt 在新窗口中打开 现在点击更多操作 gt 嵌入项目 复制嵌入代码并将其粘贴
  • 当未提供 COM+ dll 时,从 COM+ dll 获取 IDL(用于 TLB)

    我有一个 dll 其中包含一些带有特定 自定义接口进行查询的 directshow 过滤器 COM 大多数第 3 方 directshow 组件包含嵌入式 tlb 文件 可用于跨环境通信 C typelib 导入 我不想尝试手动创建 c 所
  • 如何在 UIWebView 加载其内容时显示加载消息?

    当 UIWebView 加载其内容时 我想放置一个大旋转器以及 正在加载消息 或 gif 图像 这样它就不会只显示空白视图 我该怎么做呢 实现 UIWebview 的委托方法 将这段代码放入其中 void webViewDidStartLo
  • 如何在Windows中使用批处理替换子字符串来重命名文件[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想重命名文件名 例如 how to
  • 如何在Python plt中获取最近绘制的线的颜色

    我绘制一条线而不指定颜色 想想 plt plot x y 假设颜色是蓝色的 问题 如何从 plt 对象获取此颜色 以便将其放入变量中 看起来这很接近 并且可能是解决方案 p plt plot x y color p 0 get color
  • 在 Windows 上的 RStudio 中构建并重新加载:devtools::document() 表示未找到 devtools

    当我在 RStudio 中的 构建 选项卡上单击 构建并重新加载 时 出现以下错误 gt devtools document roclets c rd collate namespace Error in loadNamespace nam
  • 为什么此日志记录配置不打印到标准输出?

    LOGGING version 1 disable existing loggers True formatters verbose format levelname s asctime s module s process d threa
  • MySQL Sum 列 IF ID 在另一个表查询中

    编辑 我以为我已经有了 但下面的似乎不起作用 看起来它汇总了数据库中的所有内容 SELECT SUM drivetime AS drivetime record id FROM workforce WHERE EXISTS SELECT F
  • 使用findnext填充多维数组VBA Excel

    我的问题实际上涉及一个延伸到的问题EXCEL VBA 将搜索结果存储在数组中 https stackoverflow com questions 11312226 excel vba store search results in an a
  • DyLimit 用于 Dygraphs 中的有限时间

    我正在尝试画一个dygraph plot 条形图感谢答案使用 dygraphs 包在 R 中创建条形图 https stackoverflow com questions 29698255 create a barplot in r usi
  • 将 GridView 绑定到 Dynamic 或 ExpandoObject 对象

    我正在使用 Rob Conery 的 Massive ORM 但无法绑定结果ExpandoObject to a GridView 我确实发现了另一个 Stackoverflow 问题 建议使用一个名为 impromptu 的框架 但我不确
  • 如何在运行时动态创建控件

    我试图根据正在查看的特定工作表上的列数在 Excel 用户窗体中创建可变数量的控件 组合框 理想情况下 我想在运行时删除现有的并创建新的 而不是创建 100 个左右 然后在可见和不可见之间来回切换 我现在所拥有的将创建一个组合框和循环 但它