Как быстро переключаться, какой лист / рабочая книга редактируется в VBA - PullRequest
1 голос
/ 04 июня 2019

По сути, я хочу, чтобы моя программа открыла гиперссылку на другую книгу и скопировала диапазон значений в мою оригинальную книгу. Проблема в том, что я не знаю, как правильно ссылаться на рабочую книгу, чтобы «вставить» на

Я пытался воспроизвести множество различных примеров в Интернете. Я пытался использовать «Установить» и «С» для переключения между ними, и я пытался сделать оригинальную рабочую книгу активной, прежде чем вставлять, но ничего не получалось.

Private Sub findColumns_button_Click()  'userform code
    Dim index As Integer, hyperlink_A As Variant, Wb As Worksheet, mainWorkbook As Variant
    mainWorkbook = ActiveWorkbook.FullName
    Worksheets("Data").Cells(2, 2) = ResultA_Combo.Value
    index = findIndex(Cells(2, 2).Value)
    hyperlink_A = findHyperlink(index)
    Worksheets("Data").Cells(3, 2) = hyperlink_A
    Workbooks.Open Filename:=hyperlink_A    'opens correctly
    Dim test As Double
    test = Worksheets("Data").Range("S23")
    MsgBox test 'displays correct value from desired workbook
    Workbooks.Activate Filename:=mainWorkbook   'not sure what to do here


End Sub

MsgBox test возвращает желаемое значение, но я не могу найти способ установить значение ячейки в исходной книге, равное test

1 Ответ

0 голосов
/ 04 июня 2019

Посмотрите, поможет ли это, я отредактировал ваш код, и, сравнивая, надеюсь, вы поймете правильное направление ... см. Комментарии в коде для более подробной информации:

Private Sub findColumns_button_Click()  'userform code
    Dim index As Integer, hyperlink_A As Variant, Wb As Worksheet, mainWorkbook As Workbook
    Dim wbSrc As Workbook

    Set mainWorkbook = ActiveWorkbook
    With mainWorkbook.Worksheets("Data")
        .Cells(2, 2) = ResultA_Combo.Value
        index = findIndex(.Value)
        hyperlink_A = findHyperlink(index)
        .Cells(3, 2) = hyperlink_A
    End With

    Set wbSrc = Workbooks.Open(Filename:=hyperlink_A)  'Allocate to variable and open at the same time

    Dim test As Double
    test = mainWorkbook.Worksheets("Data").Range("S23")
    MsgBox test 'displays correct value from first workbook

    mainWorkbook.Activate 'as long you fully qualify the ranges, you don't need and should avoid as much as possible to use .Activate & .Select

    Dim test2 As Double
    wbSrc.Worksheets(1).Range("A1") = mainWorkbook.Worksheets("Data").Range("S23") * 2
    test2 = wbSrc.Worksheets(1).Range("A1")

    MsgBox test2 'displays correct value from second workbook

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