我在vb2010中创建一个需要大量文本框的应用程序。将每个文本框重命名为具有唯一标识符非常耗时。例如,将TextBox1重命名为txtName1是一个很长的过程,当它们有很多时。
有没有办法加快速度,提供一个具有唯一ID号的用户友好名称?或者只是犁过每个人的问题?
答案 0 :(得分:3)
始终尝试为控件指定有意义的名称。如果您遵循这种方法,您会发现计算机无法提供帮助,因此需要手动完成。在您的情况下,它如何知道TextBox1
需要识别name
?
txtName1
对于控件来说也不是一个好名字,因为 a)它不会告诉开发人员他的名字是什么, b)什么是{{ 1}?这是否意味着名称的第一部分,即名字?或列表中第一个人的名字?正确的名称类似于1
或txtCustomerFirstName
(分别用于 a)和 b),除非您有其他注意事项,例如保留控件的名称尽可能短,匹配数据库字段名称或其他原因。
来源:我为保险管理开发了一个企业级应用程序,其中包含1000多个文本框,并且是目前任何问题的主要支持联系人。根据我的经验,控件的命名是 NOT ,大部分时间都在这里。
作为旁注,如果您通过设计器手动重命名控件,它还会在代码中重命名其所有用法。它大大减少了需要完成的工作。
答案 1 :(得分:2)
尝试:编辑,因为我现在是PC的前端;)考虑上面的答案,确实很好。无论如何,这里有一些东西要知道。当您在Excel工作表中添加文本框或任何其他控件时,它将变为Embedded
类型,如图像所示。
如果您真的希望将有意义的名称赋予工作表中的Shape文本框,可以采用以下方法:
Option Explicit
Sub reNameMeaningfully()
Dim shp As Shape
Dim arrNames As Variant
Dim i As Integer
arrNames = WorksheetFunction.Transpose(Sheets(1).Range("D2:D7").Value)
'-- assuming that you have exact number of names for the exact number of controls
For i = LBound(arrNames) To UBound(arrNames)
Set shp = Sheets(1).Shapes(i)
'-- we can't check Type here. So we check if default-name begins with Text
If shp.Name Like "Text*" Then
shp.Name = arrNames(i)
End If
Next i
End Sub
输出:
如果这些tecbox在Form
中,那么试试这个:你可以使用相同的逻辑将所有名称放在一个范围内,然后迭代它;)
Dim Cont as Control
Dim i as integer
i = 1
For Each Cont In Me.Controls
If TypeName(Cont) = "TextBox" Then
Cont.name = "txt" & i '-- Rename
End If
Next Cont