我已经编写了一个VBA用户表单来填充包含计算机信息记录的Excel工作表。我还有4个不同的工作表,一个用于组合框中列出的每个分支。
我想知道是否可以写一个if语句,将相应的记录放入正确的工作表中。
我目前有一个If语句,将其插入分支" SNN"但我想知道我是否可以写下类似于下面的陈述
If branch = worksheet name then insert the record into that worksheet.
这是我目前正在使用的,但有太多分支需要为每个单独执行此代码
Private Sub submitBtn_Click()
Dim wsDub, wsORK, wsSNN, wsBFS As Worksheet
Set wsDub = ThisWorkbook.Sheets("DUB")
Set wsORK = ThisWorkbook.Sheets("ORK")
Set wsSNN = ThisWorkbook.Sheets("SNN")
Set wsBFS = ThisWorkbook.Sheets("BFS")
If newPcForm.cmbBranch.Value = "SNN" Then
mynr = wsSNN.Cells(Rows.Count, 1).End(xlUp).Row + 1
wsSNN.Cells(mynr, 1) = newPcForm.cmbBranch
wsSNN.Cells(mynr, 2) = newPcForm.pcname
wsSNN.Cells(mynr, 3) = newPcForm.cmbPcModel
wsSNN.Cells(mynr, 4) = newPcForm.cmbCPU
wsSNN.Cells(mynr, 5) = newPcForm.cmbDiskSpace
wsSNN.Cells(mynr, 6) = newPcForm.cmbRAM
wsSNN.Cells(mynr, 7) = newPcForm.cmbMonth + "-" + newPcForm.cmbYear
wsSNN.Cells(mynr, 8) = newPcForm.assetTag
wsSNN.Cells(mynr, 9) = newPcForm.serviceTag
End If
newPcForm.Hide
End Sub
是否可以做这样的事情,或者更好的解决方案是将它们全部合并为一个并在标题上应用过滤器。
感谢任何帮助。
答案 0 :(得分:3)
我很高兴你认为这是一个选择;有些人喜欢打击这个建议,因为坦率地说,改变可能会让人感到恐惧。最好是消除重复,并且在一个文档中有更多的优点。 (也许其他人会对此感兴趣?)
在我看来,理想情况这是将您的数据移至 MS Access 的好时机,因为您无论如何都在进行重组。您已经开始使用数据库,这可能会很好用,但是您可以使用Access做更多的事情,更不用说它更适合多用户环境,并且与之相比更加稳定一个巨大的工作表。 ...但如果没有,将所有数据放在一个表格中就可以防止你必须编写重复的代码,这些代码可能使得它在未来难以进行变更或追踪问题。
如果由于某种原因您决定出于演示或互动的原因而希望将数据放在单个工作表上,则可以通过“虚假前端”类型的设置轻松完成,其中用户只能认为< / em>数据被分割成多张纸,而它实际上很好地组织成一张隐藏的纸张 - 另外,在这种情况下,如果他们意外地弄乱了数据,没有任何东西丢失。