VBAを使用してメインサブルーチンから一連のサブルーチンを呼び出しています。すべてのサブルーチンを以下のようなコードと組み合わせると、数式が無視していると思われるセルに対して#N/Aが得られます。別のサブルーチンの内部から呼び出されたときにVBAサブルーチンを呼び出すことができません
Sub Main()
'Turn off autocalculation
Application.Calculation = xlCalculationManual
Application.DisplayStatusBar = False
'*********************************************************
'A bunch of other code
'*********************************************************
Call Sub_Routine1
Call Sub_Routine2
Call Sub_Routine3
Call Sub_Routine4
Call Sub_Routine5
Call Sub_Routine6
Call Sub_Routine7
'This is the sub routine that is not working correctly
Call Material_Formulas
'Turn back on the autocalculation function
Application.Calculation = xlAutomatic
'*********************************************************
'A bunch of other code
'*********************************************************
Application.DisplayStatusBar = True
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
私はメイン、サブルーチンからMaterial_Formulasサブルーチンを削除し、次のスクリプトを使用して個別に実行すると、それはそれが仮定されて実行され、画像怒鳴るように見えます。
Private Sub Material_Formulas()
'Turn on manual calculation
Application.Calculation = xlCalculationManual
Dim lRow As Integer
Dim tiesMaterial As String
Dim result As String
lRow = Sheets("Material").Range("A2").End(xlDown).Row
lCol = Sheets("Material").Range("A2").End(xlToRight).Column
'Starts the count at column CU
endCount = lCol - 1
For c = 99 To endCount
For r = 3 To lRow
tiesMaterial = Cells(r, 87).Value
'Looks to see if the cells starting at CU2 contains a number and then iterates through each cell in row 3 to add a formula
If tiesMaterial = "TIES MATERIAL" Then
'Defines the unique ID and calendar year cells for the index-match-match function
materialID = Sheets("Material").Cells(r, "CQ").Address(False, False)
materialYear = Sheets("Material").Cells(2, c).Address(False, False)
'Starting in cell CU3 it adds the formula =INDEX(BOM_Summary_Array,MATCH(CQ3,BOM_Summary_ID,0),MATCH(CU2,BOM_Summary_Head,0))
Sheets("Material").Cells(r, c).Formula = "=INDEX(BOM_Summary_Array,MATCH(Material!" & materialID & ",BOM_Summary_ID,0),MATCH(Material!" & materialYear & ",BOM_Summary_Head,0))"
End If
Next r
Next c
'Turn on the auto calculation function
Application.Calculation = xlAutomatic
End Sub
私が間違って何をしているのですか?手動で独立して選択するとうまく動作しますが、それを他のサブルーチンと組み合わせると失敗します。
*「失敗」*何もしない、またはエラーが発生することを意味しますか?** ?? ** –
セルの数式は何ですか?正しい数式は何でなければなりませんか? –
行2の実際の日付は、「yyyy」または2012年から2021年の整数でフォーマットされていますか? – Jeeped