如何在另一个函数中使用来自不同函数的变量?

时间:2014-02-21 19:17:00

标签: vba ms-access access-vba

我有一个方法

Public CurrentFileNameNoExtension As String
Public Sub importexcelfile()

CurrentFileNameNoExtension ="Filename"
'do something 

End Sub

我想在下拉列表( cmvalues )事件的 onEnter 事件中使用 CurrentFileNameNoExtension 值。该值在sql查询中使用。我的代码是

Private Sub cmvalues_Enter()
Dim qstng As String
qstng = CurrentFileNameNoExtension
Me.cmvalues.RowSourceType = "Table/Query"
Me.cmvalues.RowSource = "Select F1 from " & qstng & " WHERE F1 <> 'Control Model';"

End Sub

qstng 值为空。它没有在 importexcelfile()函数中给出值。

2 个答案:

答案 0 :(得分:1)

编辑:正如我刚刚注意到的那样,感谢@simoco,这确实是一个用户形式,实际上还有一些事情可以解决这个问题。一个是使用全局变量,这非常棘手,另一个是使用函数来获取你想要的字符串。

Function CurrentFileNameNoExtension() As String
    'Do some FSO or GetOpenFileName here.
    CurrentFileNameNoExtension = "Filename"
End Sub

Private Sub cmvalues_Enter()
    qstng = CurrentFileNameNoExtension
    Me.cmvalues.RowSourceType = "Table/Query"
    Me.cmvalues.RowSource = "Select F1 from " & strFileName & " WHERE F1 <> 'Control Model';"
End Sub

使用您拥有的代码并没有太大问题,真的。您只需确保在第二个子调用之前调用第一个子类,以便cmvalues_Enter具有要处理的有效字符串。

答案 1 :(得分:0)

将此功能置于 Microsoft Access类对象表单控件下, cmvalues 下拉列表存在

    Public CurrentFileNameNoExtension As String
    Public Sub importexcelfile()

    CurrentFileNameNoExtension ="Filename"
     'do something 

    End Sub