セルに次の数式があります。
=GetData("Channel_01","Chicago")
次のコードを実行します。
Public Function GetData(ChannelCode As String, Key As String) As String
Dim sql As String
Dim cmd As New ADODB.Command
Dim outputTo As Range
Set outputTo = Application.Caller
sql = "select * from ChannelData WHERE ChannelCode = ? AND Key1 = ?"
Set cmd = getCommand(sql, ChannelCode, Key)
Dim rs As ADODB.Recordset
Set rs = cmd.Execute
WritePivotRecordset ChannelCode, rs, outputTo.Offset(1, 0)
End Function
Public Sub WritePivotRecordset(ChannelCode As String, rs As ADODB.Recordset, destination As Range)
Dim i As Integer
'*** WHEN THIS LINE OF CODE IS REACHED AND EXECUTES, PROCESSING STOPS
Set destination.Value = ChannelCode
For i = 1 To rs.Fields.Count - 1 'skip first field
destination.Offset(0, i).Value = rs.Fields(i).Name
Next
destination.Offset(1, 0).CopyFromRecordset rs
End Sub
問題は次の行で発生します。
'*** WHEN THIS LINE OF CODE IS REACHED AND EXECUTES, PROCESSING STOPS
Set destination.Value = ChannelCode
これを設定すると、実行中の VBA スレッドなどを終了するスプレッドシートの再計算が呼び出されますか? 私はそう思ったので、出力を書く前にこれを試しました:
Application.Calculation = xlCalculationManual
しかし、同じコード行で、 アプリケーション定義またはオブジェクト定義のエラーが発生しました。
VBA関数からVBA関数が呼び出された同じワークシートへの書き込みは許可されていませんか?