格式函数错误

Format function error

我目前正在尝试更新格式为

的工作簿连接

Messergebnisse-2018-3-22

我每天link一个文件,所以我想只更新最近的连接。

这是我一直在使用的代码,但总是出现错误:

Sub Refresh()

 Dim LDate As String
 LDate = Date

If Day(Today) >= 10 Then
 Application.ScreenUpdating = False
 ActiveWorkbook.Connections("Messergebnisse-" & format(Date,"yyyy-m-dd")).Refresh
 Sheets("OK").Select
 ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
 Sheets("Summary").Select

Else
 Application.ScreenUpdating = False
 ActiveWorkbook.Connections("Messergebnisse-" & LDate).Refresh
 Sheets("OK").Select
 ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
 Sheets("Summary").Select

End If
End sub

尝试使用日期变量和实际格式函数。

但是格式化函数出现错误:

编译错误:

Wrong number of arguments or invalid property assignment

有什么想法吗?

编译错误是因为If Day(Today) >= 10 Then.

应该是If Day(Now) >= 10 Then

为避免编译错误,请在 module/class/worksheet 的顶部和 运行 之前写 select Debug>Compile 来自 [=26] 的代码=] 丝带。它会一直告诉你你的代码能不能通过编译,错误在哪里。


检查这个小样本:

Sub TestMe()
    MsgBox Day(Now)
End Sub

你需要更换

If Day(Today) >= 10 Then

If Day(Date) >= 10 Then

注意:你应该避免使用SelectActiveSheet,而是完全定义和Set你所有的对象。您可以通过修改以下代码来实现:

Dim OKSht As Worksheet
Dim PvtTbl As PivotTable

' set the worksheet object
Set OKSht = ThisWorkbook.Sheets("OK")

' set the Pivot-Table object
Set PvtTbl = OKSht.PivotTables("PivotTable1")

' refresh the Pivot-Table PivotCache
PvtTbl.PivotCache.Refresh
  1. 在此声明中 LDate = Date 您依赖语言环境。错了。
  2. 您只能使用一次时间戳。这是规则。
    但是你再拿Day(Today)(意思是Date或者Now
    又一次 format(Date,"yyyy-m-dd")
  3. 据我所知,您尽量避免 1 位和 2 位日历日编号的表示问题。
    好的。但是这样的问题就等着你了:)
    然而 "yyyy-m-d" 的格式模式给你想要的。
  4. ScreenUpdating 未恢复。
  5. 额外的重复代码

总之,它必须看起来像这样(不考虑在我之前发布的所有其他重要注释):

Sub Refresh()
Dim dDate As Date
Dim sDate$, sCncStr$

    dDate = Date

    sCncStr = "Messergebnisse-"

'    Select Case (Day(Today) >= 10) ' remained for the case of I misunderstand you
'        Case True ' Format it on your choice
'            sDate = 'Format$(dDate, "yyyy-m-dd")
'        Case False
'            sDate = 'CStr(dDate)
'    End Select

    sDate = Format$(dDate, "yyyy-m-d")

    sCncStr = sCncStr & sDate

    Application.ScreenUpdating = False
        ActiveWorkbook.Connections(sCncStr).Refresh
        Sheets("OK").Select
        ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
        Sheets("Summary").Select
    Application.ScreenUpdating = True
End Sub

.