私はしばらくの間、この問題で遊んでいましたが、その方法がわかりませんでした。 私はすべてのワークシートに同じ機能を持っています(そして、これらのシートはこの Name="One", CodeName="SheetOne" のように命名されています ...):
const someVar as Boolean = True
Public Function myFunction() as Boolean
myFunction = someVar
End Function
今、私はこのように外部から呼び出されるようにしたい - ThisWorkbook には、プロシージャ "doThis()" と関数 "TestThis():
Sub doThis()
Dim i as Integer
For i = 1 to ThisWorkbook.Sheets.Count
If testThis(ThisWorkbook.Worksheets(i)) = True then
Debug.print "Success!"
End If
Next i
Function testThis(x As Worksheet)
If x.myFunction = True Then
testThis = True
Else
testThis = False
End If
これで、この行で「If x.myFunction = True」というエラーがスローされることがわかりました。これは、この参照でその関数を呼び出すことができないためです。VBComponent で試してみました。
Sub doThis()
Dim i as Integer
For i = 1 to ThisWorkbook.Sheets.Count
If testThis(ThisWorkbook.VBProject.VBComponents(Worksheets(i).CodeName)) _
= True then
Debug.print "Success!"
End If
Next i
Function testThis(x As VBComponent)
If x.myFunction = True Then
testThis = True
Else
testThis = False
End If
ただし、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」というエラーがスローされます。そのワークシートへのあらゆる種類の参照を格納している変数からその関数を呼び出すにはどうすればよいですか? どんな助けでも大歓迎です。