如何使用VBA在不同的工作簿中使用Userform全局变量值

时间:2015-12-09 19:19:16

标签: excel vba excel-vba global-variables userform

我在不同的文件夹中维护了两个excel工作簿,在第一个excel我创建了一个Userform,其中有两个组合框,我已经声明了一个全局变量" EpcName"在Userform中,此全局变量存储第二个组合框选定值。 现在我的问题是如何使用Userform中的Global变量值到不同文件夹中的其他工作簿。

工作簿1路径(我在哪里创建了userform) C:\ Users \ inkapb \ AppData \ Local \ Temp \ EPC AutoTool \ Start Screen -UI \ UI.xlsm

练习册2路径 C:\ Users \ inkapb \ AppData \ Local \ Temp \ EPC AutoTool \ Projects \ Power Plant \ Power Plant EPC 1.xlsm

以下是我在Userform

中编写的代码
 Public EpcName As String
 Private Sub CommandButton1_Click()

 Dim wb As Workbook
 Dim ws As Worksheet


 Set wb = Workbooks("UI.xlsm")
 Set ws = wb.Worksheets("Sheet2")

  Dim qwerty As String
 Dim cf As Range



 EpcName = Me.ComboBox2.Text  'Want to pass this String to other workbook

 With ws
.Activate
With .Range("C1:C10000")

  Set cf = .Find(what:=EpcName, _
    lookat:=xlPart, searchorder:=xlByRows, searchdirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False)

    If cf = "" Then
 MsgBox "nothing"
 Else
 Range(cf.Address).Select
 Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

 End If

    End With

    End With

 End Sub

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

应该可以。声明并初始化工作簿中包含用户表单的变量,例如像这样。

experiment_id

然后在其他工作簿中,类模块ThisWorkbook,添加例如像这样的公共财产(可能只是一个公共变量)。

Option Explicit

Public EpcName As String
Private m_theOtherWorkbook As Workbook

Private Sub UserForm_Initialize()
    On Error GoTo ErrInit

    Set m_theOtherWorkbook = Workbooks("Power Plant EPC 1.xlsm")

    Exit Sub

ErrInit:
    MsgBox "Error in " & Me.Name & ". UserForm_Initialize. " & Err.Description, vbCritical, "Error"
End Sub

在User表单的代码中,只需调用其他工作簿的EpcName属性(当然必须打开其他工作簿)。属性EpcName现在是另一个工作簿的新接口的一部分,它应该工作得很好。 HTH

Option Explicit

Private m_epcName As String

Public Property Get EpcName() As String
    EpcName = m_epcName
End Property

Public Property Let EpcName(ByVal vNewValue As String)
    m_epcName = vNewValue
End Property