Перенос данных в форму сводной таблицы - неверное использование ключевого слова ME - PullRequest
0 голосов
/ 29 марта 2020

Я получаю сообщение об ошибке

"Ошибка компиляции неверное использование ключевого слова ME"

для кода Excel VBA ниже. Из Googling я знаю, что причина в том, что вы не можете использовать «ME» в модуле, но я не смог найти что-нибудь о том, как решить его, чтобы оно могло работать в модуле.

Я использую код VBA и SQL и подключаюсь к базе данных SQL, чтобы получить некоторую информацию в форме сводной таблицы. Но я просто не знаю, как решить проблему ME.

Sub RefreshData()
    Dim SQl As String
    Dim startdate As String, Enddate As String
    Dim pvt As PivotTable


    Set pvt = **Me.**PivotTables("PivotTable5")
    pvt.PivotCache.Connection = "ODBC;DSN=" & Application.Range("DSN_Source") & ";DATABASE=" & Application.Range("TD_DB") & ";"

    startdate = Format(**Me**.Range("PSdate"), "yyyy-mm-dd hh:mm:ss")
    Enddate = Format(**Me**.Range("PEdate"), "yyyy-mm-dd hh:mm:ss")

    SQl = ""

    SQl = "WITH PanDetail As " & vbCrLf
    SQl = SQl & "( " & vbCrLf
    SQl = SQl & " SELECT ID, name, SCODE, SDATETime, PDESCRIPTION, ROUND(VOLUME, 5) As VOLUME" & vbCrLf
    SQl = SQl & ", ROUND(MASS, 0) As MASS " & vbCrLf

1 Ответ

1 голос
/ 30 марта 2020

PivotTables является членом Worksheet. Вы должны указать VBA, какой лист вы хотите использовать.

В следующем фрагменте кода будет использоваться «Лист1» рабочей книги, содержащей код. Обратите внимание на . перед PivotTables и Range - это говорит VBA использовать члены объекта With -статации.

With ThisWorkbook.Worksheets("Sheet1") 
    Set pvt = .PivotTables("PivotTable5")
    startdate Format(.Range("PSdate"), "yyyy-mm-dd hh:mm:ss")
    Enddate = Format(.Range("PEdate"), "yyyy-mm-dd hh:mm:ss")
    (...)
End With

Альтернативы могут быть

Dim ws as Worksheet
set ws = ThisWorkbook.Sheets("Sheet1") 
Set pvt = ws.PivotTables("PivotTable5")
startdate = Format(ws.Range("PSdate"), "yyyy-mm-dd hh:mm:ss")

или (но беспорядочно и сложнее изменить, просто для понимания)

Set pvt = ThisWorkbook.Sheets("Sheet1").PivotTables("PivotTable5")
startdate = Format(ThisWorkbook.Sheets("Sheet1").Range("PSdate"), "yyyy-mm-dd hh:mm:ss")

Возможно, вам будет полезно прочитать { ссылка }

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