У меня возникают проблемы, когда кажется, что Case Else
имеет приоритет над другими Case
условиями.
Идея макроса зависит от имени листа, применяется другой отдельный макрос. У меня есть около 8 листов, у которых есть специфические макросы c, связанные с каждым, а затем для остальных листов (~ 20 из них) я использую Case Else
и применяю отдельный макрос. Эта проблема заключается в том, что когда в конце есть функция Case Else
, остальные Case
не применяются. Когда я удаляю Case Else
, к листам применяется правильный макрос. Это как если бы Case Else
становится по умолчанию / имеет приоритет. Ниже я попробовал альтернативные способы применения отдельных макросов, но проблема все еще сохраняется:
Sub Specify()
Dim Fun As String
Dim sht As Worksheet
For Each sht In Worksheets
Select Case sht.Name
Case "NB12", "NB15"
Application.Run "Groundwater_Macros.xlsm!limits_Alluvium"
Case "NB24"
Application.Run "Groundwater_Macros.xlsm!limits_BOCOBOML_GFA"
Case "NB16", "NB17", "NB19", "NB20", "Bore 31"
Application.Run "Groundwater_Macros.xlsm!limits_BOCOBOML_MIA"
Case "Bore 47", "Bore 48"
Application.Run "Groundwater_Macros.xlsm!limits_FracturedRock_GFA"
Case "Bore 4", "Bore 4a", "Bore 40"
Application.Run "Groundwater_Macros.xlsm!limits_FracturedRock_MIA_West"
Case "Bore 30"
Application.Run "Groundwater_Macros.xlsm!limits_FracturedRock_MIA_East"
Case Else
Application.Run "Groundwater_Macros.xlsm!limits_Monitoring_bores"
Debug.Print sht.Name
End Select
Next sht
End Sub
Sub Specify_test()
Dim Fun As String
Dim sht As Worksheet
For Each sht In Worksheets
Select Case sht.Name
Case "NB12", "NB15"
Call limits_Alluvium
Case "NB24"
Call limits_BOCOBOML_GFA
Case "NB16", "NB17", "NB19", "NB20", "Bore 31"
Call limits_BOCOBOML_MIA
Case "Bore 47", "Bore 48"
Call limits_FracturedRock_GFA
Case "Bore 4", "Bore 4a", "Bore 40"
Call limits_FracturedRock_MIA_West
Case "Bore 30"
Call limits_FracturedRock_MIA_East
Case Else
Call limits_Monitoring_bores
If Len(Fun) Then Fun = Fun & vbCr
Fun = Fun & sht.Name
End Select
Next sht
MsgBox Fun, vbInformation, "Sheets not processed"
End Sub
Sub Specify_test2()
Dim Fun As String
Dim sht As Worksheet
For Each sht In Worksheets
'Select Case sht.Name
If sht.Name = "NB12" Or sht.Name = "NB15" Then
limits_Alluvium
ElseIf sht.Name = "NB24" Then
limits_BOCOBOML_GFA
ElseIf sht.Name = "NB16" Or sht.Name = "NB17" Or sht.Name = "NB19" Or sht.Name = "NB20" Or sht.Name = "Bore 31" Then
limits_BOCOBOML_MIA
ElseIf sht.Name = "Bore 47" Or sht.Name = "Bore 48" Then
limits_FracturedRock_GFA
ElseIf sht.Name = "Bore 4" Or sht.Name = "Bore 4a" Or sht.Name = "Bore 40" Then
limits_FracturedRock_MIA_West
ElseIf sht.Name = "Bore 30" Then
limits_FracturedRock_MIA_East
Else
limits_Monitoring_bores
End If
'End Select
Next sht
End Sub
Sub Specify_test3()
Dim Fun As String
Dim sht As Worksheet
For Each sht In Worksheets
Select Case sht.Name
Case "NB12", "NB15": Call limits_Alluvium
Case "NB24": Call limits_BOCOBOML_GFA
Case "NB16", "NB17", "NB19", "NB20", "Bore 31": Call limits_BOCOBOML_MIA
Case "Bore 47", "Bore 48": Call limits_FracturedRock_GFA
Case "Bore 4", "Bore 4a", "Bore 40": Call limits_FracturedRock_MIA_West
Case "Bore 30": Call limits_FracturedRock_MIA_East
Case Else: Call limits_Monitoring_bores
End Select
Next sht
End Sub
Я устранял неполадки с именами листов. я не думаю, что это проблема, так как когда Case Else
опущен, применяется правильный макрос.