Создать общедоступную переменную, содержащую данные из WorkSheet

Упрощенный код Excel:

Public MyFile As String
Public varSheetA As Variant
Public SelRangeA As Range
Public wsCopy As Excel.Worksheet

Sub SelectFile_Click()

MyFile = Application.GetOpenFilename()  'Aquire filepath from user
If (MyFile <> "False") Then
Range("B1").Value = "File Found"
End If
End Sub

Sub LoadFile_Click()

Dim WbOne As Workbook
Dim strRangeToCheck As String
strRangeToCheck = "A1:T2000"

Set WbOne = Workbooks.Open(MyFile) 'Open that file
Set wsCopy = WbOne.Worksheets(1)   'Try to copy
Set varSheetA = wsCopy.Range(strRangeToCheck) 'Try to copy
Set SelRangeA = wsCopy.Range(strRangeToCheck) 'Try to copy

WbOne.Close 'This is where we lose the references & values
End Sub

Sub DisplayFile_Click()

Range("A4").Value = varSheetA(1, 1)
End Sub

Конечным результатом этой программы является получение значений из WorkSheet(1) в Range или Variant Array, чтобы я мог редактировать и отображать их по мере необходимости и в конечном итоге копировать значения обратно в исходный файл. Однако, когда я запускаю этот код, все переменные Public, которые я инициализирую, становятся пустыми, когда LoadFile_Click выходы (более конкретно, когда WbOne закрывается.

Ранее мой код выглядел как varSheetA = WbOne.Worksheet(1).Range(strRangeToCheck) хотя в настоящее время я тестирую разные методы, потому что этот способ, похоже, не работает.

Кто-нибудь видит какие-либо фундаментальные проблемы с тем, что я пытаюсь сделать? Спасибо!

1 ответ

Решение
Option Explicit

Public MyFile As String
Public varSheetA As Variant


Sub SelectFile_Click()
    MyFile = Application.GetOpenFilename()  'Aquire filepath from user
    If (MyFile <> "False") Then
        Range("B1").Value = "File Found"
    End If
End Sub

Sub LoadFile_Click()

    Const strRangeToCheck As String = "A1:T2000"

    With Workbooks.Open(MyFile)
        varSheetA = .Worksheets(1).Range(strRangeToCheck).Value
        .Close False
    End With

End Sub

Sub DisplayFile_Click()
    Range("A4").Value = varSheetA(1, 1)
End Sub
Другие вопросы по тегам