Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

richiamare una macro da una label

Ultimo Aggiornamento: 06/08/2022 08:18
Post: 474
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
02/08/2022 22:58

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
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
03/08/2022 08:17

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
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
03/08/2022 21:25

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
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/08/2022 06:44

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
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
04/08/2022 08:21

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
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/08/2022 10:06

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
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
04/08/2022 12:55

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
[Modificato da john_cash 04/08/2022 12:57]
---------------
excel 2007
Post: 6.915
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/08/2022 15:56

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


[Modificato da by sal 04/08/2022 16:06]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 477
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
04/08/2022 16:08

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
[Modificato da john_cash 04/08/2022 16:19]
---------------
excel 2007
Post: 6.916
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/08/2022 17:51

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

[Modificato da by sal 04/08/2022 17:52]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 6.917
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
04/08/2022 18:13

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

[Modificato da by sal 04/08/2022 18:14]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 478
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
04/08/2022 19:36

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

[Modificato da john_cash 04/08/2022 19:39]
---------------
excel 2007
Post: 479
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
05/08/2022 22:48

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
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
06/08/2022 07:30

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
Registrato il: 28/05/2011
Città: MILANO
Età: 43
Utente Senior
excel 2000/2007
OFFLINE
06/08/2022 08:18

[SM=g27811] [SM=g27811] [SM=g27811]
---------------
excel 2007
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:35. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com