переменная publi c не распознается в отдельном модуле книги? - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь объявить переменную publi c strFileDate, в которой я хотел бы сохранить значение поля ввода для последующего обращения к нему при открытии другой книги (отдельного wb) и выполнении макроса в этом новом wb , Я объявляю переменную publi c следующим образом:

Public strFileDate as string 
Option Explicit
Sub Update_Data()
  Dim strFileDate As String: strFileDate = InputBox("Enter Folder Date (mm.dd.yy)", Default:=Format("mm.dd.yy"))
  ...
end sub
Option Explicit
Sub Open_Separate_File    
  Dim basepath as string: basepath = "C:\...."
  Dim strFileName as string: strFileName = "test_file_"
  Thisworkbook.SaveCopyAs basepath & strFileName & strFileDate & ".xlsx" 
End Sub

всякий раз, когда я открываю книгу, содержащую Open_Separate_File, она говорит, что strFileDate не определена, и я предполагаю, что это связано с метка Option Explicit в верхней части обоих модулей. Есть ли способ обойти это без пропуска Option Explicit?

1 Ответ

2 голосов
/ 04 марта 2020

В общем случае нельзя полагаться на переменные, сохраняющие свое значение дольше, чем время выполнения макроса. Все виды действий Excel могут очистить сохраненные переменные, такие как сохранение рабочей книги, и вы никогда не сможете получить к ним доступ через книги без явного использования макросов get / set (которые могут не работать в любом случае из-за возможного удаления значений переменных). ).

Лучший способ сохранить данные такого рода - использовать функции SaveSetting и GetSetting.

В своей первой книге вы можете сохранить сохраненное введенное пользователем значение, с чем-то вроде этого:

Dim strFileDate As String
strFileDate = InputBox("Enter Folder Date (mm.dd.yy)", Default:=Format("mm.dd.yy"))
SaveSetting "ExampleAppName", "ExampleSectionName", "FileDate", strFileDate

Во второй книге вы получите доступ к этому значению, примерно так:

Dim strFileDate As String
strFileDate = GetSetting("ExampleAppName", "ExampleSectionName", "FileDate")

Если вы хотите очистить его после того, как вы закончив запускать все, что находится во второй книге, вы удалили бы это с помощью:

DeleteSetting "ExampleAppName", "ExampleSectionName", "FileDate"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...