Excel VB检查dynamic表单的函数中的variables框

Excel VB检查dynamic表单的函数中的variables框

我在一个项目pipe理办公室工作,每一个部门都要求我们提供某种报告。 然后,我们将从我们的数据库中获取数据,并从上class时间创build效率低下的报告。

我所做的是,我将数据库中的所有列复制到Excel表中,然后创build一个表单来显示这些数据。 然后一个控制表,其中包含所有的checkbox。 每个checkbox代表一个列,例如:项目代码,项目标题,顾问名称,项目预算等…

现在我的想法是,我有两组checkbox。 1-正常的checkbox,如上所述直接链接到数据库数据。 2-forms的checkbox,就像分组的checkbox,例如“金融表单”,“MD Board Form”等等。select其中一个将从组1中select多个checkbox。类似于参考,那么我可以定制并select更多的checkbox,如果我想添加更多的数据。

现在在表单中,我使用这个简单的公式来提取数据:

=IFERROR(INDEX(INDIRECT(B$1),MATCH($A2,Project_ID,0)),"") 

而且我把公式中所示的项目ID编号连接起来。 现在这工作正常。 在列“A”我有项目ID,然后在其余的列的顶行我有一个下拉菜单链接到数据库标题。 数据库表中的每一列都以标题命名。

现在这是棘手的部分。 我只是做了这样的事情:对于项目名称checkbox,我做了:

 Sub CB_Project_Name_Click() If ActiveSheet.Shapes("CB_Project_Name").ControlFormat.Value = 1 Then For i = 0 To 99 If IsEmpty(Sheets("English").Range("B1").Offset(0, i)) Then Sheets("English").Range("B1").Offset(0, i).Value = "Project_Name" i = 99 End If Next i Else For i = 0 To 99 If Sheets("English").Range("B1").Offset(0, i).Value = "Project_Name" Then Sheets("English").Range("B1").Offset(0, i).Value = "" i = 99 End If Next i End If 

虽然这工作正常…这不是真的…专业,然后我做了更多的checkbox相同,但是…我有超过100个checkbox,因为我说这不是专业。

所以我正在努力锻炼一个函数来重复代码,但我似乎无法得到它的工作。 我曾经使用C ++,我可以使用不必返回数据(void)的函数,但是在VB中似乎不是这种情况。 我试过Sub和Function,但显然他们都必须返回一个参数。

我想要做的是这样的:如果数据库头名称是“Project_Budget”,那么checkbox名为CB_Project_Budget。

 Sub CB_List(CB_Name As String, Name As String) If ActiveSheet.Shapes("CB_Name").ControlFormat.Value = 1 Then For i = 0 To 99 If IsEmpty(Sheets("English").Range("B1").Offset(0, i)) Then Sheets("English").Range("B1").Offset(0, i).Value = "Name" i = 99 End If Next i Else For i = 0 To 99 If Sheets("English").Range("B1").Offset(0, i).Value = "Name" Then Sheets("English").Range("B1").Offset(0, i).Value = "" i = 99 End If Next i End If 

那我就用:

 CB_List(CB_Project_Budget,Project_Budget) 

但是这给我一个错误,因为它需要返回一个参数。

正如你所看到的,最重要的是,我希望在函数中实现时的checkbox名称是一个variables(我知道我在上面的例子中实现了错误,但这只是为了说明我想要做什么)作为我在表单中添加的单元格的值。 我也想知道它是否可以像在C ++中那样进行string操作,所以我也可以从checkbox名称中删除“CB_”并将其用作标题名称。

然后我有另一个问题整理我的标题,但这是另一个时间!

对不起,长的职位:)我试图寻找类似的问题在论坛上,但无法find…我会很感激任何帮助。