VBA: вызов надстройки Tableau внутри пользовательского подпрограммы нажатия кнопки запускается дважды, и я понятия не имею, почему - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь взять стандартный шаблон данных, выполнить некоторые преобразования (разобрать текст в столбцы), вызвать надстройку Tableau в моей подпрограмме, чтобы изменить данные, затем взять измененные данные и создать сводную таблицу (простая, верно?)

Я не совсем понимаю, что делаю неправильно, и я не могу найти в Интернете ничего, что ответило бы на мой вопрос - мой уровень программирования на VBA - средний уровень c.

Общая структура кода выглядит примерно так:

  • Делайте кучу вещей (здесь есть несколько циклов for, предназначенных для удаления листов и подготовки данных для преобразования таблиц). )

  • Вызов надстройки Tableau для изменения данных (см. Рисунок)

  • Выполните кучу других вещей с измененными данными (мало для циклов) , пару копий и вставок, а также создание нескольких листов и сводных таблиц)

Пример кода, который в настоящее время выполняется дважды

' Fill blank WBS descriptions and any remaining blanks in respective columns

    For i = 1 To ActiveSheet.Cells(Rows.Count, "B").End(xlUp).Row
        If Range("H" & i + 4).Value = "" Then
            Range("H" & i + 4).Value = "N/A"
        ElseIf IsEmpty(Range("H" & i + 4)) Then
            Range("H" & i + 4).Value = "N/A"
        End If
    Next i

' Use ** TABLEAU ** to reshape data into columnar format - this needs testing, currently running Tableau sub twice

    ActiveSheet.Range("H5").Select
    Run "tsiUnpivot", ActiveSheet, ActiveCell, ActiveSheet.Range(ActiveCell, Cells(ActiveCell.CurrentRegion.Rows(ActiveCell.CurrentRegion.Rows.Count).Row, _
    ActiveCell.CurrentRegion.Columns(ActiveCell.CurrentRegion.Columns.Count).Column)), ActiveCell.CurrentRegion, "", 0, False

' Autofit to review cells

    ActiveSheet.Cells.Select
    Cells.EntireColumn.autofit
    Range("A2").Select

' Renaming Columns 5, 9 and 10 for pivot table creation

    Range("E1").Value = "Hours" ```
...