Как я могу использовать содержимое ячейки в качестве переменной, которая должна быть строкой

Я использую код ниже, чтобы обновить рабочий лист HFM и обновить две переменные: POV, Year и Period.

Мне нужно заменить "Mar" в "Period#Mar" содержимым ячейки на отдельном листе (который в настоящее время "Mar", но будет меняться каждый месяц).

Я пытался создать объект диапазона, но функция HypSetPOV требует строку, а не диапазон. Поэтому я не уверен, нужно ли мне каким-то образом преобразовать мой диапазон в строку или сделать что-то другое.

Код без диапазона (который обновляет период до марта):

Sub HFM_Refresh()

Dim SheetName As String
Dim sts As Long
SheetName = "1 - PII PL Reporting Month"

ActiveWorkbook.Worksheets(SheetName).Visible = True
ActiveWorkbook.Worksheets(SheetName).Activate
ActiveWorkbook.Worksheets(SheetName).Range("A1").Activate

X = HypSetPOV(SheetName, "Year#2019", "Period#Mar")

sts = HypMenuVRefresh()

If sts <> 0 Then
MsgBox "Error - refresh not complete on worksheet " & SheetName
End If

End Sub

Код, который я пробовал с диапазоном (который вообще не обновляет точку):

Sub HFM_Refresh()

Dim SheetName As String
Dim sts As Long
Dim MonthMember As Range
SheetName = "1 - PII PL Reporting Month"
Set MonthMember = ActiveWorkbook.Worksheets("Update").Range("D9")

ActiveWorkbook.Worksheets(SheetName).Visible = True
ActiveWorkbook.Worksheets(SheetName).Activate
ActiveWorkbook.Worksheets(SheetName).Range("A1").Activate

X = HypSetPOV(SheetName, "Year#2019", "Period#MonthMember")

sts = HypMenuVRefresh()

If sts <> 0 Then
MsgBox "Error - refresh not complete on worksheet " & SheetName
End If

End Sub

Заранее спасибо:)

2 ответа

Решение

Ты можешь сделать это:

X = HypSetPOV(SheetName, "Year#2019", _
              "Period#" & ActiveWorkbook.Sheets("Udatate").Range("D9").Value)

Вы могли бы использовать REPLACE():

Sub HFM_Refresh()
Dim ws As Worksheet

Set ws = Worksheets("1 - PII PL Reporting Month")

ws.Visible = True

Dim replCell As Range, targetRng As Range
' replCell will be the cell you want to use
' to find the replacement.
Set replCell = ws.Range("A1")

' targetRng is the range of cells you want to
' replace `Period#Mar` with (or any other such
' string, like `Period#May`, etc.

Set targetRng = ws.Range("B1:B10")

Dim cel As Range
targetRng.Replace "Period#*", "Period#" & replCell.Value, xlPart

End Sub
Другие вопросы по тегам