Ciao Nick, ho una questione riguardante le userform. Ho creato una userform che apre alcuni file excel ed un powerpoint. In questa condizione, se provo a chiudere il ppt non ho problemi, invece se provo a chiudere i file excel che ho aperto mediante la userform, ad es mediante la x in alto a dx, non me lo fa fare. Per poterlo fare, devo tornare nell'excel che contiene la userform e devo chiudere la userform che risulta ancora in modalità "run". La domanda è questa: lanciata la userform, come posso fare per chiuderla automaticamente, in modo che posso fare le operazioni con i file aperti e chiuderli senza problemi?
Ciao Nick, se nella textbox ho un valore che sia numerico o di valuta o altro..all'interno del foglio excel lo riporta sempre come testo (anche se sul foglio inizialmente tutte le celle sono impostate con il formato desiderato). Come posso assegnare il formato alla cella senza ritornare all'interno del foglio excel ogni volta che ho lanciato la userform e modificare? Grazie.
Ciao Michele, anziché scrivere (ad esempio): Cells(1, 1) = Textbox1.Value prova con Cells(1, 1) = Format(Textbox1.Value, "#,##0.00 €") Questo esempio vale per il formato contabilità con due cifre decimali e il simbolo dell'Euro. In pratica devi usare la funzione Format, mettendo come secondo argomento il formato che ti interessa, che ricalca quelli personalizzati che trovi nel "Formato Celle" di Excel. Fammi sapere se funziona.
@@NickTheGeek funziona! Utilizzo la stessa struttura per tutti gli altri formati. Per il secondo argomento mi sto aiutando con delle registrazioni di macro in cui cambio i formati nel foglio. Grazie mille!
@@NickTheGeek scusami se ti disturbo ancora, ho ancora un problema che non riesco a risolvere. Quando il valore della textbox è '0' e ho impostato il formato in valuta sul foglio excel riporta precisamente ,00€ e io vorrei 0,00€.
Nessun disturbo, prova a vedere se nel formato hai scritto "#,###.00 €" anziché "#,##0.00 €" In pratica prima del punto dei decimali ci deve essere uno zero, non un cancelletto.
Ciao Nick, innanzitutto complimenti!! Poi ti vorrei domandare.... premesso che la variabile impostata all'interno della label è double è possibile impostare il formato valuta all'etichetta?
Grazie per i complimenti Mirko. Puoi formattare il contenuto della label utilizzando i formati personalizzati che ci sono in Excel, ad esempio se la label si chiama Label1 e vuoi impostare la valuta in Euro con la separazione di migliaia e decimali, puoi usare: Label1.Caption = Format(Label1.Caption, "€ #,###.00") Se non funziona, prova a invertire il punto e la virgola. Fammi sapere.
Ciao Nick, innanzitutto complimenti e grazie per le spiegazioni!! Ti vorrei anche domandare.... è possibile associare ad una casella di testo, che vorrei usare per ricerca "codice fiscale" con PISTOLA LETTORE BARCODE inserita direttamente sul foglio, una macro che già ho, ma funziona con inputbox che richiamo con bottone sul foglio
Ciao, grazie a te per il commento. Riguardo la tua domanda, non so se ho capito bene: sul foglio hai un bottone che fa partire una inputbox fatta con vba, all'interno della quale metti un codice fiscale letto con la pistola? E vorresti sapere se puoi fare la stessa cosa con una casella di testo inserita nel foglio, quindi associando la macro a questa casella anziché alla inputbox?
ciao, bel video, molto utile. Avrei una domanda da farti, se volessi aggiungere diversi valori da varie textbox in una tabella di celle come potrei fare?
Ciao, grazie. Non so se ho ben capito la domanda, ma se vuoi aggiungere valori di più textbox in celle diverse, dovresti indicare ogni cella in cui vuoi aggiungere i valori di ogni singola textbox, ad esempio: Range("a1") = TextBox1.Value Range("a2") = TextBox2.Value Range("a3") = TextBox3.Value
supponendo di avere 3 caselle di testo in cui inserire, per esempio, nome (textbox1), cognome (textbox2) e numero di telefono (textbox3), e supponendo di voler inserire questi dati rispettivamente nelle colonne A, B e C, dovresti intanto capire qual è la prima riga vuota nel foglio; immaginando che la riga 1 sia sempre occupata dalle intestazioni di colonna (anche all'inizio con il foglio vuoto), il codice per calcolare l'ultima riga scritta è: ultima_riga = Cells(Rows.Count, "A").End(xlUp).Row quindi: prima_riga_vuota = ultima_riga + 1 a questo punto, quando premi il command button nella userform, il codice da eseguire è: Cells(prima_riga_vuota, 1) = TextBox1.Value Cells(prima_riga_vuota, 2) = TextBox2.Value Cells(prima_riga_vuota, 3) = TextBox3.Value In questo modo i tre valori ti vengono sempre scritti nelle colonne A, B e C, sempre nella prima riga disponibile
Nick ho un'altra questione riguardante le userform (caselle di testo e pulsanti di comando). Il mio obiettivo è fare in modo che quando il cursore del mouse va sul pulsante di comando (pulsante che è disabilitato con l'initialize), mi appaia un tip che suggerisce all'utente di compilare i campi richiesti per poter abilitare il pulsante. Spulciando sul web ho trovato la soluzione che riporto sotto. Il problema è che non ho la minima idea in merito al punto n.8, "Run the "ConnectObject" procedure". Peccato perché è l'ultimo passaggio che mi separa dall'obiettivo XD Ti sarei grato se mi aiutassi a capire cosa devo fare..grazie come sempre per il supporto che potrai darmi. Follow these steps: 1 Insert an ActiveX command button on Sheet1. Name it CommandButton1. 2 Insert a text box shape on Sheet1. Name it TextBox1. 3 In TextBox1, type some text (e.g. "Click me"). 4 In the VB Editor, insert a class module. Name it clsButton. 5 Type the following code into the clsButton module: Code: Public WithEvents Btn As MSForms.CommandButton Private Sub Btn_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single) With ThisWorkbook.Worksheets("Sheet1").Shapes("Textbox1") .Visible = msoTrue .Top = Y + Me.Btn.Top .Left = X + Me.Btn.Left End With Application.OnTime Now + TimeValue("00:00:01"), "HideIt" End Sub 6 Insert an ordinary code module. Name it Module1. 7 Type the following code into Module1: Code: Dim Cmd As New clsButton Private Sub ConnectObject() Set Cmd.Btn = ThisWorkbook.Worksheets("Sheet1").OLEObjects("CommandButton1").Object End Sub Private Sub HideIt() ThisWorkbook.Worksheets("Sheet1").Shapes("Textbox1").Visible = msoFalse End Sub 8 Run the "ConnectObject" procedure. 9 In Excel, move the mouse cursor over the command button and watch what happens...
Ciao Giovanni, immagino che si intenda che devi lanciare questa subroutine: Private Sub ConnectObject() Set Cmd.Btn = ThisWorkbook.Worksheets("Sheet1").OLEObjects("CommandButton1").Object End Sub
Ciao Nick come posso fare per limitare la lunghezza dei caratteru inseriti in una textbox in base alla lunghezza della stessa textbox non usando quindi la multiline con la quale oltretutto si andrebbe a capo. Grazie come sempre per i video che fai.
Ciao, se intendi limitare il numero di caratteri in base alla lunghezza della textbox la vedo un po' difficile, perché nei font più comuni i caratteri hanno larghezza diversa, ad esempio una "o" può essere larga 3 volte una "i", quindi fare un calcolo a priori diventa impossibile. Se usassi un font "monospace", cioè un font i cui caratteri occupano sempre lo stesso spazio orizzontale, potresti verificare quant'è la larghezza del carattere (in pixel) e poi fare un calcolo tipo: TextBox1.MaxLength = Textbox1.Width / larghezza_carattere ma anche in questo caso il risultato non credo che sarebbe granché preciso.
Ciao, non credo esista una funzione specifica per farlo lampeggiare, bisognerebbe creare un accrocchio con del codice per far sparire e comparire il testo a intervalli regolari. Dove pensavi di farlo lampeggiare? Una cella, una label, una textbox ...?
@@NickTheGeek in una cella. Mi stavo informando ed ho scoperto che bisogna usare VBA ( Microsoft visual basic application ) codici qua e là . Grazie per la prontezza di risposta Nick
Allora devi inserire due macro: da qualche parte devi mettere la prima, che ti fa partire la macro la prima volta, cioè questa: Sheets("Foglio1").activate intervallo = Now + TimeValue("00:00:01") Application.OnTime intervallo, "lampeggia" Con "da qualche parte" intendo che dipende da qual è la situazione che dovrebbe far partire il lampeggiamento. Ad esempio, se lo vuoi fin da quando apri il file, allora devi metterle la macro nel modulo che si chiama "Questa_cartella_di_lavoro", e inserire quelle tre righe nell'evento Workbook_open, quindi il tutto diventerebbe: Private Sub Workbook_open() Sheets("Foglio1").activate intervallo = Now + TimeValue("00:00:01") Application.OnTime intervallo, "lampeggia" End Sub Ho supposto che il foglio in cui si trova la cella si chiami "Foglio1" e che tu voglia un intervallo di 1 secondo. Poi in un modulo normale (quelli che si chiamano Modulo1, Modulo2, etc.) inserisci la macro vera e propria cioè questa: Sub lampeggia() If Range("A1").Font.Color = vbWhite Then Range("A1").Font.Color = vbBlack ElseIf Range("A1").Font.Color = vbBlack Then Range("A1").Font.Color = vbWhite End If intervallo = Now + TimeValue("00:00:01") Application.OnTime intervallo, "lampeggia" End Sub Qui ho supposto che il font sia nero e lo sfondo della cella bianco; in pratica, ogni secondo la macro verifica di che colore è il font e quindi lo cambia di conseguenza, alternando il bianco e il nero. L'argomento di TimeValue è 1 secondo (non puoi scendere al di sotto) ma puoi modificarlo come vuoi (il formato è "hh:mm:ss"). Stessa cosa per il nome della seconda macro ("lampeggia"), che puoi cambiare ma devi ricordarti di modificarlo in entrambe le macro. Fammi sapere. Ciao
Se posso permettermi, questi primi video dedicati alle UserForm, mi sembrano molto dispersivi. Forse sarebbe stato meglio adottare un approccio più diretto alle funzioni di elaborazione tramite il codice. In ogni caso ho lasciato il like+1