Назначьте значения ячеек на основе переменной Range - PullRequest
1 голос
/ 22 апреля 2019

В настоящее время у меня есть код, который копирует значения из нескольких диапазонов и вставляет эти значения в другие диапазоны. Масштаб этого проекта постоянно меняется, поэтому каждый раз, когда добавляется строка или столбец, в моем коде VBA необходимо менять диапазоны. Я пытаюсь упростить это, создав переменные глобального диапазона для хранения местоположений диапазона, и мой код копирования / вставки ссылается на эти переменные.

Public test As Range
Public def1 As Range

Public Sub initializeGlobalVars()

'Assign values to the global variables

Set def1 = Sheets("Defaults").Range("B10:D14")

Set test = Sheets("Defaults").Range("B32:D36")
test = def1

End Sub

Я знаю, что здесь пропущена какая-то строка или неверный подход к ней, но я бы хотел иметь возможность изменять значения фактических ячеек в переменных "test", ссылаясь на переменную "test", а не на расположение ячейки, так как оно постоянно меняется. Возможно ли это?

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 22 апреля 2019

Вы можете использовать TABLES или NAMED RANGES

1 - Таблицы имеют имя и могут использоваться для определения некоторого диапазона, который является динамическим!Таким образом, вы можете использовать ActiveSheet.ListObjects ("таблица"). Range ()

Here is the table

2 - Вы можете создать именованный диапазон

Таким образом, вы можете использовать

Range("RAGEDNUMBERONE") 

Ranged Named

0 голосов
/ 22 апреля 2019

Поскольку Range принимает строковую переменную, вы можете просто сделать что-то вроде следующего:

Dim strRangeToUse as String
strRangeToUse = "B10:D14"

Set test = Sheets("Defaults").Range(strRangeToUse)

Если затем вы хотите установить другой диапазон (strRangeToFill) с тестовым диапазоном, вы можетевыполните следующие действия:

Sheets("Defaults").Range(strRangeToFill).Value = test.Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...