Errore creazione commandbar

di il
5 risposte

Errore creazione commandbar

Scusate se insisto sull'argomento…

non riesco a capire perché mi restituisce l'errore di Run-time 5 nel seguente codice alla chiamata indicata con (*):
Sub menu1()

Public Const Mname As String = "MenuPopup"

Dim cbar As CommandBarPopup
Dim cb As CommandBar

Dim x As Long, y As Long

x = StX
y = StY

Call DeletePopUpMenu


If CBRexist(Mname) = False Then

Set cb = Application.CommandBars.Add(Name:="Mname", Position:=msoBarPopup, Temporary:=True)  '(*)
Set cbar = cb.Controls.Add(Type:=msoControlButton)
With cbar
    .Caption = "Item11"
End With

Set cbar = cb.Controls.Add(Type:=msoControlButton)
With cbar
    .Caption = "Item12"
End With

End If


On Error Resume Next

Application.CommandBars(Mname).ShowPopup x, y

On Error GoTo 0
End Sub


Private Function CBRexist(NomeCBR As String) As Boolean
On Error Resume Next
Dim varName As Variant
varName = Application.CommandBars(NomeCBR).Name
CBRexist = Err.Number = 0
End Function

Sub DeletePopUpMenu() 'cancella il popup se già esiste
On Error Resume Next
Application.CommandBars(Mname).Delete
On Error GoTo 0
End Sub



grazie.

5 Risposte

  • Re: Errore creazione commandbar

    Io non vedo (*) da nessuna parte...
    In ogni caso quel codice ha cose assurde... e di certo il copia/incolla potevi farlo meglio.
    Perché dichiari PUBLIC una costante in una SUB...?
    Perche cancelli la CommandBar tutte le volte...?
    Perche dopo averla cancellata controlli se esiste...?
    Conosci la differenza tra SUB e FUNCTION...?
    Da dove arrivano stX e stY...?

    Insomma... prima fai le cose fatte bene...
  • Re: Errore creazione commandbar

    Si infetti diciamo che va meglio cosi:
    Option Compare Explicit
    Option Explicit
    
    Public Const Mname As String = "MenuPopup"
    
    Sub menu1()
    
    Dim cbar As CommandBarPopup
    Dim cb As CommandBar
    
    Set cb = Application.CommandBars.Add(Name:="Mname", Position:=msoBarPopup, Temporary:=True)  '(*)
    Set cbar = cb.Controls.Add(Type:=msoControlButton)
    With cbar
        .Caption = "Item11"
    End With
    
    Set cbar = cb.Controls.Add(Type:=msoControlButton)
    With cbar
        .Caption = "Item12"
    End With
    
    Application.CommandBars(Mname).ShowPopup x, y
    
    End Sub
    
    L'asterisco si trova li dove crea la commandbarpopup cb.
  • Re: Errore creazione commandbar

    Passi una stringa non un nome... secondo te... questo va bene...?
    (Name:="Mname"...)

    Non hai provato a compilare...? X e Y dove sono dichiarati...?
  • Re: Errore creazione commandbar

    Questa volta ho omesso:
    Dim x As Long, y As Long
    
    x = StX
    y = StY
    nella routine… lo so che il metodo showpopup cosi non funziona ma il problema era li dove era indicato (*).
    StX e StY non due variabili pubbliche dichiarate fuori dalla routine.
    Pensano che Name:= potesse essere un stringa cui assegnare un nome di mia scelta.
  • Re: Errore creazione commandbar

    Certo che può ma non come lo hai scritto tu... togli i doppi apici altrimenti è una stringa te l'ho fatto capire ma.....

    Name:=Mname
Devi accedere o registrarti per scrivere nel forum
5 risposte