Avevo provato a individuare il tipo di dato tramite TypeName è come risultato restituiva che si tratta di un dato Variant().
Ho provato a inserire molti fogli (una trentina) a cui ho assegnato anche nomi a caso e la corrispondenza alla selezione c'è sempre.
Ho provato anche a creare la barra con soli bottoni o con bottoni all'interno di un controllo popup e il "risultato" non cambia.
Quindi in questo caso sembra ci sia "corrispondenza" e "costanza" di comportamento.
Giusto per condividere incollo il codice completo per il test fatto:
'=====================================================
'CREAZIONE DI UNA BARRA CON TANTI CONTROLLI QUANTI SONO I FOGLI DI LAVORO E MACRO CHE CONSENTE DI
'SELEZIONARE I FOGLI IN BASE AL LORO INDICE UTILIZZANDO LA PROPRIETA' COLLER E DETERMINANDO L'INDICE
'TRAMITE LA FORMULA "(CALLER VALORE(1) + 1)/2"
Option Explicit
Option Private Module
Dim Barra As CommandBar
Dim MenuPop As CommandBarPopup
Dim MenuBut As CommandBarButton
Dim NumSchedeProc As Long
Dim x As Long
Public Const NomeBarra As String = "Barra Test"
Sub Crea_Barra()
On Error Resume Next
Application.CommandBars(NomeBarra).Delete
Set Barra = Application.CommandBars.Add(MenuBar:=False, Name:=NomeBarra, Temporary:=True) 'crea la barra
With Barra
.Visible = True
.Position = msoBarTop
Set MenuPop = .Controls.Add(Type:=msoControlPopup)
With MenuPop
.Caption = "GESTIONE SCHEDE"
NumSchedeProc = Worksheets.Count
If NumSchedeProc > 0 Then
For x = 1 To NumSchedeProc
Set MenuBut = .Controls.Add(Type:=msoControlButton)
With MenuBut
.Style = msoButtonCaption
.BeginGroup = True
.Caption = Worksheets(x).Name
.Tag = x
.OnAction = "Seleziona_Schede"
End With
Next x
End If
End With 'FINE MENUPOP SCHEDE PROCEDURE
End With 'FINE BARRA
End Sub
Sub Seleziona_Schede()
Dim v As Variant
v = Application.Caller
Worksheets((v(1) + 1) / 2).Activate
End Sub
'=====================================================
ciao e grazie ancora :-)