UserForm、Excel 中的一般声明

问题描述 投票:0回答:1

怎么样?我是 VBA 的初学者,我一直试图弄清楚如何解决以下问题,但我就是做不到。所以,我将解释我在 VBA 中的挣扎,希望你们能找到解决方案。 我有一个带有 3 个选项按钮的用户表单。我有每个选项按钮的代码,它们非常相似。在我的工作流程中,我需要复制用户表单,因为基本上,我每次都会使用相同的结构,但在不同的单元格中。我将发布一张照片,以便大家更好地理解。下图是其中一个选项按钮的代码:

第一张图

到目前为止,一切都很好,代码完全按照预期工作。但是,由于我需要复制用户表单,因为我将在其他单元格中使用相同的结构,如果我有一些通用声明将应用于我的用户表单具有的所有选项按钮,就像“全局”一样工作,那么会更容易我的用户表单具有的所有选项按钮的“变量”。所以,我想做的是:

第二张图

当我声明如上图所示的通用变量时,代码会崩溃以识别“set Rng1 = Range(“AK5”)”。那么,你们知道如何解决这个问题吗?我想这并不复杂,我只是不知道如何在用户窗体中声明一般声明。我将在下面发布每个选项按钮的代码:

**OptionButton1:**
'Where it's going to copy
Dim Rng1 As Range
Set Rng1 = Range("AK5")

'Where it's going to past
Dim Rng2 As Range
Set Rng2 = Range("H24")

'Name Userform
Dim myUF As Object
Set myUF = zzzz22

Application.ScreenUpdating = False
    Rng1.Select
    Selection.Copy
    Rng2.Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A1").Select
Application.ScreenUpdating = True
    Unload myUF
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Select



**OptionButton2:**
'Where it's going to copy
Dim Rng1 As Range
Set Rng1 = Range("AK5")

'Where it's going to past
Dim Rng2 As Range
Set Rng2 = Range("H24")

'Name Userform
Dim myUF As Object
Set myUF = zzzz22

Application.ScreenUpdating = False

    Rng1.Offset(1, 0).Select
    Selection.Copy
    Rng2.Select
    ActiveSheet.Paste
    
    Application.CutCopyMode = False
    Range("A1").Select
Application.ScreenUpdating = True
    Unload myUF
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Select



**OptionButton 3:**
'Where it's going to copy
Dim Rng1 As Range
Set Rng1 = Range("AK5")

'Where it's going to past
Dim Rng2 As Range
Set Rng2 = Range("H24")

'Name Userform
Dim myUF As Object
Set myUF = zzzz22

Application.ScreenUpdating = False
    Rng1.Offset(2, 0).Select
    Selection.Copy
    Rng2.Select
    ActiveSheet.Paste
    
    Application.CutCopyMode = False
    Range("A1").Select
Application.ScreenUpdating = True
    Unload myUF
ActiveSheet.Shapes.Range(Array("Rectangle 2")).Select

我的工作流程方式是,每次复制新的用户表单时,我都必须更改每个选项按钮的单元格值。如果我设法拥有一个将应用于三个选项按钮的通用声明,我的工作流程将会更快,因为我只需更改通用声明的单元格,并且该声明也将应用于每个选项按钮一下子。 希望我说清楚了,如果你们有什么问题,我会回答。感谢您的关注!!

excel vba variables button userform
1个回答
0
投票

它可以这样构造,使用范围地址的常量:

Const RNG_1 As String = "AK5"
Const RNG_2 As String = "H24"

Private Sub OptionButton1_Click()

    Application.ScreenUpdating = False

    With ActiveSheet
        .Range(RNG_1).Copy .Range(RNG_2)
        .Shapes("Rectangle 2").Select
    End With
    Unload Me
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.