› Sviluppare funzionalita su Microsoft Office con VBA › Riportare la caption di un button in cella attiva
-
AutoreArticoli
-
Buon giorno, è da tempo che non sono più attivo e dato che sono molto arrugginito chiedo una mano a voi esperti.
In un foglio ho circa 10 button (che al bisogno posso modificare la caption), ognuno di essi ha una caption diversa. Al click su uno di essi vorrei poter scrivere la caption sulla cella attiva.
Purtroppo sto scrivendo tramite cellulare e non ho possibilità di inserire file di esempio.
Grazie a chi mi aiuta.
Buona giornata @alexps81;
per CommandButton1 potresti provare con:Option Explicit Private Sub CommandButton1_Click() ActiveCell.Value = CommandButton1.Caption End Sub
Analogamente per gli altri CommandButton.
Giuseppe
ciao,
se sono CommandButton,
cellaattiva.text = CommandButton.Caption
all"ultima riga di codice dell"evento click del button
ciao
Frank
Giuseppe (ciao ) mi ha anticipato di 1 minuto ahahah
Ok grazie. Proverò i vostri suggerimenti. Anche se in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare. Tipo un ciclo For Each. Cmq grazie per il momento.
ciao Alex ed un saluto a Giuseppe ,
con due CommandButton sul foglio1, prova od adatta secondo le tue necessità.
A me funzionano.
Ciao
Frank
Public prova As String Sub a() Dim sh As Worksheet Set sh = Sheets("Foglio1") sh.Activate ActiveCell.Value = prova End Sub Private Sub CommandButton1_Click() Dim spazio As String spazio = Right(CommandButton1.Name, 2) If Not IsNumeric(spazio) Then prova = CommandButton1.Caption Call a End Sub Private Sub CommandButton2_Click() Dim spazio As String spazio = Right(CommandButton2.Name, 2) If Not IsNumeric(spazio) Then prova = CommandButton2.Caption Call a End Sub
Buona sera a Tutti.
@alexps81, in #27683 scrive:
... in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare. Tipo un ciclo For Each. ...
Considerando che nella vita non si finisce mai di imparare sarei veramente interessato a caire come "in un Modulo" si possano gestire più CommandButton.
Grazie a chi potrà aiutarmi a chiarire questo arcano.
Giuseppe
P.s Leggo solo ora la proposta di Ftank, che saluto, ma in un Modulo non riesco a capire come fare per attivarla.
ciao a tutti,
ciao Alex e Giuseppe,
solo una precisazione:
per la mia conoscenza, concordo con quanto asserito da Giuseppe, in un Modulo non è possibile gestire CommandButtons. Quindi l'istruzione più idonea è quella proposta ai post #27681 e #27682
Poi, secondo le indicazioni di Alex,
alexps81 ha scritto:
Al click su uno di essi vorrei poter scrivere la caption sulla cella attiva.
alexps81 ha scritto:
Anche se in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare.
ho creato una variabile pubblica nel modulo che deve essere richiamato dal click del Button.
Public prova As String
Sub a()
Dim sh As Worksheet
Set sh = Sheets("Foglio1")sh.Activate
ActiveCell.Value = provaEnd Sub
poi nel modulo del Foglio1 dove ho inserito 2 Buttons e per ogni button
Private Sub CommandButton1_Click()
Dim spazio As String
spazio = Right(CommandButton1.Name, 2)If Not IsNumeric(spazio) Then prova = CommandButton1.Caption
Call a
End SubPrivate Sub CommandButton2_Click()
Dim spazio As String
spazio = Right(CommandButton2.Name, 2)If Not IsNumeric(spazio) Then prova = CommandButton2.Caption
Call a
End SubRibadisco, la soluzione più adatta è quella proposta in precedenza, ma la richiesta è chiara:
Alex vuole una Sub richiamata dal click del Button ed ovviamente ogni Button presente sul Foglio1,
deve avere il proprio codice che valorizza la variabile e richiama la Sub che valorizza la cella attiva.
Non mi piace, ma questo è come ho letto la richiesta e come sempre ho cercato di "soddisfare il cliente"
anche se la sua richiesta non è tanto "logica".
Ciao.
Frank
Buona giornata, @tanimon;
perdonami Frank ma la richiesta di @alexps81 credo fosse iversa;@alexps81, in #27683, scrve:
... Anche se in realtà pensavo a una singola Sub in un modulo e ogni CommandButton la va a richiamare. Tipo un ciclo For Each ...
Quindi da quello che posso capire la richiesta è:
- Un Codice VBA inserito in Modulo nel quale tramite un ciclo For Each possa individuare il CommandButton selezionato e quindi inserire la relativa Caption nella Cella attiva.In Forum sono propenso a fornire non al singolo Utente ma a tutti coloro interessati alla discussione le informazioni corrette; a Tutti gli Utenti credo di poter affermare, per quanto in mia conoscenza, che la richiesta non può essere risolta in un Modulo ne tantomeno con un Ciclo For Each o For Next.
Per qunto concerne "soddisfare il Cliente" direi che se mi trovo sull'orlo di un precipizio e "il Cliente" mi dice:
prendi la rincorsa e salta ... gli dico no grazie, provaci tu.Ma l'età è quella che è e di certo non aiuta, forse hai ragione Tu e la richiesta era proprio quella che hai risolto con i tuoi Codici VBA.
Giuseppe
ciao a tutti,
ciao Alex,
ed un doveroso saluto a Giuseppe
come già detto ogni CommandButton, deve avere il proprio codice, ma questa versione mi piace di più.
Allego file e codice e,
vista la latitanza di Alex abbandono la discussione.
Ciao
Frank
Option Explicit Private Sub CommandButton1_Click() cliccato = True num = Right(CommandButton1.Caption, 1) Call controllo End Sub Private Sub CommandButton2_Click() cliccato = True num = Right(CommandButton2.Caption, 1) Call controllo End Sub
Public cliccato As Boolean, num As Integer Sub controllo() If cliccato = True Then ActiveCell.Value = ActiveSheet.OLEObjects("CommandButton" & num).Object.Caption cliccato = False End If End Sub
Allegati:
You must be logged in to view attached files.ciao a tutti,
ciao Giuseppe
credo che quanto in allegato sia ancora più "lineare" del precedente
ciao
Frank
Private Sub CommandButton1_Click() cliccato = True Me.CommandButton1.Enabled = False Call controllo End Sub Private Sub CommandButton2_Click() cliccato = True Me.CommandButton2.Enabled = False Call controllo End Sub Private Sub CommandButton3_Click() cliccato = True Me.CommandButton3.Enabled = False Call controllo End Sub
Public cliccato As Boolean Sub controllo() Dim n As Integer, x As Integer x = ActiveSheet.OLEObjects.Count For n = 1 To x If cliccato = True And ActiveSheet.OLEObjects(n).Enabled = False Then ActiveCell.Value = ActiveSheet.OLEObjects("CommandButton" & n).Object.Caption cliccato = False ActiveSheet.OLEObjects(n).Enabled = True Exit For End If Next n End Sub
Allegati:
You must be logged in to view attached files. -
AutoreArticoli