格式函数错误
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
注意:你应该避免使用Select
和ActiveSheet
,而是完全定义和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
- 在此声明中
LDate = Date
您依赖语言环境。错了。
- 您只能使用一次时间戳。这是规则。
但是你再拿Day(Today)
(意思是Date
或者Now
)
又一次 format(Date,"yyyy-m-dd")
。
- 据我所知,您尽量避免 1 位和 2 位日历日编号的表示问题。
好的。但是这样的问题就等着你了:)
然而 "yyyy-m-d" 的格式模式给你想要的。
ScreenUpdating
未恢复。
- 额外的重复代码
总之,它必须看起来像这样(不考虑在我之前发布的所有其他重要注释):
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
.
我目前正在尝试更新格式为
的工作簿连接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
注意:你应该避免使用Select
和ActiveSheet
,而是完全定义和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
- 在此声明中
LDate = Date
您依赖语言环境。错了。 - 您只能使用一次时间戳。这是规则。
但是你再拿Day(Today)
(意思是Date
或者Now
)
又一次format(Date,"yyyy-m-dd")
。 - 据我所知,您尽量避免 1 位和 2 位日历日编号的表示问题。
好的。但是这样的问题就等着你了:)
然而 "yyyy-m-d" 的格式模式给你想要的。 ScreenUpdating
未恢复。- 额外的重复代码
总之,它必须看起来像这样(不考虑在我之前发布的所有其他重要注释):
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
.