VBA Dim and Set Range global - PullRequest
       26

VBA Dim and Set Range global

0 голосов
/ 06 ноября 2018

Вероятно, у меня проблема с глобальными переменными:

Я хочу затемнить и установить различные диапазоны, чтобы использовать их в разных сабвуферах. Простой пример:

    Sub Variables()

    Dim rng1 as Range
    Set rng1 = Worksheets("Sheet1").Cells
    Dim rng2 as Range
    Set rng2 = Worksheets("Sheet2").Cells

    End Sub 

Затем, чтобы использовать мои переменные в других подпрограммах, я попытался вызвать подпрограмму Variable, например:

    Sub calc()

    Call Variables

    Dim i as Integer
    i = rng1.Find("Hello").Column


    With Sheet1.Cells(1, i)
         .Value = "World"
    End With

Я получаю ошибку «Требуется объект». Я также попытался определить мои переменные как Public Sub, но он все еще не работает.

Надеюсь, вы знаете, как решить эту проблему или как предложить другой подход!

Спасибо!

1 Ответ

0 голосов
/ 06 ноября 2018
Option Explicit

Dim rng1 As Range
Dim rng2 As Range

Sub Variables()

    Set rng1 = Worksheets("Sheet1").Cells
    Set rng2 = Worksheets("Sheet2").Cells

End Sub

Sub calc()

    Variables

    Dim i As Integer
    i = rng1.Find("Hello").Column

    Sheet1.Cells(1, i).Value = "World"

End Sub

Вы объявили внутри Sub, вы не можете использовать их в других Sub, поэтому он выдает ошибку.

Решение здесь находится в верхней части вашей процедуры.

...