Преобразование исходных данных в диапазон - PullRequest
2 голосов
/ 27 мая 2020

Когда я вызываю SourceData в сводной таблице, я получаю строку:

MsgBox  ActiveSheet.PivotTables("PivotTable1").SourceData

Retuen: «Sheet1 '! L18C1: L1471C23»

Я хотел бы преобразовать эту строку для RANGE, но не работает!

Sheet = Split(Source, "'")(1)
adress = Split(Source, "'")(2)
adress = Right(adress, Len(adress) - 1)
Cell1 = Split(adress, ":")(0)
Cell2 = Split(adress, ":")(1)
Debug.Print "Sheet : " & Sheet
Debug.Print "Cell1 : " & Cell1
Debug.Print "Cell2 : " & Cell2

Debug.Print Worksheets(Sheet).Range(Cell1).Value

Отладка windows

Лист: Sheet1

Cell1: L18C1

Cell2: L1471C23

«Ошибка выполнения 1004».

Спасибо

1 Ответ

1 голос
/ 27 мая 2020

Думаю, ваш код можно немного упростить. Кроме того, это основано на английской sh (американской) версии VBA. Вы должны иметь возможность изменить его для понятия "L1C1". И последнее, возможно, есть другие способы решить вашу проблему, именно так я смог это сделать.

Sub test1()
Dim source As String

Dim pivotData As String
Dim pivotRanage As Range

pivotData = "'Sheet1'!R29C15:R200C24"

Set pivotRange = Range(Application.ConvertFormula(pivotData, xlR1C1, xlA1))

Debug.Print pivotRange.Item(1, 1).Value

End Sub

В двух словах, он преобразует вашу строку в диапазон. Вот документация по функции ConvertForm lua (https://docs.microsoft.com/en-us/office/vba/api/excel.application.convertformula), но в двух словах, она берет строку и делает ее диапазоном. Затем, используя этот диапазон, легко получить первый элемент.

Надеюсь, что это поможет!

...