【问题标题】:How to change the values that shows a UserForm in VBA Excel如何更改在 VBA Excel 中显示用户窗体的值
【发布时间】:2016-05-10 01:50:38
【问题描述】:

我对如何更改用户表单显示的内容有疑问。基本上我有一个宏,其中用户表单让用户选择用于该过程的单元格范围。然后,如果我在其他工作表中使用宏,之前使用的范围仍然存在。例如,如果在 sheet1 中我选择了“A20:A30”,然后我在 sheet2 中使用了相同的宏,则范围值仍然选择了工作表 1 的“A20:A30”的值。我知道选择范围很容易我想要,但我帮助的人希望每次运行宏时范围都是空白的,这样他就不必再次移动到活动工作表来选择范围。

这是一个带有图像的示例。在工作表“CurvasTC”(“Interpola”按钮仅显示用户表单)中,我选择一个范围并单击“Ejecutar”按钮运行该过程。然后,如果我转到“Volatilidad”表并运行该过程 用户表单出现对工作表 TC 的引用我希望它显示空白值或至少显示对活动工作表的引用。

这是用户表单的代码:

Public Sub CommandButton1_Click()

Dim rangoa As Range
Dim rangob As Range
Dim rangoc As Range

Set rangoa = Range(rangox.Value)
Set rangob = Range(rangoy.Value)
Set rangoc = Range(rangoxout.Value)

ventana.Hide
Run (I_Lineal(rangoa, rangob, rangoc))

End Sub

Private Sub Label1_Click()

End Sub

Private Sub Label3_Click()

End Sub

Private Sub rangox_BeforeDragOver(Cancel As Boolean, ByVal Data As MSForms.DataObject, ByVal x As stdole.OLE_XPOS_CONTAINER, ByVal y As stdole.OLE_YPOS_CONTAINER, ByVal DragState As MSForms.fmDragState, Effect As MSForms.fmDropEffect, ByVal Shift As Integer)

End Sub

Private Sub rangoxout_BeforeDragOver(Cancel As Boolean, ByVal Data As MSForms.DataObject, ByVal x As stdole.OLE_XPOS_CONTAINER, ByVal y As stdole.OLE_YPOS_CONTAINER, ByVal DragState As MSForms.fmDragState, Effect As MSForms.fmDropEffect, ByVal Shift As Integer)

End Sub

Private Sub UserForm_Click()

End Sub

Interpola 按钮的代码其实很简单:

Sub corrermacro()
   ventana.Show
End Sub

您选择范围的用户表单称为“ventana”。

【问题讨论】:

  • 请分享Interpola按钮的代码。
  • @omegastripes Interpola 按钮的代码就是 ventana.show
  • @omegastripes 图片中的用户表单被称为“ventana”
  • 将代码放入用户窗体的Activate 事件中以控制它在显示时显示的内容。

标签: excel userform vba


【解决方案1】:

您只是将表单隐藏在 sub 的末尾。这将使它成为invisible,但仍然存在(及其所有内容)。如果您希望下次初始化表单时它为空白,那么您应该 unload 表单:Unload ventana

因此,您应该在子目录的末尾添加它。只要知道表单上的所有数据都在该命令不再可用之后。因此,此命令应该是您的子命令中的最后一个命令:

Public Sub CommandButton1_Click()

Dim rangoa As Range
Dim rangob As Range
Dim rangoc As Range

Set rangoa = Range(rangox.Value)
Set rangob = Range(rangoy.Value)
Set rangoc = Range(rangoxout.Value)

ventana.Hide
Run (I_Lineal(rangoa, rangob, rangoc))
Unload ventana

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-08
    • 2017-06-15
    • 2019-07-23
    • 2019-12-24
    • 2020-10-09
    • 1970-01-01
    • 2014-02-09
    • 1970-01-01
    相关资源
    最近更新 更多