Domanda textbox non visualizza

MarcoDN

Utente junior
Original poster
15 Giugno 2022
21
0
1
365
Ciao a tutti!

ho fatto un userform con una serie di textbox

la textbox è collegata ad una cella

ora quando lancio la textbox, il valore della cella non si vede, ma se "scrivo" un numero, allora compare

io ho scritto
Private sub textbox_DI_Change ()
datawork.textbox_di.value = sheet2.range("A4").value
end sub
Qualche idea su come posso sistemare l'errore?
 

triskell

Utente abituale
21 Febbraio 2021
245
28
30
office 365
ciao M @MarcoDN .
Se metti quel codice dentro l'evento "Change" della textbox allora certamente non potrà succedere nulla.
Prova ad inserire il codice nella Userform_Initialize, così all'avvio il form legge il comando, va a roccogliere il dato dalla cella A4 e lo riporta nella textbox.
 

Sgrubak

Excel/VBA Expert
Expert
10 Marzo 2022
596
106
45
Excel 365
Qualche idea su come posso sistemare l'errore ??
La logica è sbagliata.
Nell'Activate della Form, inserisci la riga che hai riportato tu, la quale ha il compito di valorizzare la TextBox con quanto presente in A4.
Poi nel TetBox_Change, fai il contrario, ossia
Codice:
Private sub textbox_DI_Change ()
sheet2.range("A4").Value = datawork.textbox_di.Value
End Sub
così ogni volta che cambia il valore nella TextBox, la cella viene aggiornata.

Però, personalmente, non mi sembra una buona idea: io farei in modo che le modifiche si propaghino alle celle nel momento in cui chiudo la Form (sfruttando l'evento Deactivate). Così se non è modale, le modifiche si propagano anche se passi al foglio. E se le celle che modifichi sono usate nelle formule, i dati sulla Form son sincronizzati con quelli del foglio e viceversa.
 
  • Like
Reactions: triskell

MarcoDN

Utente junior
Original poster
15 Giugno 2022
21
0
1
365
...


ho messo Textbox_DI_initialize, ma nulla
in compenso ho messo _enter e mi compare il valore di cella,

tuttavia le seguenti userbox, fatte da copia incolla, modificando solo la cella, non mi compare nulla

se ci clicco sopra invece compaiono....

sta cosa mi fa impazzire!
 

Sgrubak

Excel/VBA Expert
Expert
10 Marzo 2022
596
106
45
Excel 365
ho messo Textbox_DI_initialize, ma nulla
Leggi con attenzione: io parlavo di Userform, non di TextBox. Della TextBox nemmeno esiste l'evento Initialize...

in compenso ho messo _enter e mi compare il valore di cella,
Si ma solo dopo che hai fatto click su di essa, o ci sei atterrato dopo il TAB... Hai mai visto altri programmi comportarsi così? 😅 Credo di no, quindi non è la strada giusta, a meno che non sia esattamente qual che vuoi fare (far valorizzare il controllo solo all'entrata su di esso).
tuttavia le sueguenti userbox, fatte da copia incolla, modificando solo la cella, non mi compare nulla
Vai con calma. Sei su un forum e non c'è nessuna fretta. Se usi termini come userbox complichi solo la discussione. L'utilizzo della terminologia appropriata è molto importante.

Non puoi aspettarti che solo copiando il controllo in modalità design, il codice per magia si duplichi anch'esso. Se aggiungi controlli, devi gestire l'evento di ciascun controllo. L'editor non lo fa in automatico (e per fortuna aggiungerei: se una TextBox servisse a contenere dei codici fiscali ed un altra degli indirizzi e-mail, copiare i codici di validazione da un controllo all'altro sarebbe un mal di pancia bello grosso).
 
  • Like
Reactions: triskell

triskell

Utente abituale
21 Febbraio 2021
245
28
30
office 365
hai inventato un evento
il "Textbox_DI_initialize" non esiste di default.
Devi cliccare sulla userform e poi, nel menù a tendina in alto a dx devi selezionare "Initialize"
ti comparirà una macro e tra il Sub e l'End inserire il codice che hai scritto.

Comunque, segui il suggerimento di alfrimpa @alfrimpa (saluti) ed allega il file, in formato xlm (lo preciso perché noto che spesso viene caricato un file xls che serve per fare nulla)
 

MarcoDN

Utente junior
Original poster
15 Giugno 2022
21
0
1
365
Intanto grazie a tutti
ho allegato il file (l'ho dovuto censurare molto, scusate)
quello che vorrei è che nella textbox DI, uscisse il valore della riga R colonna A del foglio main ....... nel caso in cui ci fosse la necessità di modificarlo, vorrei che cio che scrivo nella textbox venga riportando nella riga R colonna A
e così via per gli altri campi

il valore R verrà inserito tramite una inputbox (credo/spero di non avere problemi nel crearmela) all'apertura dello userform


Spero di essermi spiegato ...
Grazie anticipatamente a tutti
 

Allegati

  • macro duplicazione righe privacy2.xlsm
    41.9 KB · Visualizzazioni: 7

triskell

Utente abituale
21 Febbraio 2021
245
28
30
office 365
quindi, al caricamento della userform, la textbox DI avrà i valori immessi dal foglio Main.
Poi, modificando il valore della textbox DI avverrà la modifica della relativa cella del foglio Main.
Giusto?
Domanda: cos'è la riga R della Colonna A?
Domanda: a cosa serve un inputbox per riempire la cella del foglio main se hai la textbox DI che fa (mi pare di aver capito) lo stesso?
 

MarcoDN

Utente junior
Original poster
15 Giugno 2022
21
0
1
365
Ciao , fondamentalmente si ......
i campi più importanti che verranno modificati, sono il campo commenti e i menu a tendina riskcode e action .....
gli altri non è cosi necessario, succede talmente di rado che si può fare manualmente direttamente nel foglio, ma visto che ci siamo .... perche no
Siccome ogni settimana verranno inseriti nuovi casi nel foglio main, quindi nuove righe, vorrei che al lancio della userform, un'inputbox chiedesse da quale riga partire.
Così quando viene premuto il tasto Save&Next, il file viene salvato e si visualizza la riga successiva...
 

MarcoDN

Utente junior
Original poster
15 Giugno 2022
21
0
1
365
Riga R nel senso che dichiarero variabile R = inputbox (insert row to start ,xxxx,"numero di riga")

praticamente il numero della riga a cui la cella farà riferimento
 

triskell

Utente abituale
21 Febbraio 2021
245
28
30
office 365
ok. Ora è più chiaro, grazie.
Potresti inziare a creare la inputbox e quindi postare il tuo progetto aggiornato.
 

triskell

Utente abituale
21 Febbraio 2021
245
28
30
office 365
Una soluzione, sfruttando anche il suggerimento dato da Zer0Kelvin @Zer0Kelvin (Saluto_saluto) potrebbe essere così:
nel modulo di "Thisworknook", all'evento "open" inserisci il comando per far apparire una inputbox che chiede di immettere il numero di riga.
Fai un controllo sulla risposta, per verificare che venga immesso un valore numerico (in caso contrario viene lanciato un warning), e quindi la textbox (sfruttando la proprietà controlsource) verrà caricata del contenuto della cella di riferimento.
Sempre grazie al controlsource, la modifica della textbox verrà immediatamente immagazzinata dalla cella di riferimento.

In pratica:

Sul modulo del foglio "Thisworkbook":
Private Sub Workbook_Open()
Dim response As String
dom:
domanda = InputBox("Inserire Riga")
If IsNumeric(domanda) Then
Datawork.TextBoxDI.ControlSource = "Main!A" & domanda
Datawork.Show
Else
MsgBox "Inserire numero"
GoTo dom
End If

End Sub

fai sapere se era quello che avevi in mente.
 

Sgrubak

Excel/VBA Expert
Expert
10 Marzo 2022
596
106
45
Excel 365
nel modulo di "Thisworknook", all'evento "open" inserisci il comando per far apparire una inputbox che chiede di immettere il numero di riga.
Ma perché? Lui ha la form... :dubbioso:

Fai un controllo sulla risposta, per verificare che venga immesso un valore numerico
Conviene, visto che è un numero di riga, verificare che sia anche un Long maggiore di zero... E magari senza usare il GoTo che secondo alcuni è deprecato:
Codice:
Dim domanda As String
Dim check As Boolean

On Error Resume Next

Do Until check
    domanda = InputBox("Inserire Riga (numero maggiore di zero)")
    domanda = Replace(domanda, ".", ",")
    If InStr(1, domanda, ",") = 0 Then
        If IsNumeric(domanda) Then check = CLng(domanda) > 0
    End If
Loop

Datawork.TextBoxDI.ControlSource = "Main!A" & domanda
Datawork.Show

Occhio che avevi dichiarato response e poi hai usato domanda.
vorrei che al lancio della userform, un'inputbox chiedesse da quale riga partire.

Non ha molto senso. Meglio far scrivere in una textbox il numero di riga, no? Nel BeforeUpdate lo verifichi e se è tutto ok, carichi i dati degli altri controlli, altrimenti no.
 

triskell

Utente abituale
21 Febbraio 2021
245
28
30
office 365
Sgrubak @Sgrubak , magari è OT però mi interessa capirlo.
Perché "E magari senza usare il GoTo che secondo alcuni è deprecato"?
Mi capita di usarlo quindi vorrei capire meglio.
Crea problemi an excel?
 

Sgrubak

Excel/VBA Expert
Expert
10 Marzo 2022
596
106
45
Excel 365
Crea problemi an excel?
No, assolutamente. Ma è definito un anti-pattern che tende a portare alla "spaghettificazione" del codice. In pratica si alza di molto il rischio di scrivere codice che faccia salti non predicibili rendendo di fatto difficile la lettura dello stesso (già complicata dalla mancanza di indentazione) e causando anche complicazioni in fase di debug (già complicata dalla mancanza di Option Explicit).
 
  • Love
Reactions: triskell

MarcoDN

Utente junior
Original poster
15 Giugno 2022
21
0
1
365
Ragazzi, intanto vi ringrazio, ma la mia profonda ignoranza in materia mi ha fatto perdere completamente ....

io di base ho questo workbook che è mensile, e ogni 2/3 giorni di media, vengono aggiunte righe quindi casi nello sheet main


ho creato un "bottone" che mi apre una userform formata da altri "bottoni" che lanciano determinate macro

un "bottone", invece mi apre la userform2 che ho allegato nei messaggi precedenti

io vorrei che all'apertura della userform2 una inputbox mi chiedesse da che riga iniziare a visualizzare i dati

le combobox risk code e action, insieme alla text box commenti, sono gli unici campi che necessitano avere lettura e scrittura delle celle dello sheet main; le altre textbox, è sufficiente che il dato sia visualizzato

Poi una volta scritti i commenti e selezionato la voce corretta dai menu a tendina, si preme Save & Next, al che si salva il file e si passa alla visualizzazione dei dati sucessivi.

Scusatemi se non ho scritto in termini corretti..... e vi sarei grato se mi deste informazioni "for an extreme dummy",
ho scoperto da pochi mesi il vba, e da una decina di giorni la possibilità di creare le userform