Измените ссылку на именованный диапазон, чтобы она была комбинацией двух других именованных диапазонов - PullRequest
1 голос
/ 17 июня 2020

В настоящее время я работаю над приложением, которое представляет собой комбинацию java + vba. Что я хочу сделать: Некоторые данные экспортируются в Excel с помощью библиотеки apache poi в виде таблицы. Я использую эту таблицу, чтобы определить пару подтаблиц, которые содержат ту же информацию, но не всю таблицу, например, моя основная таблица имеет столбцы от A до F и 300 строк информации, моя подтаблица имеет столбец от A до C со 150 строками информации. Что я делаю, так это объявляю через apache poi 2 разных именованных диапазона, один для заголовка таблицы, а второй для точного содержимого, которое я хочу. Моя цель - объединить эти 2 именованных диапазона в один, объединив ссылки, поскольку я хочу, чтобы это была отдельная таблица, которую я буду экспортировать в шаблон PowerPoint, содержащий заполнители для этих таблиц.

Что у меня есть : Я покажу только код vba, поскольку у меня нет проблем с частью java.

Public Sub test()

Dim rangeHeaderValue As Variant
Dim rangeContentValue As Variant


rangeHeaderValue = ThisWorkbook.Names("TABL1_Performance_Data_1").RefersTo
rangeContentValue = ThisWorkbook.Names("TABL2_Performance_Data_1").RefersTo
ThisWorkbook.Names.Add Name:="test", RefersTo:=Right(rangeHeaderValue, (Len(rangeHeaderValue) - 1)) & 
";" & Right(rangeContentValue, (Len(rangeContentValue) - 1))


End Sub

То, что я получаю как ссылку на именованный диапазон:

="Performance_Data!$A$10:$Q$14;Performance_Data!$A$14:$Q$18"

Чего я ожидал: То же, но без кавычек, так как по какой-то причине не работает. В чем может быть проблема или есть какое-то лучшее решение? Я не очень разбираюсь в VBA, заранее извините. Пытался сделать это с помощью Union, но он дает мне ошибки, потому что ожидает, что диапазоны, а диапазоны именованных диапазонов изменяются динамически, то есть при каждом экспорте, поскольку данные разные.

1 Ответ

0 голосов
/ 17 июня 2020

добавить знак =: (и вместо;)

Public Sub test()

Dim rangeHeaderValue As String
Dim rangeContentValue As String


rangeHeaderValue = ThisWorkbook.Names("TABL1_Performance_Data_1").RefersTo
rangeContentValue = ThisWorkbook.Names("TABL2_Performance_Data_1").RefersTo
ThisWorkbook.Names.Add Name:="test", RefersTo:="=" & Right(rangeHeaderValue, (Len(rangeHeaderValue) - 1)) & "," & Right(rangeContentValue, (Len(rangeContentValue) - 1))


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