Передача целочисленного аргумента в VBA

Что я пытаюсь сделать, так это передать аргумент между числами между автоматическим обновлением и обновлением, чтобы каждый раз For RowNumber повышался на один, который сохраняет это значение в Auto Update, а затем закрывается и повторно открывает Update, который затем продолжает подсчет RowNumber с того места, где он остановился. Это то, что у меня есть до сих пор. Как мне заставить Panel.xls открываться и закрываться?

    Public RowNumber As Integer
Public LoopCount As Integer
    Sub auto_open()
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Application.PrintCommunication = False
    Dim PanelFilePath As String
    Dim PanelFileName As String
    Dim PanelLocation As String
    Dim PanelWB As Workbook
        PanelFilePath = "D:\umc\UMC Production Files\Automation Files\"
        PanelFileName = "Panel.xls"
        PanelLocation = PanelFilePath & Dir$(PanelFilePath & PanelFileName)
        RowNumber = 0
        For LoopCount = 0 To 7
        If LoopCount < 7 Then
         Set PanelWB = Workbooks.Open(Filename:=PanelLocation, UpdateLinks:=3)
             PanelWB.RunAutoMacros Which:=xlAutoOpen
             Application.Run "Panel.xls!Update"
             PanelWB.Close
        End If
         Next LoopCount
        Call Shell("D:\umc\UMC Production Files\Automation Files\Auto.bat", vbNormalFocus)
    Application.Quit
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    Application.PrintCommunication = True
    End Sub

    Function Update(LoopCount As Integer)
    getRowNumber = LoopCount
    End Function

Panel.xls! Обновить

 Sub Update()
Dim AutoUpdateTargetFile As String
Dim AutoUpdateWB As Workbook
For RowNumber = 1 To (Range("AutoUpdate.File").Rows.Count - 1)
    If (Range("AutoUpdate.File").Rows(RowNumber) <> "") Then
        AutoUpdateTargetFile = Range("Sys.Path") & Range("Client.Path").Rows(RowNumber) & Range("AutoUpdate.Path ").Rows(RowNumber) & Range("AutoUpdate.File").Rows(RowNumber)
        Set AutoUpdateWB = Workbooks.Open(Filename:=AutoUpdateTargetFile, UpdateLinks:=3)
            AutoUpdateWB.RunAutoMacros Which:=xlAutoOpen
            Application.Run "Auto_Update.xls!Flat"
            AutoUpdateWB.Close
    End If
    Next RowNumber
End Sub

person Michael Downey    schedule 17.12.2014    source источник
comment
Вы рассматривали возможность использования переменной Global?   -  person TheEngineer    schedule 17.12.2014
comment
Итак, я бы сделал RowNumber глобальной переменной?   -  person Michael Downey    schedule 17.12.2014
comment
Извините, я имел в виду Public переменную. Вы можете сделать RowNumber общедоступной переменной, а затем ссылаться на нее в другой книге. См. этот пример.   -  person TheEngineer    schedule 17.12.2014
comment
Спасибо! Теперь мне просто нужно выяснить, как настроить функцию. знак равно   -  person Michael Downey    schedule 17.12.2014
comment
Вопрос немного вводит в заблуждение, потому что основная проблема заключается не в передаче целочисленного аргумента, а в правильном использовании Public var. С наилучшими пожеланиями,   -  person Alexander Bell    schedule 17.12.2014


Ответы (1)


1). Вы объявили Public var:

Public RowNumber As Integer

поэтому удалите локальное объявление той же переменной в Sub

Dim RowNumber As Integer 'remove

2). Что касается вашей второй проблемы «как передать аргумент», обратитесь к следующему примеру, демонстрирующему два варианта передачи аргументов в Sub ByVal или ByRef:

 Sub Example(ByVal Num1 As Integer, ByRef Num2 As Integer)
 'code
 End Sub

Надеюсь, это поможет. С наилучшими пожеланиями,

person Alexander Bell    schedule 17.12.2014
comment
Исправлено, но моя проблема по-прежнему заключается в том, как передать аргумент. - person Michael Downey; 17.12.2014