gpt4 book ai didi

excel - 如何动态引用用户表单

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

我试图避免将用户表单的名称硬编码到填写并稍后从所述用户表单中检索数据的子项中。我在这里包含的 sub 是应该将用户窗体中的值放入工作表上的单元格的那个。

(我对此还是很陌生)

我已经尝试了其他解决方案中的几种方法来解决 stackoverflow 上的类似问题,但均无济于事。
我最接近的是 Screen.ActiveForm 但遗憾的是那是用于 Access,而不是 excel。

我也尝试过创建一个公共(public)对象变量,但也无法让它工作。

唯一有效的方法是将 Userform1 硬编码到 subs 中,但这似乎是一种低效的方法。我不明白为什么有人每次设置另一个用户表单时都必须编写一个新模块。

''''''''''''''''' Userform '''''''''''''''''''

Private Sub CommandButton1_Click() ' Ok

' Set CurrentForm = Me.Caption
Interactive_Userforms.EditAdd

End Sub


''''''''''''''''' Module '''''''''''''''''''


Public StartRow, StartColumn, n_TextBoxes As Integer
Public sheet As String
' public CurrentForm as object

Sub EditAdd()

Dim i, j, k As Integer

i = StartRow
j = StartColumn
k = 1

Do While screen.activeform.Controls("TextBox" & k).Value <> ""

Worksheets(sheet).Cells(i, j).Value = screen.activeform.Controls("TextBox" & k).Value

Debug.Print (Worksheets(sheet).Cells(i + StartRow, j + StartColumn).Value)

i = i + 1
k = k + 1

Loop

End Sub

我希望能够做的是最终让任何用户窗体能够调用这个子来检索其文本框控件上的值并将它们很好地放入工作表中。

最佳答案

如果您只想让用户表单调用 EditAdd Sub,您可以更改您的 EditAdd
签名至Sub EditAdd(Form as Object)Sub EditAdd(Form as Userform)然后您可以在调用 EditAdd 时将用户表单实例本身作为“我”传递

Private Sub CommandButton1_Click() ' Ok

' Set CurrentForm = Me.Caption
Interactive_Userforms.EditAdd(Me)

End Sub

关于excel - 如何动态引用用户表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58544325/

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