我有很多表单

编码到我想要的,但我对其中最重要的部分有困难。如图像所示,有30个文本框的表单中的框架设计为在其中输入名称。每个盒子都有不同的名字。当我单击“保存数据”按钮时,我希望将文本框中的名称输入到工作表上的下一个可用行中,也输入到图像中。
因此,如果表单的前三个框中有Bob、Joe和Jane,我希望工作表中的A:2-4行分别填充每个名称。
发布于 2017-04-02 09:39:05
如果不能(或不想)依赖文本框名称,有两种可能的解决方法:
TabIndex 利用
如果“个人”框架中的文本框与要将其内容写入的单元格具有相同的TabIndex顺序,则可以如下所示:
Dim i与带有Me.Frame1‘-的字符串一样长的Dim字符串,将"Frame1“更改为实际的”个人“帧名(i=0到.Controls.Count -1 strng = strng & GetTextBox(i).Value &”Next Cells(Rows.Count,Rows.Count=Application.Transpose(Trim( strng ),"))结尾
在其中,您利用以下Function:
函数GetTextBox(tabId As Long)作为控制Dim作为Me.Frame1.Controls中每个ctrl的控件,如果ctrl.TabIndex = tabId,然后退出下一个集合GetTextBox = ctrl结束函数Top 利用和 Left 控制属性
如果文本框垂直对齐(即同一行中的所有文本框共享完全相同的Top属性),则可以如下所示:
Dim dict作为对象,Dim ctrl作为控制集Dim ctrl = CreateObject("Scripting.Dictionary"),对Me.Frame1.Controls .Item(Format(ctrl.Top,"000") &“& Format(ctrl.Left,"000")) = ctrl下一个以SortDictionary dict单元(Rows.Count,1).End(xlUp).Offset(1).Resize(Me.Frame1.Controls.Count) = Application.Transpose(dict.items)
在其中,您利用以下Function:
SortDictionary(dict作为对象) Dim i与CreateObject("System.Collections.SortedList")中的每个键相同的长Dim键,dict( key )下一个dict.RemoveAll,i=0,.Keys.Count -1 dict.Add .GetKey(i),.Item(.GetKey(i)),下一个结束于End Subhttps://stackoverflow.com/questions/43159671
复制相似问题