В формуле обратитесь к листу по значению ячейки - PullRequest
0 голосов
/ 16 июня 2019

Первый пост, и очень очень новичок на VBA.Я решаю свои проблемы, но делаю копирование / вставку из примеров на таких прекрасных форумах и сайтах, как этот: -)

Вот моя проблема:

Текущий рабочий лист - CAPA, а ячейка D2 имеетзначение (например, 181).

Значение в ячейке D2, которое равно 181, является также именем другого листа, который я уже создал.

В моем коде VBA, работающем на листе CAPA,Я хочу, чтобы макрос записал эту формулу в ячейку B12:

= '181'! B9

и хочу, чтобы она взяла 181 из значения в ячейке D2

Я уже пробовал это:

Dim MySheet As String, ws As Worksheet
MySheet = Sheets("CAPA").Range("D2").Value
Set ws = Sheets(MySheet)

, а затем

Range("B12").Select
ActiveCell.FormulaR1C1 = "='ws'!B9"

Но вместо этого он открыл диалоговое окно для указания файла, содержащего ссылку ws.

Было быглубоко благодарен за любую помощь в этом.

Заранее спасибо, Васко.

Ответы [ 2 ]

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

попробуй дать все имена в vba, мне легче следовать. также легче использовать ссылку на ячейку, когда вы к ней привыкли (строка, столбец). код ниже должен работать:

  Option Explicit

  Sub hh()
       'declare workbook
        Dim bk As Workbook

        'give capa and the workshhet you want use names
        Dim capa As Worksheet
        Dim cellSheet As Worksheet

        Dim MySheet As String

        'set the woorkbook
        Set bk = ThisWorkbook
        'set capa
        Set capa = bk.Worksheets("CAPA")

        'set the myString variable to b2 (same as row 2, column 2)
        MySheet = capa.Cells(2, 2) 'b2

        'set the sheet as the value of the string
        Set cellSheet = bk.Worksheets(MySheet)

        'with the sheets set values are easily exchanged:
        capa.Cells(12, 2) = cellSheet.Cells(9, 2)

    End Sub
0 голосов
/ 16 июня 2019

В вашем случае вам не нужно устанавливать лист. Просто нужно передать имя листа в формулу. Попробуйте следующий подпункт

Sub Button1_Click()
Dim MySheet As String
    MySheet = Sheets("CAPA").Range("B2").Value

    Range("B12").Formula = "='" & MySheet & "'!B9"
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...