Previous page | 1 | Next page

richiamare una macro da una label

Last Update: 8/6/2022 8:18 AM
Author
Print | Email Notification    
Post: 474
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/2/2022 10:58 PM
 
Modify
 
Delete
 
Quote

Ciao a tutti.
Questa label inserita in una userform

Private Sub UserForm_Initialize()


 Label6.Caption = Label6.Caption & " < " & ActiveSheet.Name & " >"
 Label7.Caption = Label7.Caption & " < " & ActiveSheet.Name & " >"
 
    With Me.ComboBox6
        .AddItem ("archivia_1") '<<< richiama nome macro
        .AddItem ("archivia_2") '<<< richiama nome macro
        End With
End Sub



richiama 2 macro

.AddItem ("archivia_1") '<<< richiama nome macro
.AddItem ("archivia_2") '<<< richiama nome macro


è possibile che nel mome risulti questo:

qui nella label dovrebbe visualizzarsi AddItem ("archivia_" & ActiveSheet.Name & "1")
però riferito alla macro .AddItem ("archivia_1")

qui nella label dovrebbe visualizzarsi AddItem ("archivia_" & ActiveSheet.Name & "2")
però riferito alla macro .AddItem ("archivia_2")

spero di essermi spiegato.
grazie

---------------
excel 2007
Post: 6,910
Registered in: 11/14/2004
Master User
Office 2019
OFFLINE
8/3/2022 8:17 AM
 
Modify
 
Delete
 
Quote

Ciao john, veramente no, in primis nelle due label 16-17 fai visualizzare lo stesso nome del foglio "Activesheet.name", poi metti i 2 nomi dei fogli in una combobox, forse per la scelta della macro da lanciare?.

per lanciare una macro da una label puoi usare l'evento clic della label stessa, guarda questo esempio di label in una userform per lanciare macro.

upload photo

come vedi selezionando le varie label e cliccando lancia una diversa macro, nel caso dell'userform apre un diverso scenario in base alla scelezione.

Ciao By Sal (8-D

se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 474
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/3/2022 9:25 PM
 
Modify
 
Delete
 
Quote

Questo il codice completo dell'userform:

Option Explicit

Private Sub cmdCancel6_Click()

    Unload Me
End Sub


Private Sub cmdOkay6_Click()
Dim avviso As String


    Dim subname As String
   
    If Me.ComboBox6.BoundValue = vbNullString Then
        
         avviso = MsgBox("nessuna scelta inserita!", vbCritical + vbOKOnly + vbDefaultButton2, "AVVISO")
         
    Else
        
         avviso = MsgBox("hai scelto < " & Me.ComboBox6.BoundValue & " >", vbInformation + vbOKOnly + vbDefaultButton2, "AVVISO")
         
         subname = Me.ComboBox6.BoundValue
       Application.Run subname
       
    End If
    
    Unload Me
    
End Sub


Private Sub UserForm_Initialize()

 Label6.Caption = Label6.Caption & " < " & ActiveSheet.Name & " >"
 Label7.Caption = Label7.Caption & " < " & ActiveSheet.Name & " >"
 
    With Me.ComboBox6
        .AddItem ("archivia_1")
        .AddItem ("archivia_2")
        End With
End Sub




nella combobox della foto allegata si visualizzano le due macro
archivia 1
archivia 2
quello che chiedo è che sia inserito nel nome della macro il nome del foglio attivo quando si sceglie nella combobox.
Esempio:
nome del foglio attivo = input
achivia_input_1
achivia_input_2
naturalmente poi
achivia_input_1 deve aprire achivia_1
achivia_input_2 deve aprire achivia_2
---------------
excel 2007
Post: 6,911
Registered in: 11/14/2004
Master User
Office 2019
OFFLINE
8/4/2022 6:44 AM
 
Modify
 
Delete
 
Quote

Ciao john, ti ho creato il form, ed ho inserito il tuo codice, ho creato anche le 2 macro che lanciano un messaggio che ti indica quale macro hai lanciato.

il tuo codice funziona, non capisco quale sia il problema e cosa non funzioni.

ti allego il file

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 475
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/4/2022 8:21 AM
 
Modify
 
Delete
 
Quote

Grazie sal.
La mia form funziona bene.
Quello che chiedo, se è possibile, come la tua form è che nel combox si visualizzi non il nome della macro che si vuole attivare
ma il nome di questa macro con aggiunto il nome del foglio attivo.

esempio:

il nome del foglio attivo è input

clicco nel combox e ora si visualizza

archivia_1
archivia_1

deve visualizzarsi

archivia_input_1
archivia_input_1

sempre riferito

archivia_input_1 = archivia_1
archivia_input_2 = archivia_2

spero di essermi spiegato
---------------
excel 2007
Post: 6,912
Registered in: 11/14/2004
Master User
Office 2019
OFFLINE
8/4/2022 10:06 AM
 
Modify
 
Delete
 
Quote

Ciao non ho capito bene ma vedi questo esempio di codice

questo il codice per il form

Private Sub UserForm_Initialize()
Dim Foglio

Foglio = ActiveSheet.Name
 
 Label6.Caption = "Archivia_1 = Archivia riga selezionata in < " & Foglio & " >"
 Label7.Caption = "Archivia_2 = Archivia riga selezionata in < " & Foglio & " >"
  
    With Me.ComboBox6
        .AddItem ("archivia_1 in " & Foglio) '<<< richiama nome macro
        .AddItem ("archivia_2 in " & Foglio) '<<< richiama nome macro
        End With
End Sub


questo i 2 risultati ho aperto il form prina nel foglio1 e poi nel foglio2





Ciao By Sal (8-D


se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 476
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/4/2022 12:55 PM
 
Modify
 
Delete
 
Quote

Non si attiva la macro, dà errore qui

Application.Run subname '<<<<<<<<<<<<<



Private Sub cmdOkay6_Click()
Dim avviso As String

    Dim subname As String
   
    If Me.ComboBox6.BoundValue = vbNullString Then
        
         avviso = MsgBox("nessuna scelta inserita!", vbCritical + vbOKOnly + vbDefaultButton2, "AVVISO")
         
    Else
        
         avviso = MsgBox("hai scelto < " & Me.ComboBox6.BoundValue & " >", vbInformation + vbOKOnly + vbDefaultButton2, "AVVISO")
         
         subname = Me.ComboBox6.BoundValue
         
       Application.Run subname '<<<<<<<<<<<
       
    End If
    
    Unload Me
    
End Sub
[Edited by john_cash 8/4/2022 12:57 PM]
---------------
excel 2007
Post: 6,915
Registered in: 11/14/2004
Master User
Office 2019
OFFLINE
8/4/2022 3:56 PM
 
Modify
 
Delete
 
Quote

Ciao ti da errore perche la subname prende il nome dal testo della combobox e le macro che ho inserito io si chiamano "Archivio_1" e "Archivio_2" e non "Archivio_1" + nome del foglio, per fare come dici dovresti creare tante macro quanti sono i nomi dei fogli, oppure quanti sono gli Input1-2 che scrivi.

ma da quello che hai scritto, riesco a recepire che hai diversi fogli dai quali vuoi eliminare una riga che hai selezionato, a questo punto e se è cosi non serve una userform, tranne se non fa anche altri compiti,

inoltre vuoi eliminare la riga intera oppure un pezzo di riga dalla colonna "A" alla "H"

guarda questa macro da inserire nel Modulo "Questa cartella di lavoro" oppure "Thisworkbook" se hai la versione in Inglese

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim r

If Not Intersect(Target, [a6:a21]) Is Nothing Then
  r = Target.Row
  If Cells(1, 1) = 1 Then 'se in a1 è inserito 1
    Rows(r & ":" & r).Delete Shift:=xlUp 'cancella l'intera riga
  Else ' se in a1 è inserito 2
    Range("A" & r & ":H" & r).Delete Shift:=xlUp  'cancella fino alla colonna "H"
  End If
End If
End Sub


Basta fare DoppioClick sulla colonna "A" dalla riga 6 alla 21 di tutti i fogli

sfrutta l'evento "DoppioClick" su tutti i fogli io ho reso sensibile la colonna "A" da "A6:A21", ma puoi cambiare a piacere indicando quale range vuoi.
Visto che non conosco se vuoi eliminare l'intera riga o parte di essa ti ho inserito un flag nella cella "A1" di tutti i fogli, se in "A1" trova 1 allora cancella l'intera riga se trova 2 parte di essa se non trova niente non cancella niente

ti allego anche il file con la macro inserita

nel caso non fosse cosi, e vuoi per forza usare l'userform devi creare una variabile publica che chiamerai "Foglio" o quello che vuoi e nelle 2 macro "Archivia_1 e _2" devi selezionare il foglio indicato nella variabile pubblica, ed inoltre devi trovare la riga che hai selezionato per poi cancellarla, solo in questo modo potrai usare solo 2 macro altrimenti più macro per ogni foglio di lavoro.

Ciao By Sal (8-D


[Edited by by sal 8/4/2022 4:06 PM]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 477
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/4/2022 4:08 PM
 
Modify
 
Delete
 
Quote

Non posso cambiare la userform, il worbook non è mio.
Sto tentando di aggiungere il nome dei fogli nella combobox.
Prima avevo tante macro per ogni foglio con nome diverso.
Siccome sia come macro che come foglii erano uguali le userfom cambiavano per ogni foglio
Ho pensato di fare 2 uniche macro con una unica userform e qui funziona.
Solo che mi sarebbe piaciuto che nella combobox si visualizzare a quale foglio erano riferite le macro.
Per capire a quale foglio sono riferite ho messo nella label6/7 a quale foglio sono riferite.
Comunque grazie lo stesso.
john
[Edited by john_cash 8/4/2022 4:19 PM]
---------------
excel 2007
Post: 6,916
Registered in: 11/14/2004
Master User
Office 2019
OFFLINE
8/4/2022 5:51 PM
 
Modify
 
Delete
 
Quote

Ciao John, non è che non si possa fare, con excel si può, ma cercavo il modo più semplice per risolvere il problema, non sapevo che non era tuo ed era obbligatorio usare il form.

la prima cosa la tua macro dandogli il foglio riesce a capire quale sia la riga selezionata?, se si allora ti creo il codice che risolve, appena pronto lo allego.

nel caso non sia cosi devo creare anche il codice che riesca a capire quale sia la riga selezionata, e non mi hai detto se è la riga intera oppure una porzione di riga, nel caso fai sapere.

inoltre come apre il form con un pulsante sul foglio?

Ciao By Sal (8-D

[Edited by by sal 8/4/2022 5:52 PM]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 6,917
Registered in: 11/14/2004
Master User
Office 2019
OFFLINE
8/4/2022 6:13 PM
 
Modify
 
Delete
 
Quote

Ciao John, eccoti il file, che fa quello che vuoi, vedi se va bene,

ti ho messo un evento nel modulo "Questa cartella di lavoro" per riconoscere il foglio e l'ultima riga selezionata, con questi 2 parametri puoi utilizzare le 2 macro "Archivia_1 e _2"

ora spetta alle tue 2 macro cancellare la riga riportata nella variabile "RIG" ed il nome del foglio nella variabile "FGL" con questi 2 parametri puoi eseguire il lavoro con solamente 2 macro

Ciao By Sal (8-D

[Edited by by sal 8/4/2022 6:14 PM]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 478
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/4/2022 7:36 PM
 
Modify
 
Delete
 
Quote

Ciao allego la parte del workbook con il form
Nel file allegato ci sono 6 fogli
sicurezza/qualità/delivery_puntuale/input/produttività/archivio-_input/archivio_altri.

apri il foglio input
seleziona una riga
clicca pulsante archivia riga selezionata
ti chiede la pw = 123456
nel form hai 2 possibilità
archivia_input_1 = solo archiviare la riga selezionata
archivia_input_2 = solo archiviare la riga selezionata ed eliminarla da input

in questo form le macro sono già nominate con input
e si chiamano
archivia_input_1
archivia_input_2

negli altri 4 fogli sicurezza/qualità/delivery_puntuale/produttività
le 2 macro sono uguali per tutti
archivia_1
archivia_2

qui vorrei che nel combobox apparisse esempio se si apre sicurezza
archivia_sicurezza_1
archivia_sicurezza_2

Spero di essermi spiegato.
Grazie

[Edited by john_cash 8/4/2022 7:39 PM]
---------------
excel 2007
Post: 479
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/5/2022 10:48 PM
 
Modify
 
Delete
 
Quote

Ciao sal, grazie.
Non avevo visto il tuo post#11.
Ho corretto il mio form con le tue modifiche e funziona.
Grazie ancora.
john
---------------
excel 2007
Post: 6,918
Registered in: 11/14/2004
Master User
Office 2019
OFFLINE
8/6/2022 7:30 AM
 
Modify
 
Delete
 
Quote

Ciao Grazie del riscontro, alla prossima.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 480
Registered in: 5/28/2011
Location: MILANO
Age: 41
Senior User
excel 2000/2007
OFFLINE
8/6/2022 8:18 AM
 
Modify
 
Delete
 
Quote

[SM=g27811] [SM=g27811] [SM=g27811]
---------------
excel 2007
Admin Thread: | Close | Move | Delete | Modify | Email Notification Previous page | 1 | Next page
New Thread
 | 
Reply
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Users | Search | Log In | Register | Admin
Tutti gli orari sono GMT+01:00. Adesso sono le 7:54 PM. : Printable | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2022 FFZ srl - www.freeforumzone.com