マクロの初期段階で開いた別のスプレッドシートで動作するVBA関数がスプレッドシート内にあります。マクロは正常に機能していましたが、最近、実行時に1004エラー(「WorksheetFunctionクラスのRoundDownプロパティを取得できません」)が発生し始めました。
エラーの原因(RoundDownの実行の問題)は理解できますが、マクロでトリガーされる理由がわかりません。奇妙なことに、デバッグモードに入り、VBEのコードをステップ実行すると、エラーは再発しません(明らかに何も変化していませんが)。
一貫性のないこの種のエラーが発生するという同様の経験があり、それを解決するために私が何ができるかを知っている人はいますか?
私はかなりVBA/Excelに精通していますが、それを診断するためのさらなる手順についての提案をいただければ幸いです。開いたスプレッドシートの準備ができていないという問題があるのではないかと思いますが、その方法がわかりません。
コードはこちらです。コメントでマークされた行でエラーが発生します。
Public Function GetDatesA(sWorkbookname As String, sSheetname As String, sCell As String) As Variant
Dim vDateList() As Variant
Dim currentCell As Range
Dim n As Long
Set currentCell = Workbooks(sWorkbookname).Worksheets(sSheetname).Range(sCell)
n = 0
Do
If Trim(currentCell.Value) = "" Then
Exit Do
Else
ReDim Preserve vDateList(0 To 1, 0 To n)
vDateList(0, n) = WorksheetFunction.RoundDown(currentCell.Value, 0) 'error occcurs on this line
vDateList(1, n) = currentCell.Column
'Debug.Print currentCell.Value
End If
Set currentCell = currentCell.Offset(0, 1)
n = n + 1
Loop While currentCell.Column < XL_LAST_COLUMN
GetDatesA = vDateList
End Function
その他の詳細は次のとおりです。
Excelバージョン:2010
開かれているファイルは、私のC:ドライブにローカルにあります。私のマクロはネットワーク上のスプレッドシートにあります
両方のファイルのファイル形式は.xls(つまり、Excel 2003)です-これを変更するオプションはありません
Windows 7(私はそれが関連するとは思わない)
私がすでに試した2つのポイントは次のとおりです。
別のワークシート関数(例:Min(currentCell))に置き換えても、同じ問題が発生します
ファイルを開いておくと、問題が解決するようです。開いているブック(マクロが含まれているメインのブックではなく)がマクロに対して有効になっておらず、これが干渉しているのではないかと思います。しかし、これが原因であるとしても、それを回避する方法がわかりません!
何か案は?