私はVBA初心者です。私はExcelセルから呼び出すことができる関数を記述しようとしています。閉じられたブックを開き、セルの値を検索して返すことができます。ExcelセルからVBA関数を呼び出す方法
これまでのところ、私はこのようなマクロを作成する方法を知っている:
Sub OpenWorkbook()
Dim path As String
path = "C:\Users\UserName\Desktop\TestSample.xlsx"
Dim currentWb As Workbook
Set currentWb = ThisWorkbook
currentWb.Sheets("Sheet1").Range("A1") = OpenWorkbookToPullData(path, "B2")
End Sub
Function OpenWorkbookToPullData(path, cell)
Dim openWb As Workbook
Set openWb = Workbooks.Open(path, , True)
Dim openWs As Worksheet
Set openWs = openWb.Sheets("Sheet1")
OpenWorkbookToPullData = openWs.Range(cell)
openWb.Close (False)
End Function
マクロOpenWorkbook()は完全に正常動作しますが、私はExcelのセルから直接OpenWorkbookToPullData(...)を呼び出すようにしようとしていますとき、 、それは動作しません。ステートメント:
Set openWb = Workbooks.Open(path, , True)
戻り値なし。
Excelセルから呼び出せるVBA関数に変換する方法を知っている人はいますか?
http://www.wikihow.com/Create-a-User-Defined-Function-in-Microsoft-Excelが重要です。 – pnuts
助けてくれてありがとう。 @pnuts私の問題は、VBAの一般的な機能を書く方法ではありませんが、ここでは特に具体的です。 OpenWorkbookToPullData(...)が呼び出され、私は入ることができますが、問題はWorkbooks.Open(...)が実行された行にあり、Nothingとして返されます。 OpenWorkbookToPullData(...)を呼び出すSub OpenWorkbook()は正常に動作します。 – user780069
ありがとう@PortlandRunner ただし、マクロサブOpenWorkbook()が正常に機能するという意味で、関数自体が「機能する」。問題は実際にそこにある構文ではありません。 ExcelのセルからOpenWorkbookToPullData(...)を呼び出すと、Workbooks.Open(...)行はNothingを返します。サブルーチンから呼び出された場合は正常に動作します。 – user780069