gpt4 book ai didi

excel - 如何从使用 Excel VB 的文本框来自两个或多个用户窗体的文本框中输入数据将数据输入到 Excel?

转载 作者:行者123 更新时间:2023-12-04 21:03:34 50 4
gpt4 key购买 nike

我正在尝试简化财务报告中的数据输入,因此我尝试使用 Excel Visual Basic 制作表格。

到目前为止我做了2个用户表单,以后我会做5个。我做了用户表单,以便数据输入运算符(operator)可以对表单进行简单的设计,因为文本框太多,所以我将扇区划分为5个用户表单以简化它。

要在扇区之间移动,运算符(operator)可以使用命令按钮跳转到另一个用户窗体。

当运算符(operator)完成所有 3 个用户窗体的数据输入后,他将返回主用户窗体以将数据一次全部输入到 excel 中。

我的问题是,我发现很难在用户窗体之间连接以从每个用户窗体中获取值,以便最终可以使用主用户窗体或用户窗体 1 上的 1 个命令按钮一次将值输入到 excel 中。

我的命令按钮代码是这样的:

Private Sub cmdAddData_Click()
'Copy input values to sheet.
Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Summary")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 1).Value = Me.txtNo.Value
.Cells(lRow, 2).Value = Me.txtKode.Value
.Cells(lRow, 3).Value = Me.txtNamaPerusahaan.Value
.Cells(lRow, 4).Value = Me.txtSector.Value
.Cells(lRow, 5).Value = Me.txtTime.Value
'UserForm2Begin'
.Cells(lRow, 7).Value = Me.txtKas.Value
.Cells(lRow, 8).Value = Me.txtInvestasi.Value
.Cells(lRow, 9).Value = Me.txtDanaTerbatas.Value
.Cells(lRow, 10).Value = Me.txtPiutangUsaha.Value
'UserForm2End'
End With

'Clear input controls.
Me.txtNo.Value = ""
Me.txtKode.Value = ""
Me.txtNamaPerusahaan.Value = ""
Me.txtSector.Value = ""
Me.txtTime.Value = ""
'Userform2Begin'
Me.txtKas.Value = ""
Me.txtInvestasi.Value = ""
Me.txtDanaTerbatas.Value = ""
Me.txtPiutangUsaha.Value = ""
'Userform2End'

提前致谢

最佳答案

如果您声明要从公共(public)读取的每个文本字段,您可以这样做:

 Class MainForm
Form firstPage
Form secondPage
...

Private Sub cmdAddData_Click()
'Copy input values to sheet.
Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Summary")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 1).Value = firstPage.txtNo.Value
.Cells(lRow, 2).Value = firstPage.txtKode.Value
.Cells(lRow, 3).Value = firstPage.txtNamaPerusahaan.Value
.Cells(lRow, 4).Value = firstPage.txtSector.Value
.Cells(lRow, 5).Value = firstPage.txtTime.Value
'UserForm2Begin'
.Cells(lRow, 7).Value = secondPage.txtKas.Value
.Cells(lRow, 8).Value = secondPage.txtInvestasi.Value
.Cells(lRow, 9).Value = secondPage.txtDanaTerbatas.Value
.Cells(lRow, 10).Value = secondPage.txtPiutangUsaha.Value
'UserForm2End'
End With

'Clear input controls.
Me.txtNo.Value = ""
Me.txtKode.Value = ""
Me.txtNamaPerusahaan.Value = ""

firstPage.txtSector.Value = ""
firstPage.txtTime.Value = ""
'Userform2Begin'
secondPage.txtKas.Value = ""
secondPage.txtInvestasi.Value = ""
secondPage.txtDanaTerbatas.Value = ""
secondPage.txtPiutangUsaha.Value = ""

End Sub



End Class

如前所述,如果要使用此方法,则需要将可见性设置为 public(在图形编辑器中其属性 Modifiers )

更好的解决方案是您在 Mainfrom 中声明一个对象,该对象具有您以后希望在 Excel 文件中具有的所有值的属性。然后将此对象赋予每个表单,例如在构造函数中,并填充它。
在 Mainform 中,您可以读取对象的所有属性并将它们写入文件。
保存数据的对象将是这样的:
    Class DataObject
Public txtNo as String
Public txtKode as String
...
End Class

您在用户可以看到的第一个表单中声明它,然后将其提供给随后的每个表单
Class FirstForm
Dim data as DataObject
...

private sub openNextWindow()
dim sec as SecondForm= new SecondForm(DataObject)
...
end sub
end class

直到你最终在你的 cmdAddData 中你这样做:
Private Sub cmdAddData_Click()
'Copy input values to sheet.
Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("Summary")
lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
With ws
.Cells(lRow, 1).Value = data.txtNo
.Cells(lRow, 2).Value = data.txtKode
...
End Sub

关于excel - 如何从使用 Excel VB 的文本框来自两个或多个用户窗体的文本框中输入数据将数据输入到 Excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30772765/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com