【问题标题】:VBA increment the "#" in TextBox#.valueVBA 增加 TextBox#.value 中的“#”
【发布时间】:2014-06-04 01:58:10
【问题描述】:

我需要 VBA 编码方面的帮助: 我在用户表单中有近 250 个文本框(是值的“矩阵”),当用户完成填充框时,我想将它们写在 excel 表中。 我可以把所有 250 行写成

WorkSheets(mysheet).Cells(x,y).Value = TextBox#.Value

但这会很长。我想知道是否有办法制作一段时间,并增加文本框的#。 谢谢,对不起我的英语。

【问题讨论】:

  • 非常感谢,我没有找到那个帖子,也许是因为我没有把它与我的问题联系起来。在那里我发现了这个非常简单的方法:--formname.Controls("statictext" & id)-- 再次感谢您的建议

标签: vba excel excel-2013


【解决方案1】:

一种选择是使用如下代码,它将为您提供每个文本框。另一种选择是,如果框以尾随数字命名(即 Txt1、Txt2 等),那么您可以使用其他代码(即 Me.Controls("TextBox" & i).Value

Dim cCTL As Control
Dim iCTR As Integer
iCTR = 0
For Each cCTL In Me.Controls
    If TypeName(cCTL ) = "TextBox" Then
        iCTR = iCTR + 1
        WorkSheets(mysheet).Cells(iCTR,y).Value = cCTL.Value
    End If
 Next cCTL 

选项二(由于所有控件都有编号:只需将 For 循环设置为适当的控件数,并将“mysheet”引用更改为您想要的列和行。

Dim i   As Integer
For i = 1 to 250
    WorkSheets(mysheet).Cells(i+2,y).Value = Me.Controls("ctr" & i).value
Next i

【讨论】:

  • 如果我理解这段代码,这很有用,但对我来说不是,因为我有其他文本框,而 Me.Controls 就是我这样做的方式(无论如何,我使用了 formname.Controls,因为我不知道“我”代表“我现在所在的地方”。非常感谢您的帮助!!!
  • 您是否对矩阵中的字段使用了标准命名模式,以将它们与您不想要的字段区分开来?如果没有,也许你应该考虑一下?
  • 我使用 c1r1、c1r2、c1r3、c2r1、c2r3 等。而且 me.Controls 很棒。非常感谢您的帮助!
  • 由于字段名称是可预测的,请参阅更新的答案 - 选项二。
  • 我已经完成了。非常感谢。我喜欢有人给出一些提示,我必须学习。更新的部分我非常有用,但我认为没有“已经完成”的代码学习会更好。非常感谢为我花费的所有时间,我非常感谢!
猜你喜欢
  • 1970-01-01
  • 2021-04-01
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 1970-01-01
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多