|
27/02/2024 21:41 | |
Questa non è una comunicazione personale.
CHIARO? |
|
|
27/02/2024 21:54 | |
Ciao Marius44,
in un post precedente ti avevo ringraziato per il tuo prezioso contributo a risolvere il mio problema.
Ho scoperto che i ringraziamenti non sono stati graditi al Moderatore visto che ha cancellato il mio post.
Te li rinnovo.
GRAZIE.
rex88 |
|
27/02/2024 22:38 | |
Ciao Alfredo,
questo è il foglio completo.
Adesso faccio il codice per trasferire i dati dalla userform al foglio.
rex88 |
|
28/02/2024 09:06 | |
Ciao Alfredo,
fatto il foglio adesso sto inserendo i dati dalla Userform.
Problemi non ne ho nell'inserimento dei dati nelle celle, ad esempio:
ws1.Range("E20").Value = Me.TB_Progressivo.Value 'progressivo
Invece ho trovato difficoltà ad inserire il segno "X" (segno di spunta che si trova sulla Userform) nella "Label1" che si trova all'inizio della riga 57 del foglio.
Capito come fare proseguirò.
Grazie
rex88
EDIT
in rete ho grovato questo:
https://www.forumexcel.it/forum/threads/attribuire-un-valore-ad-un-label-con-comparazione-variabile.26761/
con una tua sub. [Modificato da rex88 28/02/2024 09:48] |
| | Post: 3.755 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
28/02/2024 09:50 | |
Per le label
esempio:
Private Sub Label1_Click()
If Label1.Caption = "X" Then
Label1.Caption = ""
Exit Sub
End If
With Label1
.Font.Name = "Arial"
.Font.Size = 10
.Caption = "X"
End With
End Sub
Al click viene immessa o cancellata la "X"
QUALORA dovessi controllare da UserForm, il codice è un po' diverso, in quanto ci si deve riferire all'oggetto.
Per esempio, legare ad un pulsante su UserForm la valorizzazione della Label1 sul foglio attivo:
Private Sub CommandButton1_Click()
Set MyLbl = ActiveSheet.OLEObjects("Label1")
If MyLbl.Object.Caption = "X" Then
MyLbl.Object.Caption = ""
Exit Sub
End If
With MyLbl.Object
.Font.Name = "Arial"
.Font.Size = 10
.Caption = "X"
End With
End Sub
saluti
[Modificato da dodo47 28/02/2024 10:07] Domenico
Win 10 - Excel 2016 |
|
28/02/2024 10:24 | |
Ciao Domenico,
intanto grazie per il consiglio.
La "X" la inserisco nella "TB_Utente10" che si trova sulla "FrmDiCo".
Una volta inserita la devo inviare nella "Label1" che si trova sul Foglio.
Questa è la sub sulla quale sto lavorando per trasfgerire i dati dalla "FrmDiCo" al foglio:
ws1.Range("E20").Value = Me.TB_Progressivo.Value 'progressivo
ws1.Range("P20").Value = Me.TB_Data 'data
ws1.Range("F25").Value = Me.TB_Committente1.Value 'committente
ws1.Range("E26").Value = Me.TB_Ubicazione_Impianto2.Value
ws1.Range("D27").Value = Me.TB_Ubicazione_Impianto1.Value
ws1.Range("M27").Value = Me.TB_Ubicazione_Impianto4.Value
ws1.Range("027").Value = Me.TB_Ubicazione_Impianto5.Value
ws1.Range("Q27").Value = Me.TB_Ubicazione_Impianto6.Value
ws1.Range("S27").Value = Me.TB_Ubicazione_Impianto7.Value
ws1.Range("E28").Value = Me.TB_Proprietario6.Value
ws1.Range("E29").Value = Me.TB_Proprietario6.Value
ws1.Range("E30").Value = Me.TB_Proprietario6.Value
A questo punto devo inserire l'istruzione che mi trasferisca la "X" nella "Label1".
Saluti.
rex88
|
| | Post: 3.756 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
28/02/2024 10:46 | |
ciao
supponiamo che la tua "TB_Utente10" si riferisca alla Labe1 che sta sul foglio:
.....
Set MyLbl = ws1.OLEObjects("Label1")
If me.TB_Utente10 = "X" then
With MyLbl.Object
.Font.Name = "Arial"
.Font.Size = 10
.Caption = "X"
End With
Else
MyLbl.Object.Caption = ""
End If
.....
Lo stesso per le altre TB_Utente.....
Però dovresti provarci in autonomia.....la prossima volta farò come ha fatto Mario...🤣
saluti
Domenico
Win 10 - Excel 2016 |
|
28/02/2024 10:59 | |
Ci provo.
Grazie |
|
02/03/2024 09:21 | |
Ciao,
prova e riprova, ma non ricavo il ragno dal buco.
Questa è la sub:
Private Sub COMPILA_MODELLO_Click()
Dim sDir1 As String, sDir2 As String, snomefile As String
Dim Objs As OLEObjects
Dim Obj As OLEObject
Dim MyLbl As Object
Dim sh5 As Worksheet
Dim rng As Range
Set sh5 = Worksheets("Conformità")
Dopo
sh5.Range("R56").Value = Me.TB_Utente9.Value
ho inserito questo ma non fa niente
Set MyLbl = sh5.OLEObjects("Label1")
sh5.OLEObjects("Label1").Object.Value = Me.TB_Utente10.Value |
| | Post: 3.757 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
02/03/2024 10:47 | |
non è quello che ti ho scritto....
saluti
[Modificato da dodo47 02/03/2024 11:21] Domenico
Win 10 - Excel 2016 |
|
02/03/2024 11:09 | |
Ciao Domenico,
OK il codice sul pulsante.
La tua istruzione la dovrei inserire nella sub come ho scritto nel precedente post perchè Il problema è che la “X” nella “TB_Utente10” e nelle altre TB viene inserita in automatico all’apertura della “FrmDiCo” una volta inseriti i dati del Cliente sulla “FrmClienti” cliccando sul pulsante “Inserisci”.
|
| | Post: 3.758 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
02/03/2024 11:23 | |
Quelle istruzioni vanno inserite nella tua sub che alimenta il foglio....
se non ci riesci, manda il file....però......
saluti
[Modificato da dodo47 02/03/2024 11:24] Domenico
Win 10 - Excel 2016 |
|
02/03/2024 13:45 | |
Io te lo mando, mi preoccupa quel però........ |
|
02/03/2024 15:23 | |
Questo è il file.
EDIT
Sul foglio Utente c'è il pulsante "APRI CLIENTE": inserire i dati di un Cliente (anche in minuscolo) e cliccare su "Inserisci".
Si aprirà la "FrmDiCo", con i dati dell'Azienda e del Committente inseriti in automatico.
Nelle "TB_Utente10" e "TB_Utente11" ci sono in automatico la "X" che devo riportare sul foglio.
Capito come funziona il codice poi provvedo io a inserile le istruzione nella sub anche per le altre TB che si trovano sulla "FrmDiCo"
Private Sub COMPILA_MODELLO_Click()[Modificato da rex88 02/03/2024 15:34] |
| | Post: 3.759 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
02/03/2024 16:31 | |
è esattamente come ti ho detto di fare....chissà cosa combini!!
comunque, nella Private Sub COMPILA_MODELLO_Click(), DOPO:
Set sh5 = Worksheets("Conformità")
inserisci:
Set MyLbl = sh5.OLEObjects("Label1")
If Me.TB_Utente10 = "X" Then
With MyLbl.Object
.Font.Name = "Arial"
.Font.Size = 10
.Caption = "X"
End With
Else
MyLbl.Object.Caption = ""
End If
e cancella il tuo:
sh5.OLEObjects("Label1").Object.Value = Me.TB_Utente10.Value
saluti
Domenico
Win 10 - Excel 2016 |
|
02/03/2024 16:45 | |
Su queste TB
TB_Impianto2 , TB_Impianto3 , TB_Impianto4 ,TB_Impianto5, TB_Impianto6,
TB_Edificio1, TB_Edificio2, TB_Edificio3, TB_Edificio4
TB_Dichiarazione_impianto1, TB_Dichiarazione_impianto3, TB_Dichiarazione_impianto5, TB_Dichiarazione_impianto6
TB_Allegati_obbligatori1, TB_Allegati_obbligatori2, TB_Allegati_obbligatori3, TB_Allegati_obbligatori4, TB_Allegati_obbligatori5, TB_Allegati_obbligatori6
la "X" la inserisco manualmente quando inserisco i dati sulla "FrmDico" quindi la tua istruzione la devo ripetere per ciasuna TB?
EDIT
Un chiarimento: non in tutte le TB che ho segnalato inserisco la "X".
Esempio "Dati impianto".
Ci sono queste TB:
TB_Impianto2 = Nuovo impianto
TB_Impianto3 = Trasforrmazione
TB_Impianto4 = Ampliamento
TB_Impianto5 = Muntenzione
TB_Impianto6 = Altro
Metto la "X" a seconda della tipologia dell'impianto.
Se l'impianto è Nuovo, metto la "X" nella TB_Impianto2 e salto le altre 4.
[Modificato da rex88 02/03/2024 17:08] |
| | Post: 3.760 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
02/03/2024 17:08 | |
Ciao
fai in questo modo:
1) vai nelle proprietà di tutte le Label del foglio Conformità e nel parametro "Font" scegli Arial (ora hai tutte Webdings) e riduci il carattere.
2) poi gestisci la cosa in questo modo per ciascuna TextBox::
if Me.TB_Utente???.Value= "X" then
sh5.OLEObjects("Label???").Object = "X"
else
sh5.OLEObjects("Label???").Object = ""
end if
e lo devi fare per tutte le textBox
saluti
Domenico
Win 10 - Excel 2016 |
|
02/03/2024 17:31 | |
Ciao Domenico,
Funziona perfettamente.
Se in una delle TB non inserico la "X" perchè non ci vuole l'istruzione è sempre la stessa?
EDIT
Ho inserito l'istruzione per un'altra TB dove non ho inseri la "X" e il codice non mi dà errore e ciò significa che funziona per questa parte del tuo codice:
sh5.OLEObjects("Label???").Object = ""
E' corretta la mia deduzione? [Modificato da rex88 02/03/2024 17:51] |
| | Post: 3.761 | Registrato il: 06/04/2013
| Utente Master | 2010 | | OFFLINE |
|
02/03/2024 18:19 | |
si, certo
saluti
Domenico
Win 10 - Excel 2016 |
|
02/03/2024 19:32 | |
Posso dire che la discussione è risolta.
Ringrazio Alfredo per avermi dato l'imput e fornito il foglio di base e Domenico per il suo tutoraggio.
rex88
|
|
03/03/2024 10:42 | |
Chiedo scusa se continuo.
Ho completato la sub
Private Sub COMPILA_MODELLO_Click
Inserisco il Cliente e clicco su "Inserisci" e si apre la "FrmDiCo".
Compilo tutte TB della "FrmDico" e clicco sul pulsante "Registra".
Il foglio "Conformità" viene popolato per intero.
Ho due problemi:
1) tutte le celle non sono unite comprese la M56 e la R56, ma in queste due i numeri non si vedono per intero e nelle celle c'è ####;
2) tutte le label vengono popolate con la "X" meno la Label19.
Allego il file.
rex88
EDIT
3) quando clicco sul pulsante "Pulisci" che sta sulla "FrmDiCo" mi dice "Impossibile modificare una parte di una cella unita".
Questa è la sub:
Private Sub CmdPulisci_Click()
Dim Objs As OLEObjects
Dim Obj As OLEObject
Dim MyLbl As Object
Dim sh5 As Worksheet
Dim rng As Range
Dim n As Integer
Set sh5 = Worksheets("Conformità")
'pulizia celle
sh5.Range("E20,P20,E25,E26,S26,D27,M27,O27,Q27,S27,E28,E29,D30," & _
"D53,K54,D55,L55,T55,C56,K56,M56,R56,O57,T57,O58,T58,I59,A60,D62,D65," & _
"A66,F66,H66,N66,P66,R66,T66,K67,K73,K74,A75,A87,B98").ClearContents
'pulizia label
For n = 1 To 21
sh5.OLEObjects("Label" & n).Object = vbNullString
Next n
MsgBox "TuttoPulito!!"
Set rng = Nothing
End Sub
Quando clicco sul pulsante esce il messaggio "Impossibile modificare una parte di una cella unita".
Saranno mica le celle M56 e R56? [Modificato da rex88 03/03/2024 11:41] |
| | Post: 7.555 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | ONLINE |
|
03/03/2024 11:41 | |
Ciao Devi usare un altro tipo di formato senza usare Unisci celle, guarda l'immagine selezioni prima le celle e poi metti il formato.
questo lo fa perche la cella è troppo piccola per contenere tutti i numeri, questo passaggio lo devi fare 1 sola volta, non ogni volta.
Ciao By Sal (8-D [Modificato da by sal 03/03/2024 11:46] se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
|
03/03/2024 13:30 | |
Ciao by-sal,
grazie provvedo con calma.
Non sono riuscito a capire come fare per la "Label19" che si trova sul foglio.
Io sulla "TB_Allegati_obbligatori4" ho insewritoi la "X", ma sulla "Label19" c'è non so cosa.
Ti mando l'immagine |
|
03/03/2024 14:08 | |
La Label19 non funzionava perchè non avevo rettificato la Font.
Quindi il punto "2) tutte le label vengono popolate con la "X" meno la Label19" è stato risolto.
[Modificato da rex88 03/03/2024 14:12] |
|
03/03/2024 15:45 | |
Questo è l'ultimo file con le correzioni.
Sul Foglio "Conformità" ho rettificato il Formato celle come mi ha detto by-sal.
Permane l'errore su questa parte della sub:
Private Sub CmdPulisci_Click()
'pulizia celle
sh5.Range("E20,Q20,E25,E26,T26,E27,N27,P27,R27,T27,E28,E29,E30," & _
"D53,K54,D55,L55,U55,C56,K56,M56,S56,P57,U57,P58,U58,I59,A60,D62," & _
" D65,A66,F66,H66,N66,P66,S66,V66,K67,K73,K74,A75,A87,B98").ClearContents |
| | Post: 7.556 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | ONLINE |
|
03/03/2024 17:48 | |
Ciao Rex, le celle "U57" - "U58" sono celle unite non vanno bene per cancellare i dati, oppure scrivi l'unione celle del tipo "U57:V57" e "U58:V58"
però se le dividi e fai "allinea al centro" elimini il problema, senza modificare il codice, ecco pure perche diciamo sempre che le celle unite sono un problema per Excel.
Ciao By Sal (8-D se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
|
03/03/2024 18:32 | |
Se io unisco le celle posso allineare a sinistra, oppure devo sempre allineare al centro? |
| | Post: 7.557 | Registrato il: 14/11/2004
| Utente Master | Office 2019 | | ONLINE |
|
03/03/2024 18:37 | |
Ciao Rex, fai una cosa senza perdere tempo dove trovi ",U57," sostituisci con ",U57:V57," e fai lo stesso dove trovi ",U58," con ",U58:V58,"
mi raccomando i 2 punti
Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui |
|
03/03/2024 18:51 | |
OK.
Prima di chiuderlo come risolto.
Faccio le prove e poi comunico.
|
|
03/03/2024 19:31 | |
1) La compilazione del foglio "Conformità" mediante inserimento di dati sulla "FrmDiCo": funziona.
2) La pulizia delle celle e delle label sul foglio "Conformità": funziona.
3) Il salvataggio della dichiarazione in formato pdf funziona, solo che il file pdf viene salvato nella cartella "Documents" mentre dovrebbe essere salvata nella sottocartella "Dico" che si trova nella sottocartella "Anno" (nel nostro caso "2024") che si trova in C:\.
Il salvataggio dovrebbe essere fatto cliccando "Registra" nella sub
Private Sub COMPILA_MODELLO_Click()
Il file è stato costruito evitando la compilazione di un file pdf editabile soluzione che richiede Adobe Acrobat Pro.
Allego il file.
EDIT
nella stessa sub, prima di pulire il foglio "Conformità" si potrebbe salvarlo in una sottocartella "Excel" da creare nella sottocartella "Anno" (nel nostro caso "2024") che si trova in C:\. [Modificato da rex88 03/03/2024 20:24] |
|
|