Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Evitare che sullo sfondo si vedano i fogli di lavoro

252 views
Skip to first unread message

Fabrizio

unread,
Dec 8, 2009, 10:35:18 AM12/8/09
to
Finalmente ho terminato il file, vorrei migliorarlo un po' , prima
cosa ad esempio vorrei che dietro le UserForm non si visualizzassero i
fogli dove sono inseriti i dati,
ho messo la riga :
Application.ScreenUpdating = False
e così evito i fstidiosissimi scrolling(non sono molto sicuro di
questo termine che ho usato)
ma sotto chiaramente compaiono i fogli a cui fa riferimanto lo script
(va be' script :-D)
il mio escamotage è sto quello di riempire i fogli tutti dello stesso
colore compresi i Font, però mi sembra una cosa ortodossa,
qualcuno mi puo' dare dei suggerimenti su come potrei ottenere gli
stesi risultati con un metodo più serio

Mauro Gamberini

unread,
Dec 8, 2009, 1:10:34 PM12/8/09
to
il mio escamotage � sto quello di riempire i fogli tutti dello stesso
colore compresi i Font, per� mi sembra una cosa ortodossa,

qualcuno mi puo' dare dei suggerimenti su come potrei ottenere gli
stesi risultati con un metodo pi� serio
**************************************************

Nascondi i fogli, tuti meno uno.
Foglio che, potr� essere vuoto
e del colore che vuoi tu.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


Fabrizio

unread,
Dec 8, 2009, 5:53:10 PM12/8/09
to

> Nascondi i fogli, tuti meno uno.
> Foglio che, potrà essere vuoto

> e del colore che vuoi tu.

Ci avevo pensato ma quando vado a selezionare un foglio di quelli
nascosti mi da errore

eliano

unread,
Dec 8, 2009, 7:21:16 PM12/8/09
to

Come selezioni un foglio nascosto ?

Fabrizio

unread,
Dec 8, 2009, 8:26:57 PM12/8/09
to

non seleziono un foglio nascosto, mi da errore, ma i dati che utilizzo
sono in 4 fogli, e se vado a utiòizzare quel foglio con Sheets
("Foglio1").select mi da errore se lo ho nascosto, qui infatti è il
mio problema

Scossa

unread,
Dec 9, 2009, 2:33:57 AM12/9/09
to
On 9 Dic, 02:26, Fabrizio <trum...@gmail.com> wrote:
> non seleziono un foglio nascosto, mi da errore, ma i dati che
> utilizzo
> sono in 4 fogli, e se vado a utiòizzare quel foglio con Sheets
> ("Foglio1").select mi da errore se lo ho nascosto, qui infatti è il
> mio problema

Ciao Fabrizio,

Al di là della protezione che puoi rimuovere e poi rimettere (oppure
guarda l'help riguardo "userinterfaceonly"), ma ti è indispensabile
usare .select ?
Il più delle volto è del tutto inutile e può essere evitato, considera
che:

sub m()
Worksheets("Foglio1").Select
Range("A1").Select
Selection.Copy
Sheets("Foglio2").Select
Range("B4").Select
ActiveSheet.Paste
Application.CutCopyMode = False
end sub

può essere scritta molto meglio così:

Public Sub m()
Dim sh1 As Worksheet
Dim sh2 As Worksheet

Set sh1 = ThisWorkbook.Worksheets("Foglio1")
Set sh2 = ThisWorkbook.Worksheets("Foglio2")
sh1.Range("A1").Copy sh2.Range("B4")

Set sh1 = Nothing
Set sh2 = Nothing

End Sub


Fai sapere se hai risolto, grazie.
Bye!
Scossa

Mauro Gamberini

unread,
Dec 9, 2009, 3:38:32 AM12/9/09
to
> > Ci avevo pensato ma quando vado a selezionare un foglio di quelli
> > nascosti mi da errore
>
> Come selezioni un foglio nascosto ?

non seleziono un foglio nascosto, mi da errore, ma i dati che utilizzo

sono in 4 fogli, e se vado a uti�izzare quel foglio con Sheets
("Foglio1").select mi da errore se lo ho nascosto, qui infatti � il
mio problema
**************************************************

Activepippoplutopaperino e Selectquiquoqua sono
da evitare. Nel 99 per centto dei casi non servono
a nulla, fanno solo *perdere tempo* ad
Excel e creano dei problemi a te.
Copia/incolla, lettura dati, riordini e filtri tabelle,
ecc, si possono fare *senza* selezionare foglio
e/o cella.

Puoi eliminare e rimettere la protezione ai tuoi fogli
runtime(durante il procedere del codice) tamite
i metodi Protect e Unprotect del foglio stesso.
Vedi la guida del vb di Excel per chiarimenti e *poi*
chiedi se non ti � chiaro.

Puoi utilizzare e gestire il parametro UserInterfaceOnly
del metodo Protect. Vedi sempre la guida del vb
di Excel per chiarimenti e se non ti � chiaro qualcosa,
chiedi.

Per nascondere il foglio, utilizza la costante:
xlSheetVeryHidden
dellla propriet� Visible del foglio, i modo da renderlo
visibile *solo* da codice.

Ricorda che il tuo codice sar� *sempre* visibile
ad un operatore appena appena esperto, anche
se lo proteggi dalla visualizzazione e che le macro
possono essere disabilitate all'avvio senza nessun
problema.

Insomma, utilizza la protezione di Excel
per quello che �, cio� un aiuto per chi inserisce
i dati nel fogli e non un qualcosa che abbia a che fare
con la *protezione di segreti* nel tuo codice.


--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/officeit/threads

Fabrizio

unread,
Dec 9, 2009, 7:07:28 AM12/9/09
to
Prima di tutto vi ringrazio per la vostra cortesia,
non so come è andato a finire il discorso sulla protezione del codice
tramite password non era questo quello che volevo fare.
Ad essere sinceri avrei voluto inserire una password alla fine del
lavoro al codice per evitare che persone che non sanno usare molto il
PC lo manomettono, ma questo solo dopo aver migliorato il mio lavoro
che ha ancora qualcosa da modificare, però intanto ho imparato ancora
qualcosa da quello che avete scritto, il che non è poco! poi
estarpolando dalle risposte un passettino in avanti lo avevo fatto o
almeno credevo, ho usato la proprieta visible del Foglio come
indicatomi da "Mauro Gamberini " ed ho nascosto il foglio 1 poi con il
suggerimento di "Scossa" ho fatto una prova ed nin effetti anche con
il foglio nascosto ha funzionato mi ha copiato un dato presente nella
cella A1 del foglio uno che avevo Nascosto con la costante
xlSheetVeryHidden della proprietà del foglio 1 nella cella A1 del
foglio 1 visibile. A questo punto ho provato a modificare il mio
codice dove usavo
Sheets("Foglio2").Select
In questo modo:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim sh2 As Worksheets
'Sheets("Foglio2").Select

Set sh2 = ThisWorkbook.Worksheets("Foglio2")
sh2.Select
nriga = 2
While Cells(nriga, 3) <> ""
nriga = nriga + 1
Wend
Cells(nriga, 1) = TextBox1
Cells(nriga, 2) = ComboBox5
Cells(nriga, 3) = TextBox2
Cells(nriga, 4) = ComboBox6
Cells(nriga, 5) = ComboBox8
Cells(nriga, 6) = ComboBox7
Cells(nriga, 9) = ComboBox1
Cells(nriga, 10) = ComboBox2
Cells(nriga, 11) = ComboBox3
Cells(nriga, 12) = ComboBox4
Cells(nriga, 13) = TextBox4
Cells(nriga, 14) = TextBox3
Cells(nriga, 7) = TextBox5
Cells(nriga, 8) = TextBox6
Unload UserForm1
Application.ScreenUpdating = True
Ma mi da error - run time 13 Tipo non corrispondente
Ho provato a cercare a cosa si riferisce questo errore ma non sono
riuscito a trovare niente , sulla guida VBA di Excel c'è scritto di
usare il visualizzatore oggetti ma non ne sono venuto a capo
Vi chiedo se il ragionamento che descrivo qui sotto è giusto o sono
proprio fuori strada
Con la riga Dim sh2 As Worksheeets dichiaro il tipo di oggetto per la
mia variabile che in questo caso e un foglio di lavoro
Con la riga Set sh2 = ThisWorkbook.Worksheets("Foglio2") Assegno un
riferimento alla mia variabile cioè gli dico che sh2 corrisponde al
foglio2
qui penso di aver preso una cantonata scrivendo sh2.Select però se non
lo scrivo come lo seleziono il foglio? ho provato senza e non funziona

Mauro Gamberini

unread,
Dec 9, 2009, 8:30:43 AM12/9/09
to
<cut>

Ma mi da error - run time 13 Tipo non corrispondente
Ho provato a cercare a cosa si riferisce questo errore ma non sono
riuscito a trovare niente , sulla guida VBA di Excel c'� scritto di

usare il visualizzatore oggetti ma non ne sono venuto a capo
Vi chiedo se il ragionamento che descrivo qui sotto � giusto o sono

proprio fuori strada
Con la riga Dim sh2 As Worksheeets dichiaro il tipo di oggetto per la
mia variabile che in questo caso e un foglio di lavoro
Con la riga Set sh2 = ThisWorkbook.Worksheets("Foglio2") Assegno un
riferimento alla mia variabile cio� gli dico che sh2 corrisponde al
foglio2
qui penso di aver preso una cantonata scrivendo sh2.Select per� se non

lo scrivo come lo seleziono il foglio? ho provato senza e non funziona
****************************************************

Se(se) i controlli sono nella UserForm
e i dati devi metterli nel Foglio2 e chiudere
la UserForm finita la routine e se(se) il dato
in colonna C � quello che determina o meno
che la riga abbia un valore:

Private Sub CommandButton1_Click()

'dichiaro le variabili
Dim wk As Workbook
Dim sh2 As Worksheet
Dim lNuovaRiga As Long

'metto un riferimento al Workbook
'che contiene la macro
Set wk = ThisWorkbook

With wk
'metto un riferimento al foglio
'(in questo caso specifico � sul
'Foglio2 che eseguo le operazioni)
Set sh2 = .Worksheets("Foglio2")
End With

'alcuni settaggi
With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
End With

With sh2
'trovo l'ultima riga con valori
'della colonna C e aumento di 1
'per scrivere nella nuova riga
lNuovaRiga = .Range("C" & _
.Rows.Count).End(xlUp).Row + 1
'scrivo nella prima riga vuota i dati
'dei vari controlli
.Cells(lNuovaRiga, 1).Value = Me.TextBox1.Text
.Cells(lNuovaRiga, 2).Value = Me.ComboBox5.Text
.Cells(lNuovaRiga, 3).Value = Me.TextBox2.Text
.Cells(lNuovaRiga, 4).Value = Me.ComboBox6.Text
'.......
'.......
'.......
.Cells(lNuovaRiga, 8).Value = Me.TextBox6.Text
End With

'alcuni settaggi
With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
End With

'Set a Nothing delle variabili oggetto
Set sh2 = Nothing
Set wk = Nothing

'chiudo la UserForm
Unload Me

End Sub

Funziona, foglio nascosto o meno.

Fabrizio

unread,
Dec 9, 2009, 7:03:53 PM12/9/09
to
Grazie, funziona benissimo, vorrei creare un commandButton nella
UserForm che uso come maschera principale, che cliccato mi cambia la
proprietà Visible dei fogli nascosti, in caso sia necessario dover
consultare i dati immesi nei vari fogli, quindi renderli visibili, sin
qui inserisco le righe

Private Sub CommandButton3_Click()
Dim sh2 As Worksheet

Set sh2 = ThisWorkbook.Worksheets("Foglio2")

sh2.Visible = xlSheetVeryHidden = -1


Set sh2 = Nothing
End Sub

ALMENO CREDO

il problema però che sorge è ?
a questo punto mi ritrovo con i fogli visibili perchè ho modificato la
loro costante "Visible" nelle proprietà del foglio quindi o intervengo
manualmente(non mi sembra una grande soluzione), o creo un codice che
all' apertura del file comanda la costante "Visible"
xlSheetVeryHidden = 0, quindi avevo pensato di mettere un codice in
ThisWorkbook del tipo

Private Sub Workbook_Open()
Public sh2 As WorkSheets
Public sh3 As WorkSheets
Public sh1 As WorkSheets
Public sh4 As WorkSheets
Public shs As WorkSheets

Set sh1 = .Worksheets("Foglio1")


Set sh2 = .Worksheets("Foglio2")

Set sh3 = .Worksheets("Foglio3")
Set sh4 = .Worksheets("Foglio4")
Set sh5 = .Worksheets("Foglio5")

Whit sh1
.Visible = xlSheetVeryHidden = 0
End Whit

Whit sh2
.Visible = xlSheetVeryHidden = 0
End Whit

Whit sh3
.Visible = xlSheetVeryHidden = 0
End Whit

Whit sh4
.Visible = xlSheetVeryHidden = 0
End Whit

Whit sh5
.Visible = xlSheetVeryHidden = 0
End Whit

With ActiveWindow
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
End With
Application.DisplayFormulaBar = False
Application.DisplayFullScreen = True

Set sh1 = Nothing
Set sh2 = Nothing
Set sh3 = Nothing
Set sh4 = Nothing
Set sh5 = Nothing

Sheets("Foglio6").Select
UserForm2.Show
End Sub

Su questo codice ci credo molto meno di quello sopra :-D ,purtoppo
non sto sul mio portatile quindi non posso verificare quanto sia
grossa la boiata che ho scritto, spero che mi diciate che qualcosina
lo azzeccata.
Scusate e grazie per la vostra pazienza, in fondo il lavoro che ho
svolto fino ad ora funziona benissimo, ma per migliorarmi voglio
cercare di cimentarmi a trovare miglioramenti a questo file che
sicuramente aiuteranno anche me a fare esperienza

by sal

unread,
Dec 9, 2009, 11:34:29 PM12/9/09
to

Ciao, a tutti, una volta tanto dico pure la mia, anche io avevo lo
stesso problema di non visualizzare i fogli dietro l'userform.

Ma ho risolto con Application.Visible = false ed un pulsante che
lancia Application.Visible = true.

in questo modo Excel non e più visible, ed i fogli tutti disponibili,
l'unico problema, che quando si genera un errore per visualizzare
Excel si deve chiuderlo da taskManager, però si potrebbe intercettare
l'errore e far partire la macro che visualizzi Excel.

Ciao By Sal 8-)

Mauro Gamberini

unread,
Dec 10, 2009, 2:31:05 AM12/10/09
to
Grazie, funziona benissimo, vorrei creare un commandButton nella
UserForm che uso come maschera principale, che cliccato mi cambia la
propriet� Visible dei fogli nascosti, in caso sia necessario dover

consultare i dati immesi nei vari fogli, quindi renderli visibili
*****************************************************

Situazione.
Voglio che i fogli, tutti meno uno
(qui nell'esempio il Foglio2),
siano visibili o invisibili a scelta.

Posso fare due pulsanti:

Private Sub CommandButton1_Click()

'dichiaro le variabili
Dim wk As Workbook

Dim sh As Worksheet

'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook

With wk
'ciclo i fogli per renderli
'invisibili
For Each sh In .Worksheets
If sh.Name <> "Foglio2" Then
sh.Visible = xlSheetVeryHidden
End If
Next
End With

'Set a Nothing delle variabili oggetto

Set sh = Nothing
Set wk = Nothing

End Sub

Private Sub CommandButton2_Click()

'dichiaro le variabili
Dim wk As Workbook

Dim sh As Worksheet

'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook

With wk
'ciclo i fogli per renderli
'visibili
For Each sh In .Worksheets
If sh.Name <> "Foglio2" Then
sh.Visible = xlSheetVisible
End If
Next
End With

'Set a Nothing delle variabili oggetto

Set sh = Nothing
Set wk = Nothing

End Sub


Oppure un unico pulsante che faccia
alternativamente le due cose:

Private Sub CommandButton3_Click()

'dichiaro le variabili
Dim wk As Workbook

Dim sh As Worksheet

'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook

With wk
'ciclo i fogli per renderli
'invisibili o invisibili
For Each sh In .Worksheets
If sh.Name <> "Foglio2" Then
If sh.Visible = xlSheetVisible Then
sh.Visible = xlSheetVeryHidden
Else
sh.Visible = xlSheetVisible
End If
End If
Next
End With

'Set a Nothing delle variabili oggetto

Set sh = Nothing
Set wk = Nothing
End Sub

a questo punto mi ritrovo con i fogli visibili perch� ho modificato la
loro costante "Visible" nelle propriet� del foglio quindi o intervengo


manualmente(non mi sembra una grande soluzione), o creo un codice che
all' apertura del file comanda la costante "Visible"
xlSheetVeryHidden = 0, quindi avevo pensato di mettere un codice in
ThisWorkbook del tipo

****************************************************
<cut>

Per ci� che riguarda l'apertura(e la chiusura) del file.
Questo codice in un modulo standard:

Public Sub mMostra()

'dichiaro le variabili
Dim wk As Workbook

Dim sh As Worksheet

'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook

With wk
'ciclo i fogli per renderli
'invisibili o invisibili
For Each sh In .Worksheets
If sh.Name <> "Foglio2" Then
If sh.Visible = xlSheetVisible Then
sh.Visible = xlSheetVeryHidden
Else
sh.Visible = xlSheetVisible
End If
End If
Next
End With

'Set a Nothing delle variabili oggetto

Set sh = Nothing
Set wk = Nothing

End Sub

Public Sub mNascondi()

'dichiaro le variabili
Dim wk As Workbook

Dim sh As Worksheet

'metto un riferimento al workbook
'che contiene il codice
Set wk = ThisWorkbook

With wk
'ciclo i fogli per renderli
'invisibili
For Each sh In .Worksheets
If sh.Name <> "Foglio2" Then
sh.Visible = xlSheetVeryHidden
End If
Next
End With

'Set a Nothing delle variabili oggetto

Set sh = Nothing
Set wk = Nothing

End Sub


E questo nel modulo di codice di ThisWorkbook:

Private Sub Workbook_Open()
Call mNascondi
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call mNascondi
End Sub


Puoi adesso modificare anche il codice
dei due pulsanti sulla UserForm cos�:

Private Sub CommandButton1_Click()
Call mNascondi
End Sub

Private Sub CommandButton2_Click()
Call mMostra
End Sub

Utilizzando le stesse routine per nascondere
e visualizzare i fogli.

Nota.
Tieni sempre presente che posso disabilitare
le macro all'avvio del file e che il tuo codice
sar� sempre visibile con poca fatica anche
proteggendolo dalla visualizzazione.

Grazie per l'attenzione.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/excelit/threads


Fabrizio

unread,
Dec 10, 2009, 12:52:02 PM12/10/09
to
Grazie, potrei disturbarti ancora, volevo sapere se il codice che ho
scritto io per te era proprio tutto sbagliato?

Mauro Gamberini

unread,
Dec 10, 2009, 1:32:21 PM12/10/09
to
> Grazie, potrei disturbarti ancora, volevo sapere se il codice che ho
> scritto io per te era proprio tutto sbagliato?
>

Gli ho solo dato un'occhiata per capire
cosa dovevi fare. Diciamo che io non
lo utilizzerei. Ma io, eh.

--
---------------------------
Mauro Gamberini
http://www.riolab.org/
http://www.maurogsc.eu/

http://social.microsoft.com/Forums/it-IT/officeit/threads

Fabrizio

unread,
Dec 12, 2009, 7:02:43 AM12/12/09
to
On 10 Dic, 19:32, "Mauro Gamberini"
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threadCiao
Ciao Grazie, Allora non lo uso neanche io :-D Ah AH

Fabrizio

unread,
Dec 12, 2009, 12:02:30 PM12/12/09
to
Ciao sono di nuovo qui a rompere le scatole, ho usato il tuo codice ed
ho creato nella userform che utilizzo come centro comando (dicamo), un
pulsante a ui ho associato la routine mMostra
ma sta succedendo una cosa che non riesco a spiegarmi su una cosa poi
che dovrebbe esere strafacilissima, mi succede che se clicco la prima
volta non sempre la routine legata al pulsante parte, cliccandoci
sopra un'altra volta funziona, quindi mi ritrovo con i fogli scoperti
se clicco di nuovo sul bottone visulizza me li rinasconde, cosa che
dovrebbe fare un'altra routine come è possibile che succeda questo?

Mauro Gamberini

unread,
Dec 13, 2009, 8:04:46 AM12/13/09
to
ho creato nella userform che utilizzo come centro comando (dicamo), un
pulsante a ui ho associato la routine mMostra
ma sta succedendo una cosa che non riesco a spiegarmi su una cosa poi
che dovrebbe esere strafacilissima, mi succede che se clicco la prima
volta non sempre la routine legata al pulsante parte, cliccandoci
sopra un'altra volta funziona, quindi mi ritrovo con i fogli scoperti
se clicco di nuovo sul bottone visulizza me li rinasconde, cosa che
dovrebbe fare un'altra routine come � possibile che succeda questo?
*************************************************

Vedere codice, dare(forse) soluzione... ;-)

Fabrizio

unread,
Dec 15, 2009, 8:46:54 AM12/15/09
to
On 13 Dic, 14:04, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> ho creato nella userform che utilizzo come centro comando (dicamo), un
>
> Vedere codice, dare(forse) soluzione... ;-)

Grazie si ho visto che era il codice.
adesso mi è comparso un nuovo problema, nascondendo i fogli avevo il
problema che i codici non funzionassero, poi grazie ai vostri
suggerimenti credevo di aver risolto il problema,
ma ci sono codici che non riesco a capire come modificarli sono picci
codici come:
Private Sub UserForm_Activate()
'Sheets("Foglio3").Select
End Sub
se lascio questo codice mi blocca tutto, a dire il vero lo avevo
temuto ma non riesco a cambiare questo codice in modo che faccia
quello che fa' ma non mi si blocchi perchè il foglio è nascosto


Mauro Gamberini

unread,
Dec 15, 2009, 10:00:30 AM12/15/09
to
ma ci sono codici che non riesco a capire come modificarli sono picci
codici come:
Private Sub UserForm_Activate()
'Sheets("Foglio3").Select
End Sub
se lascio questo codice mi blocca tutto, a dire il vero lo avevo
temuto ma non riesco a cambiare questo codice in modo che faccia
quello che fa' ma non mi si blocchi perch� il foglio � nascosto
******************************************

Perch� devi selezionare il Foglio3?
Select � male nel 99% dei casi.
E in quel 99% si pu� fare in altro modo.
Ripeto, perch� selezioni il Foglio3?

Fabrizio

unread,
Dec 15, 2009, 10:49:11 AM12/15/09
to
On 15 Dic, 16:00, "Mauro Gamberini"

Seleziono il foglio3 o altri fogli all'apertura di una userform per
far leggere alle textbox i valori delle celle che sono in quel foglio

Mauro Gamberini

unread,
Dec 15, 2009, 11:12:21 AM12/15/09
to
Seleziono il foglio3 o altri fogli all'apertura di una userform per
far leggere alle textbox i valori delle celle che sono in quel foglio
************************************************

Non serve a nulla selezionare il foglio!
Ragioniamo.
Hai i dati in Foglio3, cella A1 e B1.
Tu cosa fai adesso, immagino una cosa
cos�:

Foglio3.Select
TextBox1.Text = ActiveSheet.Range("A1").Value
TextBox2.Text = ActiveSheet.Range("B1").Value

Ma funziona anche *senza* selezionare il Foglio3,
cosa che ti da errore se il Foglio3 � nascosto.
Quindi, semplificando:

With ThisWorkbook.Worksheets("Foglio3")
TextBox1.Text = .Range("A1").Value
TextBox2.Text = .Range("B1").Value
'ecc
End With


Funziona anche * al contrario*
nel caso tu debba scrivere sul Foglio3
i dati delle TextBox.:

With ThisWorkbook.Worksheets("Foglio3")
.Range("A1").Value = TextBox1.Text
.Range("B1").Value = TextBox2.Text
'ecc
End With

E questo, Foglio3
nascosto o meno.

Ancora una volta: Activepippoplutopaperino
e Selectquiquoqua portano ad errori e/o a
cose non volute.

Dai un'occhiatina qui se ne hai tempo e voglia:
http://www.maurogsc.eu/excel/xlsmisteriosacellaa1.aspx

Grazie per l'attenzione.

Fabrizio

unread,
Dec 15, 2009, 11:45:01 AM12/15/09
to
On 15 Dic, 17:12, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Seleziono il foglio3 o altri fogli all'apertura di una userform per
> far leggere alle textbox i valori delle celle che sono  in quel foglio
> ************************************************
>
> Non serve a nulla selezionare il foglio!
> Ragioniamo.
> Hai i dati in Foglio3, cella A1 e B1.
> Tu cosa fai adesso, immagino una cosa
> così:

>
> Foglio3.Select
> TextBox1.Text = ActiveSheet.Range("A1").Value
> TextBox2.Text = ActiveSheet.Range("B1").Value
>
> Ma funziona anche *senza* selezionare il Foglio3,
> cosa che ti da errore se il Foglio3 è nascosto.

> Quindi, semplificando:
>
> With ThisWorkbook.Worksheets("Foglio3")
>     TextBox1.Text = .Range("A1").Value
>     TextBox2.Text = .Range("B1").Value
>     'ecc
> End With
>
> Funziona anche * al contrario*
> nel caso tu debba scrivere sul Foglio3
> i dati delle TextBox.:
>
> With ThisWorkbook.Worksheets("Foglio3")
>     .Range("A1").Value = TextBox1.Text
>     .Range("B1").Value = TextBox2.Text
>     'ecc
> End With
>
> E questo, Foglio3
> nascosto o meno.
>
> Ancora una volta: Activepippoplutopaperino
> e Selectquiquoqua portano ad errori e/o a
> cose non volute.
>
> Dai un'occhiatina qui se ne hai tempo e voglia:http://www.maurogsc.eu/excel/xlsmisteriosacellaa1.aspx
>
> Grazie per l'attenzione.
>
> --
> ---------------------------
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threads

Grazie, il problema è che ho fatto tutto senza pensare di voler
nascondere i fogli , poi una volta finito mi sono messo a migliorare
il lavoro una di queste cose era nasconder i fogli per evitare che si
vedessero sotto la userform principale, con le vostre spiegazioni ho
capito come dovevo fare e ho modificato quasi tutti i codici però mi
sto rendendo conto che devo rifare quasi tutto di nuovo, perchè ho
usato in molti codici la forma Sheets("foglion").Select, va be sarà
una faticaccia visto qunto ho impiegto a finire la prima volta i
codici però sicuramente adesso ho quasi imparato come scrivere un
codice decente per qualche prossima idea di lavoro

Mauro Gamberini

unread,
Dec 15, 2009, 12:06:02 PM12/15/09
to
Grazie, il problema � che ho fatto tutto senza pensare di voler

nascondere i fogli , poi una volta finito mi sono messo a migliorare
il lavoro una di queste cose era nasconder i fogli per evitare che si
vedessero sotto la userform principale, con le vostre spiegazioni ho
capito come dovevo fare e ho modificato quasi tutti i codici per� mi
sto rendendo conto che devo rifare quasi tutto di nuovo, perch� ho
usato in molti codici la forma Sheets("foglion").Select, va be sar�

una faticaccia visto qunto ho impiegto a finire la prima volta i
codici per� sicuramente adesso ho quasi imparato come scrivere un

codice decente per qualche prossima idea di lavoro
************************************************

Meglio riscrivere un po' di codice che avere
una cosa che si pianta o che non fa(bene)
quello che dovrebbe.

Grazie per il riscontro e buon lavoro.

Fabrizio

unread,
Dec 15, 2009, 12:15:09 PM12/15/09
to
> > Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft....

>
> Grazie, il problema è che ho fatto tutto senza pensare di voler
> nascondere i fogli , poi una volta finito mi sono messo a migliorare
> il lavoro una di queste cose era nasconder i fogli per evitare che si
> vedessero sotto la userform principale,  con le vostre spiegazioni ho
> capito come dovevo fare e ho modificato quasi tutti i codici però mi
> sto rendendo conto che devo rifare quasi tutto di nuovo, perchè ho
> usato in molti codici la forma Sheets("foglion").Select, va be sarà
> una faticaccia visto qunto ho impiegto a finire la prima volta i
> codici però sicuramente adesso ho quasi imparato come scrivere un
> codice decente per qualche prossima idea di lavoro- Nascondi testo citato
>
> - Mostra testo citato -

Rieccomi, per favore sopportami solo un'altro pochino, ho letto " La
misteriosa cella A1"
è devo farti i miei complimenti perchè risulta molto facile da capire
anche a principianti come me,
ora credo di aver capito che usando la programmazione ad oggetti, ogni
volta che scrivo un codice devo usare la metodologia presente
nell'esempio finale, ed è per questo che non mi serve più usare codici
tipo Sheets("Foglion").Select, quindi tornando al mio caso se uso
questa forma di codice su ogni evento generato dalla mia UserForm non
devo richiamare il foglio da dove recupero i miei dati all' apertura
del foglio come ho fatto fino ad ora
Es:Private Sub UserForm_Activate()
Sheets("Foglio3").Select
End Sub .
Ho quasi capito?

Fabrizio

unread,
Dec 15, 2009, 12:29:48 PM12/15/09
to
> Ho quasi capito?- Nascondi testo citato
mi rispondo da solo non ho capito niente!!!!!!!!!!

Sub W()
If TextBox1 = "" Then
MsgBox "Inserisci Identificativo"
TextBox1.SetFocus
Exit Sub
End If
Dim gb As Worksheet
Set gb = Worksheets("Foglio1")
With gb
Dim d As Object
For Each d In Range("A2:N900")
Dim x As String
x = UserForm4.TextBox1.Value
If d = x Then
d.Select
Y = d.Value
TextBox2 = d.Offset(0, -2).Value
TextBox3 = d.Offset(0, -1).Value
TextBox4 = d.Value
TextBox5 = d.Offset(0, 1).Value
TextBox6 = d.Offset(0, 2).Value
TextBox7 = d.Offset(0, 3).Value
TextBox8 = d.Offset(0, 4).Value
TextBox9 = d.Offset(0, 5).Value
TextBox10 = d.Offset(0, 6).Value
TextBox11 = d.Offset(0, 7).Value
TextBox12 = d.Offset(0, 8).Value
TextBox13 = d.Offset(0, 9).Value
TextBox14 = d.Offset(0, 10).Value
TextBox15 = d.Offset(0, 11).Value
Dim irisposta As Integer
irisposta = MsgBox("Trovato " & Y & ". Vuoi fermarti ?", vbYesNo)
If irisposta = vbYes Then
Exit For
End If
End If
Next d
End With
Set gb = Nothing
End Sub

per favore spiegami che cosa è che non riesco a capire

Mauro Gamberini

unread,
Dec 15, 2009, 1:23:15 PM12/15/09
to
ora credo di aver capito che usando la programmazione ad oggetti, ogni
volta che scrivo un codice devo usare la metodologia presente
nell'esempio finale, ed � per questo che non mi serve pi� usare codici

tipo Sheets("Foglion").Select, quindi tornando al mio caso se uso
questa forma di codice su ogni evento generato dalla mia UserForm non
devo richiamare il foglio da dove recupero i miei dati all' apertura
del foglio come ho fatto fino ad ora
Es:Private Sub UserForm_Activate()
Sheets("Foglio3").Select
End Sub .
Ho quasi capito?
**********************************

Direi di s�.
Per� per� per�...
... programmare ad oggetti(in Excel)
� *uno* dei modi. E' sicuramente
pi� robusto, ma ti costringe a scrivere
molto di pi�. Questo non � un male,
ma va considerato. Inoltre a volte
non serve specificare oggetti,
per esempio una UDF
viene eseguita da chiunque la chiami.

Spero adesso di essere chiaro e di non
crearti confusione.

UserForm con 3 TextBox e 3 CommandButton.
Ho dati in Foglio1, Foglio2, Foglio3, celle A1:C1.

Che i fogli siano o meno nascosti *non ha*
importanza.

Voglio che cliccando su CommandButton1
mi recuperi nelle 3 TextBox il contenuto
delle celle A1:C1 del Foglio1,
cliccando su CommandButton2
il contenuto delle celle A1:C1 del Foglio2,
cliccando sul CommandButton3 il contenuto
di A1:C1 del Foglio3.

Questo il codice(commentato) da inserire
nel modulo di codice della UserForm:

Option Explicit

'dichiaro le variabili visibili
'da tutta la UserForm
Private wk As Workbook
Private sh1 As Worksheet
Private sh2 As Worksheet
Private sh3 As Worksheet

Private Sub Frame2_Click()

End Sub

'questo � l'evento che viene eseguito quando
'crei la UserForm
Private Sub UserForm_Initialize()

'metto i riferimenti al workbook
'che contiene la UserForm e ai fogli
'del workbook
Set wk = ThisWorkbook
With ThisWorkbook


Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
Set sh3 = .Worksheets("Foglio3")

End With
'adesso all'interno della UserForm posso
'utilizzare sh1/sh2/sh3 per riferirmi
'ai 3 fogli
End Sub

'carico nelle TextBox i valori di A1:C1
'del Foglio1
Private Sub CommandButton1_Click()
With sh1
Me.TextBox1.Text = _
.Range("A1").Value
Me.TextBox2.Text = _
.Range("B1").Value
Me.TextBox3.Text = _
.Range("C1").Value
End With
End Sub

'carico nelle TextBox i valori di A1:C1
'del Foglio2
Private Sub CommandButton2_Click()
With sh2
Me.TextBox1.Text = _
.Range("A1").Value
Me.TextBox2.Text = _
.Range("B1").Value
Me.TextBox3.Text = _
.Range("C1").Value
End With
End Sub

'carico nelle TextBox i valori di A1:C1
'del Foglio3
Private Sub CommandButton3_Click()
With sh3
Me.TextBox1.Text = _
.Range("A1").Value
Me.TextBox2.Text = _
.Range("B1").Value
Me.TextBox3.Text = _
.Range("C1").Value
End With
End Sub

'evento che si verifica quando
'chiudi la UserForm
Private Sub UserForm_Terminate()


'Set a Nothing delle variabili oggetto

Set sh3 = Nothing
Set sh2 = Nothing
Set sh1 = Nothing


Set wk = Nothing
End Sub


Tieni presente che questo codice �
scritto perch� sia *facile* da capire.
Pu� essere scritto in modo diverso.
Qui trovi il file che ho utilizzato per
le prove:
http://www.maurogsc.eu/esemping/fogliuserform.zip

Vi �, oltre alla UserForm1, anche la
UserForm2 con il codice diverso.
Potrei ottimizzarlo ulterirmente, ma va, credo,
oltre lo scopo di questo post.

Come sempre, grazie per l'attenzione.

--
---------------------------

Mauro Gamberini

unread,
Dec 15, 2009, 1:31:06 PM12/15/09
to

<cut>

No, forse sono io che non ho capito.

Cosa devi fare?
Hai una tabella?
Su quale foglio?
I suoi estremi(il riferimento)?
Hai una colonna in cui vuoi fare la ricerca?
Quale?
Il dato � univoco nella colonna
o pu� ripetersi?
Una volta che troviamo il dato, cosa
dobbiamo fare?

Per favore, una risposta per ogni domanda.
Grazie.

Fabrizio

unread,
Dec 15, 2009, 3:20:59 PM12/15/09
to
On 15 Dic, 19:31, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> <cut>
>
> No, forse sono io che non ho capito.
>
> Cosa devi fare?
> Hai una tabella?
> Su quale foglio?
> I suoi estremi(il riferimento)?
> Hai una colonna in cui vuoi fare la ricerca?
> Quale?
> Il dato è univoco nella colonna
> o può ripetersi?

> Una volta che troviamo il dato, cosa
> dobbiamo fare?
>
> Per favore, una risposta per ogni domanda.
> Grazie.
>
> --
> ---------------------------
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threads

Allora
Cosa devo fare? nello specifico con una userform faccio una ricerca
su una tabella dati che sta nel foglio1, in questa UserForm ho tre
Bottoni con cui seleziono il criterio per fare la ricerca nel
database, il riferimento del data base sono A1:N979
questi sono i due file peso che forse si capisce meglio

http://www.fabriziobiaggi.com/Osteria del curato.xls questo è quello
che ho cominciato a modificare

http://www.fabriziobiaggi.com/Osteria del curato4.xls questo è quello
finito e funzionante

Fabrizio

unread,
Dec 15, 2009, 3:25:53 PM12/15/09
to
On 15 Dic, 21:20, Fabrizio <trum...@gmail.com> wrote:
> On 15 Dic, 19:31, "Mauro Gamberini"
>
>
>
>
>
> <maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> > <cut>
>
> > No, forse sono io che non ho capito.
>
> > Cosa devi fare?
> > Hai una tabella?
> > Su quale foglio?
> > I suoi estremi(il riferimento)?
> > Hai una colonna in cui vuoi fare la ricerca?
> > Quale?
> > Il dato è univoco nella colonna
> > o può ripetersi?
> > Una volta che troviamo il dato, cosa
> > dobbiamo fare?
>
> > Per favore, una risposta per ogni domanda.
> > Grazie.
>
> > --
> > ---------------------------
> > Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft....

>
> Allora
> Cosa devo fare?  nello specifico con una userform faccio una ricerca
> su una tabella dati che sta nel foglio1, in questa UserForm ho tre
> Bottoni con cui seleziono il criterio per fare la ricerca nel
> database, il riferimento del data base sono A1:N979
>  questi sono i due file peso che forse si capisce meglio
>
> http://www.fabriziobiaggi.com/Osteriadel curato.xls   questo è quello

> che ho cominciato a modificare
>
> http://www.fabriziobiaggi.com/Osteriadel curato4.xls questo è quello
> finito e funzionante- Nascondi testo citato

>
> - Mostra testo citato -


http:/www.fabriziobiaggi.com/Osteria.xls

http:/www.fabriziobiaggi.com/Osteria4.xls


Mauro Gamberini

unread,
Dec 16, 2009, 3:46:48 AM12/16/09
to
http:/www.fabriziobiaggi.com/Osteria.xls

http:/www.fabriziobiaggi.com/Osteria4.xls
********************************

Pagine non trovate.

Per favore, rispondi alle mie domande, grazie.

Fabrizio

unread,
Dec 16, 2009, 4:50:50 AM12/16/09
to
On 16 Dic, 09:46, "Mauro Gamberini"
Ciao grazie per la tua pazienza,
questo file si divide im più parti,
la prima è un database di schede e parti elettroniche che sono in
funzione in un apparato, quindi la prima userform non è altro che un'
interfaccia(se così si può definire) per consultatre questa tabella
A1:N979
ho previsto di poter usare selezionandoli con dei pulsanti 3 criteri
di ricerca che sono uno della colonna A , uno colonna C e l'altro
colonna D, in questa UserForm ci sono vari pulsanti uno una volta
stabilito il criterio esegue la ricerca, due scorrono in alto e in
basso dal punto da dove è stato trovato il dato che soddisfa il
criterio, uno consente di modificare il dato un'altro permette di
inserire nuovi dati e uno li cancella. quindi questa userform ha il
compito di tenere aggiornato il database delle schede che sono in
funzione. La tabella è sul foglio 1 , questa è solo una parte ma è
quella dove sto riscontrando problemi se tolgo Sheets
("Foglio1").Select, spero di essere stato abbastanza chiaro, se hai
bisogno del file per capire il funzionamento cercherò di far in modo
che le pagine si riescone a trovare

Mauro Gamberini

unread,
Dec 16, 2009, 5:08:16 AM12/16/09
to
la prima � un database di schede e parti elettroniche che sono in
funzione in un apparato, quindi la prima userform non � altro che un'
interfaccia(se cos� si pu� definire) per consultatre questa tabella

A1:N979
ho previsto di poter usare selezionandoli con dei pulsanti 3 criteri
di ricerca che sono uno della colonna A , uno colonna C e l'altro
colonna D, in questa UserForm ci sono vari pulsanti uno una volta
stabilito il criterio esegue la ricerca, due scorrono in alto e in
basso dal punto da dove � stato trovato il dato che soddisfa il

criterio, uno consente di modificare il dato un'altro permette di
inserire nuovi dati e uno li cancella. quindi questa userform ha il
compito di tenere aggiornato il database delle schede che sono in
funzione. La tabella � sul foglio 1 , questa � solo una parte ma �

quella dove sto riscontrando problemi se tolgo Sheets
("Foglio1").Select, spero di essere stato abbastanza chiaro, se hai
bisogno del file per capire il funzionamento cercher� di far in modo

che le pagine si riescone a trovare
***********************************************

Posta la routine che da l'errore.
Grazie.

Fabrizio

unread,
Dec 16, 2009, 5:30:38 AM12/16/09
to
On 16 Dic, 11:08, "Mauro Gamberini"

leggendo quello che mi hai spiegato sopra io l'ho scritta cosi ma mi
da errore


Option Explicit


'dichiaro le variabili visibili
'da tutta la UserForm
Private wk As Workbook
Private sh1 As Worksheet
Private sh2 As Worksheet
Private sh3 As Worksheet

Private sh4 As Worksheet
Private sh5 As Worksheet
Private sh6 As Worksheet


Private Sub ComboBox1_Change()
TextBox1.Text = ComboBox1.Text
End Sub

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False

Dim Number As String
Number = Range("Z1").Value
Select Case Number
Case "K"
Call K
Case "J"
Call J
Case "W"
Call W
Case Else
End Select
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton10_Click()
Application.ScreenUpdating = False
ComboBox1.RowSource = "PSrif"
Range("Z1") = "K"
Range("Y1") = "d"
Range("X1") = "g"
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton2_Click()
Application.ScreenUpdating = False
If TextBox2 = "" Then
MsgBox "Devi Inserire almeno il nominativo"
TextBox2.SetFocus
Exit Sub
End If
Whit sh1
Dim irisposta As Integer
irisposta = MsgBox("Confermi la registrazione" _
& " di " & TextBox2.Value & " ?", vbYesNo)


If irisposta = vbYes Then

Range("A2").End(xlDown).Offset(1, 0).Select
ActiveCell.Value = TextBox2
ActiveCell.Offset(0, 0).Value = TextBox2
ActiveCell.Offset(0, 1).Value = TextBox3
ActiveCell.Offset(0, 2).Value = TextBox4
ActiveCell.Offset(0, 3).Value = TextBox5
ActiveCell.Offset(0, 4).Value = TextBox6
ActiveCell.Offset(0, 5).Value = TextBox7
ActiveCell.Offset(0, 6).Value = TextBox8
ActiveCell.Offset(0, 7).Value = TextBox9
ActiveCell.Offset(0, 8).Value = TextBox10
ActiveCell.Offset(0, 9).Value = TextBox11
ActiveCell.Offset(0, 10).Value = TextBox12
ActiveCell.Offset(0, 11).Value = TextBox13
ActiveCell.Offset(0, 12).Value = TextBox14
ActiveCell.Offset(0, 13).Value = TextBox15
MsgBox "Ok Capo, eseguito!"
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
TextBox13 = ""
TextBox14 = ""
TextBox15 = ""
End If
End With
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
If TextBox2 = "" Then
MsgBox "Devi Cercare un nominativo per modificarlo"
Exit Sub
End If
With sh1
ActiveCell.Value = TextBox2
ActiveCell.Offset(0, 1).Value = TextBox3
ActiveCell.Offset(0, 2).Value = TextBox4
ActiveCell.Offset(0, 3).Value = TextBox5
ActiveCell.Offset(0, 4).Value = TextBox6
ActiveCell.Offset(0, 5).Value = TextBox7
ActiveCell.Offset(0, 6).Value = TextBox8
ActiveCell.Offset(0, 7).Value = TextBox9
ActiveCell.Offset(0, 8).Value = TextBox10
ActiveCell.Offset(0, 9).Value = TextBox11
ActiveCell.Offset(0, 10).Value = TextBox12
ActiveCell.Offset(0, 11).Value = TextBox13
ActiveCell.Offset(0, 12).Value = TextBox14
ActiveCell.Offset(0, 13).Value = TextBox15
MsgBox "Ok! Eseguito"
End With
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton4_Click()
Application.ScreenUpdating = False
With sh1
If TextBox2 = "" Then Exit Sub
ActiveCell.Select
Dim irisposta As Integer
irisposta = MsgBox("Vuoi cancellare il Nominativo: " &
ActiveCell.Value & " ?", vbYesNo)


If irisposta = vbYes Then

ActiveCell.EntireRow.Delete
End If
End With
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton5_Click()
Application.ScreenUpdating = False
Dim Number As String
Number = Range("Y1").Value
Select Case Number
Case "A"
Call A
Case "B"
Call B
Case "d"
Call d
Case Else

End Select
Application.ScreenUpdating = True

End Sub

Private Sub CommandButton6_Click()
Dim Number As String
Number = Range("X1").Value
Select Case Number
Case "E"
Call E
Case "F"
Call F
Case "g"
Call g
Case Else

End Select
End Sub

Private Sub CommandButton7_Click()
Application.ScreenUpdating = False
UserForm4.Hide
Application.ScreenUpdating = True
End Sub


Private Sub CommandButton8_Click()
Application.ScreenUpdating = False
ComboBox1.RowSource = "Identificativo"
Range("Z1") = "J"
Range("Y1") = "A"
Range("X1") = "E"
Application.ScreenUpdating = True
End Sub

Private Sub CommandButton9_Click()
Application.ScreenUpdating = False
ComboBox1.RowSource = "Riferimenti"
Range("Z1") = "W"
Range("Y1") = "B"
Range("X1") = "F"
Application.ScreenUpdating = True
End Sub

Private Sub Label8_Click()
TextBox2 = ""
TextBox3 = ""
TextBox4 = ""
TextBox5 = ""
TextBox6 = ""
TextBox7 = ""
TextBox8 = ""
TextBox9 = ""
TextBox10 = ""
TextBox11 = ""
TextBox12 = ""
TextBox13 = ""
TextBox14 = ""
TextBox15 = ""
End Sub

'Private Sub UserForm_Activate()
'Sheets("Foglio1").Select
'End Sub
Private Sub UserForm_Initialize()


'metto i riferimenti al workbook
'che contiene la UserForm e ai fogli
'del workbook
Set wk = ThisWorkbook
With ThisWorkbook
Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
Set sh3 = .Worksheets("Foglio3")

Set sh4 = .Worksheets("Foglio4")
Set sh5 = .Worksheets("Foglio5")

Set sh6 = .Worksheets("Foglio6")


End With
'adesso all'interno della UserForm posso
'utilizzare sh1/sh2/sh3 per riferirmi
'ai 3 fogli
End Sub


Sub K()


If TextBox1 = "" Then
MsgBox "Inserisci Identificativo"
TextBox1.SetFocus
Exit Sub
End If

Set sh1 = .Worksheets("Foglio1")

Whit sh1
Dim c As Object
For Each c In Range("A2:N900")


Dim x As String
x = UserForm4.TextBox1.Value

If c = x Then
c.Select
Y = c.Value
TextBox2 = c.Offset(0, -3).Value
TextBox3 = c.Offset(0, -2).Value
TextBox4 = c.Offset(0, -1).Value
TextBox5 = c.Value
TextBox6 = c.Offset(0, 1).Value
TextBox7 = c.Offset(0, 2).Value
TextBox8 = c.Offset(0, 3).Value
TextBox9 = c.Offset(0, 4).Value
TextBox10 = c.Offset(0, 5).Value
TextBox11 = c.Offset(0, 6).Value
TextBox12 = c.Offset(0, 7).Value
TextBox13 = c.Offset(0, 8).Value
TextBox14 = c.Offset(0, 9).Value
TextBox15 = c.Offset(0, 10).Value


Dim irisposta As Integer
irisposta = MsgBox("Trovato " & Y & ". Vuoi fermarti ?", vbYesNo)
If irisposta = vbYes Then
Exit For
End If
End If

Next c
End With
End Sub

Sub W()
If TextBox1 = "" Then
MsgBox "Inserisci Identificativo"
TextBox1.SetFocus
Exit Sub
End If

'Set sh1 = .Worksheets("Foglio1")
Whit sh1


Set sh1 = .Worksheets("Foglio1")

End Sub

Sub J()


If TextBox1 = "" Then
MsgBox "Inserisci Identificativo"
TextBox1.SetFocus
Exit Sub
End If

Set sh1 = .Worksheets("Foglio1")

Whit sh1
Dim m As Object
For Each m In Range("A2:N900")


Dim x As String
x = UserForm4.TextBox1.Value

If m = x Then
m.Select
Y = m.Value
TextBox2 = m.Value
TextBox3 = m.Offset(0, 1).Value
TextBox4 = m.Offset(0, 2).Value
TextBox5 = m.Offset(0, 3).Value
TextBox6 = m.Offset(0, 4).Value
TextBox7 = m.Offset(0, 5).Value
TextBox8 = m.Offset(0, 6).Value
TextBox9 = m.Offset(0, 7).Value
TextBox10 = m.Offset(0, 8).Value
TextBox11 = m.Offset(0, 9).Value
TextBox12 = m.Offset(0, 10).Value
TextBox13 = m.Offset(0, 11).Value
TextBox14 = m.Offset(0, 12).Value
TextBox15 = m.Offset(0, 13).Value


Dim irisposta As Integer
irisposta = MsgBox("Trovato " & Y & ". Vuoi fermarti ?", vbYesNo)
If irisposta = vbYes Then
Exit For
End If
End If

Next m
End With
End Sub

Sub A()
If Range("Y1") = "A" Then
If ActiveCell.Offset(-1, 0).Value = "IDENT" Then
MsgBox "Siamo a inizio elenco, impossibile salire oltre"
Exit Sub
End If


Set sh1 = .Worksheets("Foglio1")

Whit sh1
ActiveCell.Offset(-1, 0).Select
TextBox2 = ActiveCell.Offset(0, 0).Value
TextBox3 = ActiveCell.Offset(0, 1).Value
TextBox4 = ActiveCell.Offset(0, 2).Value
TextBox5 = ActiveCell.Offset(0, 3).Value
TextBox6 = ActiveCell.Offset(0, 4).Value
TextBox7 = ActiveCell.Offset(0, 5).Value
TextBox8 = ActiveCell.Offset(0, 6).Value
TextBox9 = ActiveCell.Offset(0, 7).Value
TextBox10 = ActiveCell.Offset(0, 8).Value
TextBox11 = ActiveCell.Offset(0, 9).Value
TextBox12 = ActiveCell.Offset(0, 10).Value
TextBox13 = ActiveCell.Offset(0, 11).Value
TextBox14 = ActiveCell.Offset(0, 12).Value
TextBox15 = ActiveCell.Offset(0, 13).Value
End If
End With
End Sub

Sub B()
If Range("Y1") = "B" Then
If ActiveCell.Offset(-1, 0).Value = "Enti" Then
MsgBox "Siamo a inizio elenco, impossibile salire oltre"
Exit Sub
End If


Set sh1 = .Worksheets("Foglio1")

Whit sh1
ActiveCell.Offset(-1, 0).Select
TextBox2 = ActiveCell.Offset(0, -2).Value
TextBox3 = ActiveCell.Offset(0, -1).Value
TextBox4 = ActiveCell.Offset(0, 0).Value
TextBox5 = ActiveCell.Offset(0, 1).Value
TextBox6 = ActiveCell.Offset(0, 2).Value
TextBox7 = ActiveCell.Offset(0, 3).Value
TextBox8 = ActiveCell.Offset(0, 4).Value
TextBox9 = ActiveCell.Offset(0, 5).Value
TextBox10 = ActiveCell.Offset(0, 6).Value
TextBox11 = ActiveCell.Offset(0, 7).Value
TextBox12 = ActiveCell.Offset(0, 8).Value
TextBox13 = ActiveCell.Offset(0, 9).Value
TextBox14 = ActiveCell.Offset(0, 10).Value
TextBox15 = ActiveCell.Offset(0, 11).Value
End If
End With
End Sub

Sub d()
If Range("Y1") = "d" Then
If ActiveCell.Offset(-1, 0).Value = "Riferimento P.S." Then
MsgBox "Siamo a inizio elenco, impossibile salire oltre"
Exit Sub
End If


Set sh1 = .Worksheets("Foglio1")

Whit sh1
ActiveCell.Offset(-1, 0).Select
TextBox2 = ActiveCell.Offset(0, -3).Value
TextBox3 = ActiveCell.Offset(0, -2).Value
TextBox4 = ActiveCell.Offset(0, -1).Value
TextBox5 = ActiveCell.Offset(0, 0).Value
TextBox6 = ActiveCell.Offset(0, 1).Value
TextBox7 = ActiveCell.Offset(0, 2).Value
TextBox8 = ActiveCell.Offset(0, 3).Value
TextBox9 = ActiveCell.Offset(0, 4).Value
TextBox10 = ActiveCell.Offset(0, 5).Value
TextBox11 = ActiveCell.Offset(0, 6).Value
TextBox12 = ActiveCell.Offset(0, 7).Value
TextBox13 = ActiveCell.Offset(0, 8).Value
TextBox14 = ActiveCell.Offset(0, 9).Value
TextBox15 = ActiveCell.Offset(0, 10).Value
End If
End With
End Sub

Sub E()
If ActiveCell.Offset(1, 0).Value = "" Then
MsgBox "Siamo a fine elenco, impossibile proseguire"
Exit Sub
End If


Set sh1 = .Worksheets("Foglio1")

Whit sh1
ActiveCell.Offset(1, 0).Select
TextBox2 = ActiveCell.Offset(0, 0).Value
TextBox3 = ActiveCell.Offset(0, 1).Value
TextBox4 = ActiveCell.Offset(0, 2).Value
TextBox5 = ActiveCell.Offset(0, 3).Value
TextBox6 = ActiveCell.Offset(0, 4).Value
TextBox7 = ActiveCell.Offset(0, 5).Value
TextBox8 = ActiveCell.Offset(0, 6).Value
TextBox9 = ActiveCell.Offset(0, 7).Value
TextBox10 = ActiveCell.Offset(0, 8).Value
TextBox11 = ActiveCell.Offset(0, 9).Value
TextBox12 = ActiveCell.Offset(0, 10).Value
TextBox13 = ActiveCell.Offset(0, 11).Value
TextBox14 = ActiveCell.Offset(0, 12).Value
TextBox15 = ActiveCell.Offset(0, 13).Value
End With
End Sub


Sub F()
If ActiveCell.Offset(1, 0).Value = "" Then
MsgBox "Siamo a fine elenco, impossibile proseguire"
Exit Sub
End If


Set sh1 = .Worksheets("Foglio1")

With sh1
ActiveCell.Offset(1, 0).Select
TextBox2 = ActiveCell.Offset(0, -2).Value
TextBox3 = ActiveCell.Offset(0, -1).Value
TextBox4 = ActiveCell.Offset(0, 0).Value
TextBox5 = ActiveCell.Offset(0, 1).Value
TextBox6 = ActiveCell.Offset(0, 2).Value
TextBox7 = ActiveCell.Offset(0, 3).Value
TextBox8 = ActiveCell.Offset(0, 4).Value
TextBox9 = ActiveCell.Offset(0, 5).Value
TextBox10 = ActiveCell.Offset(0, 6).Value
TextBox11 = ActiveCell.Offset(0, 7).Value
TextBox12 = ActiveCell.Offset(0, 8).Value
TextBox13 = ActiveCell.Offset(0, 9).Value
TextBox14 = ActiveCell.Offset(0, 10).Value
TextBox15 = ActiveCell.Offset(0, 11).Value
End With
End Sub

Sub g()
If ActiveCell.Offset(1, 0).Value = "" Then
MsgBox "Siamo a fine elenco, impossibile proseguire"
Exit Sub
End If


Set sh1 = .Worksheets("Foglio1")

With sh1
ActiveCell.Offset(1, 0).Select
TextBox2 = ActiveCell.Offset(0, -3).Value
TextBox3 = ActiveCell.Offset(0, -2).Value
TextBox4 = ActiveCell.Offset(0, -1).Value
TextBox5 = ActiveCell.Offset(0, 0).Value
TextBox6 = ActiveCell.Offset(0, 1).Value
TextBox7 = ActiveCell.Offset(0, 2).Value
TextBox8 = ActiveCell.Offset(0, 3).Value
TextBox9 = ActiveCell.Offset(0, 4).Value
TextBox10 = ActiveCell.Offset(0, 5).Value
TextBox11 = ActiveCell.Offset(0, 6).Value
TextBox12 = ActiveCell.Offset(0, 7).Value
TextBox13 = ActiveCell.Offset(0, 8).Value
TextBox14 = ActiveCell.Offset(0, 9).Value
TextBox15 = ActiveCell.Offset(0, 10).Value
End With
End Sub

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As
Integer)
If CloseMode <> 1 Then Cancel = 1
End Sub

la parte di select case è una di quelle che in seguito studierò come
migliorare perchè non è certo il massimo

Fabrizio

unread,
Dec 16, 2009, 5:35:25 AM12/16/09
to
> > Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft....
> End If ...
>
> leggi tutto- Nascondi testo citato

>
> - Mostra testo citato -

scusa questo l'ho aggiunto dopo per vedere se così funzionasse anche
se secondo me non ci andava


Set sh1 = .Worksheets("Foglio1")

perche' già messo in Private Sub UserForm_Initialize()

Mauro Gamberini

unread,
Dec 16, 2009, 5:50:26 AM12/16/09
to
<cut>

Dove hai l'errore?
Puoi gentilmente riportare la/le riga/he
dove hai l'errore?

Fabrizio

unread,
Dec 16, 2009, 6:20:17 AM12/16/09
to
On 16 Dic, 11:50, "Mauro Gamberini"

Sub J()


If TextBox1 = "" Then
MsgBox "Inserisci Identificativo"
TextBox1.SetFocus
Exit Sub
End If

Whit sh1 qui mi da' l' errore su tutti i codici dove l'ho
utilizzato

Mauro Gamberini

unread,
Dec 16, 2009, 6:37:12 AM12/16/09
to
> Whit sh1 qui mi da' l' errore su tutti i codici dove l'ho
>

Che tipo di errore?
Cosa dice l'avviso?

Fabrizio

unread,
Dec 16, 2009, 6:45:10 AM12/16/09
to
On 16 Dic, 12:37, "Mauro Gamberini"

Sub, Function o Property non definita (errore 35)

Mauro Gamberini

unread,
Dec 16, 2009, 6:56:03 AM12/16/09
to
> Whit sh1 qui mi da' l' errore su tutti i codici dove l'ho
>

With e non Whit

Fabrizio

unread,
Dec 16, 2009, 7:20:15 AM12/16/09
to
On 16 Dic, 12:56, "Mauro Gamberini"

ops scusa, ma non va ugualmente
Sub W()


If TextBox1 = "" Then
MsgBox "Inserisci Identificativo"
TextBox1.SetFocus
Exit Sub
End If

With sh1

Dim d As Object
'Dim Y As String
For Each d In Range("A2:N900")


Dim x As String
x = UserForm4.TextBox1.Value

If d = x Then
d.Select

Y = d.Value "adesso l'ERRORE lo da qui"


TextBox2 = d.Offset(0, -2).Value
TextBox3 = d.Offset(0, -1).Value
TextBox4 = d.Value
TextBox5 = d.Offset(0, 1).Value
TextBox6 = d.Offset(0, 2).Value
TextBox7 = d.Offset(0, 3).Value
TextBox8 = d.Offset(0, 4).Value
TextBox9 = d.Offset(0, 5).Value
TextBox10 = d.Offset(0, 6).Value
TextBox11 = d.Offset(0, 7).Value
TextBox12 = d.Offset(0, 8).Value
TextBox13 = d.Offset(0, 9).Value
TextBox14 = d.Offset(0, 10).Value
TextBox15 = d.Offset(0, 11).Value
Dim irisposta As Integer
irisposta = MsgBox("Trovato " & Y & ". Vuoi fermarti ?", vbYesNo)
If irisposta = vbYes Then
Exit For
End If
End If
Next d
End With
End Sub

il tipo di errore è: Variabile non definita
leggendo l' help di vba avevo pensato di inserire :
Option Explicit


'dichiaro le variabili visibili
'da tutta la UserForm
Private wk As Workbook
Private sh1 As Worksheet
Private sh2 As Worksheet
Private sh3 As Worksheet
Private sh4 As Worksheet
Private sh5 As Worksheet
Private sh6 As Worksheet

Private Y As String
così non mi da errore ma non funziona

se ti sto scocciando dimmelo capisco di essere un po' invadente

Mauro Gamberini

unread,
Dec 16, 2009, 9:20:47 AM12/16/09
to
> se ti sto scocciando dimmelo capisco di essere un po' invadente
>

Nessun problema(per ora).
Se non rispondo pi� oggi,
lo faccio domani, pi� tardi
devo uscire.

Vediamo un po'...

Se ho capito bene vuoi confrontare
il valore delle celle del Range A2:N900
con il valore della TextBox1.

Public Sub W()

If Len(Me.TextBox1.Text) = 0 Then
MsgBox "Inserisci Identificativo"
Me.TextBox1.SetFocus
Exit Sub
End If

Dim rng As Range
Dim c As Range

Set rng = sh1.Range("A2:N900")

For Each c in rng
If c.Value = Me.TextBox1.Text Then
'il codice se � uguale
Else
'il codice se � diverso
End If
Next

Set c = Nothing
Set rng = Nothing

End Sub

Assumendo che sh sia il riferimento al Foglio1.

Inoltre.
Utilizza le propriet� degli oggetti:

TextBox2.Text = qualcosa
e non
TextBox2 = qualcosa

Prova un po'.

Fabrizio

unread,
Dec 16, 2009, 12:31:58 PM12/16/09
to
On 16 Dic, 15:20, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> > se ti sto scocciando dimmelo capisco di essere un po' invadente
>
> Nessun problema(per ora).
> Se non rispondo più oggi,
> lo faccio domani, più tardi

> devo uscire.
>
> Vediamo un po'...
>
> Se ho capito bene vuoi confrontare
> il valore delle celle del Range A2:N900
> con il valore della TextBox1.

>
> Public Sub W()
>
>     If Len(Me.TextBox1.Text) = 0 Then
>         MsgBox "Inserisci Identificativo"
>         Me.TextBox1.SetFocus
>         Exit Sub
>     End If
>
>     Dim rng As Range
>     Dim c As Range
>
>     Set rng = sh1.Range("A2:N900")
>
>     For Each c in rng
>         If c.Value = Me.TextBox1.Text Then

>             'il codice se è uguale
>         Else
>             'il codice se è diverso


>         End If
>     Next
>
> Set c = Nothing
> Set rng = Nothing
>
> End Sub
>
> Assumendo che sh sia il riferimento al Foglio1.
>
> Inoltre.

> Utilizza le proprietà degli oggetti:


>
> TextBox2.Text = qualcosa
> e non
> TextBox2 = qualcosa
>
> Prova un po'.
>
> --
> ---------------------------
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threads

Ho creato un nuovo file dove c'è una tabella di tre colonne dove la
colonna A è quella che uso per ricercare i dati, dove c'è una userform
con un pulsante una ComboBox e tre TextBox dopo varie prove questo è
il codice che sembra funzionare

Private Sub CommandButton1_Click()
Dim wk As Workbooks
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim sh4 As Worksheet
Dim sh5 As Worksheet
Dim sh6 As Worksheet


If Len(Me.ComboBox1.Text) = 0 Then
MsgBox "Inserisci Identificativo"
Me.ComboBox1.SetFocus
Exit Sub
End If
Dim rn As Range
Dim c As Range
Set rn = Range("A1:A10")
Set sh1 = Worksheets("Foglio1")' Questa riga l'ho aggiunta dopo per la
disperazione, anche se non mi sembra poi una gran bestialità
With sh1
For Each c In rn
If c.Value = Me.ComboBox1.Text Then
Y = c.Value
TextBox1 = c.Value 'Qui si ferma il codice quando il foglio 1 è
nascosto, stavolta non riesco a spiegarmi perchè
TextBox2 = c.Offset(0, 1).Value
TextBox3 = c.Offset(0, 2).Value


Dim irisposta As Integer
irisposta = MsgBox("Trovato " & Y & ". Vuoi fermarti ?", vbYesNo)
If irisposta = vbYes Then
Exit For

End If
End If
Next c
End With
Set c = Nothing
Set rn = Nothing

End Sub


Funziona benissimo se non nascondo i fogli altrimenti nel punto dove
ti ho segnalato sul codice si blocca.
Mi sta venendo il mal di testa tutta questa fatica per riscrivere il
codice e siamo da capo, e la cosa che mi rattrista è che io sono al
massimo delle mie conoscenze( anzi grazie a te le ho superate di un
bel pezzettino).

Fabrizio

unread,
Dec 16, 2009, 12:49:14 PM12/16/09
to
> > Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft....
> bel pezzettino).- Nascondi testo citato

>
> - Mostra testo citato -
Private Sub CommandButton1_Click()
Dim wk As Workbooks
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim sh3 As Worksheet
Dim sh4 As Worksheet
Dim sh5 As Worksheet
Dim sh6 As Worksheet


If Len(Me.ComboBox1.Text) = 0 Then
MsgBox "Inserisci Identificativo"
Me.ComboBox1.SetFocus
Exit Sub
End If
Dim rn As Range
Dim c As Range
Set rn = Range("A1:A10")
Set sh1 = Worksheets("Foglio1")

With sh1
For Each c In rn
If c.Value = Me.ComboBox1.Text Then
Y = c.Value

Me.TextBox1.Text = c.Value
Me.TextBox2.Text = c.Offset(0, 1).Value
Me.TextBox3.Text = c.Offset(0, 2).Value


Dim irisposta As Integer
irisposta = MsgBox("Trovato " & Y & ". Vuoi fermarti ?", vbYesNo)
If irisposta = vbYes Then
Exit For

End If
End If
Next c
End With
Set c = Nothing
Set rn = Nothing

End Sub


ho fatto anche queste modifiche ma niente non so più cosa fare

Scossa

unread,
Dec 16, 2009, 1:36:27 PM12/16/09
to
On 16 Dic, 18:49, Fabrizio <trum...@gmail.com> wrote:


> Set rn = Range("A1:A10")
> Set sh1 = Worksheets("Foglio1")

Ciao Fabrizio,
non ho seguito molto il thread e forse mi intrometto a sproposito,
ma rn = range("A1:A10") a quale foglio si riferisce?
Secondo me sarebbe buona norma rispettare la gerarchia: prima definire
(eventualmente) il workbook, poi il/i worksheets poi i vari range.

Quindi se rn è un range di "Foglio1":

Set sh1 = Worksheets("Foglio1")

Set rn = sh1.Range("A1:A10")


> With sh1

A cosa serve impostare with su sh1 se non ne fai nessun riferimento?

Eventualmente deposita il file su un server di sharing.

Bye!
Scossa

Fabrizio

unread,
Dec 16, 2009, 8:48:22 PM12/16/09
to
Grazie ormai son andato in bambola si in effetti hai ragione, in
questo momento non ho il file a disposizione perchè sto rispondendo
dal pc del lavoro. il problema è che se nascondo il foglio 1 non
funziona più

Mauro Gamberini

unread,
Dec 17, 2009, 4:38:33 AM12/17/09
to
Vabb�, saliamo in cattedra... ;-)

Nella tua routine, fai il Set del Range
(cio� metti un riferimento al Range
A2:N900) *senza indicare* a quale
foglio ti riferisci.

La giusta sequenza sarebbe questa:
Dichiaro le variabili con(che sono
solo dichiarate e non fanno riferimento
a nulla)
Quindi faccio il Set delle variabili indicando
a quale oggetto fanno riferimento.
La cosa, in questo caso, ha un suo
ordine ben preciso:

1)indico il workbook sul quale ho il codice
2)indico quale foglio di quel workbook
3)indico quale range di quel foglio

Nel codice che hai postato vedo qualcosa di diverso.


Ho creato un nuovo file dove c'� una tabella di tre colonne dove la
colonna A � quella che uso per ricercare i dati, dove c'� una userform
con un pulsante una ComboBox e tre TextBox dopo varie prove questo �


il codice che sembra funzionare

****************************************************

L'ho fatto anch'io.
Questo il codice della UserForm:

'dichiaro le variabili visibili
'da tutta la UserForm
Private wk As Workbook
Private sh1 As Worksheet
Private sh2 As Worksheet
Private sh3 As Worksheet

Private Sub UserForm_Initialize()
'metto un riferimento al workbook
'con il codice e ai suoi fogli
Set wk = ThisWorkbook
With wk


Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
Set sh3 = .Worksheets("Foglio3")

End With
'carico la ComboBox(questo �
'uno dei tanti modi per farlo)
With Me.ComboBox1
.RowSource = sh1.Name & "!A1:A10"
End With
End Sub

Private Sub CommandButton1_Click()
'richiamo la routine di ricerca
'passandole il valore da ricercare
Call mRicerca(Me.ComboBox1.Text)
End Sub

Private Sub ComboBox1_Click()
'richiamo la routine di ricerca
'passandole il valore da ricercare
Call mRicerca(Me.ComboBox1.Text)
End Sub

Private Sub mRicerca(ByVal v As Variant)

If Len(Me.ComboBox1.Text) = 0 Then

MsgBox "Selezionare un valore"
Exit Sub
End If

'dichiaro le variabili
Dim c As Range
Dim rng As Range

'pulisco le TextBox dai dati
'precedenti
Call mVuotaTextBox

With sh1
'metto un riferimento al Range
'A1:A10 del Foglio1
Set rng = .Range("A1:A10")
'ciclo il Range
For Each c In rng
'se il valore di c � ugale
'al valore passato come parametro
If c.Value = v Then
'riempi le TextBox
Me.TextBox1.Text = _
c.Value
Me.TextBox2.Text = _
c.Offset(0, 1).Value
Me.TextBox3.Text = _
c.Offset(0, 2).Value
End If
Next
End With

End Sub

Private Sub mVuotaTextBox()
'pulisco le TextBox
With Me
.TextBox1.Text = ""
.TextBox2.Text = ""
.TextBox3.Text = ""
End With
End Sub

Private Sub UserForm_Terminate()


'Set a Nothing delle variabili oggetto
Set sh3 = Nothing
Set sh2 = Nothing
Set sh1 = Nothing
Set wk = Nothing
End Sub

E qui trovi il file:
http://www.maurogsc.eu/esemping/foglionascosto.zip

E come vedi, il Foglio1 � nascosto,
per� tutto funziona. Nascosto, non
protetto. Perch� se parliamo di protezione
(quale e dove?) dobbiamo aggiungere
qualcosa.

Mauro Gamberini

unread,
Dec 17, 2009, 4:47:04 AM12/17/09
to
<cut>

A s�, dimenticavo...
Perch� utilizzi un pulsante per validare la scelta
che hai fatto nella ComboBox?
Il codice postato e che trovi nel file,
ti mostra come sia possibile chiamare la
routine di ricerca direttamente con la
scelta fatta nella ComboBox.
La routine � chiamata *anche* dal
CommandButton. Questi i due eventi:

Private Sub CommandButton1_Click()
'richiamo la routine di ricerca
'passandole il valore da ricercare
Call mRicerca(Me.ComboBox1.Text)
End Sub

Private Sub ComboBox1_Click()
'richiamo la routine di ricerca
'passandole il valore da ricercare
Call mRicerca(Me.ComboBox1.Text)
End Sub


Commenta o elimina
l'evento che non ti serve.

Fabrizio

unread,
Dec 17, 2009, 12:08:59 PM12/17/09
to
On 17 Dic, 10:47, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> <cut>
>
> A sì, dimenticavo...
> Perchè utilizzi un pulsante per validare la scelta

> che hai fatto nella ComboBox?
> Il codice postato e che trovi nel file,
> ti mostra come sia possibile chiamare la
> routine di ricerca direttamente con la
> scelta fatta nella ComboBox.
> La routine è chiamata *anche* dal

> CommandButton. Questi i due eventi:
>
> Private Sub CommandButton1_Click()
>     'richiamo la routine di ricerca
>     'passandole il valore da ricercare
>     Call mRicerca(Me.ComboBox1.Text)
> End Sub
>
> Private Sub ComboBox1_Click()
>     'richiamo la routine di ricerca
>     'passandole il valore da ricercare
>     Call mRicerca(Me.ComboBox1.Text)
> End Sub
>
> Commenta o elimina
> l'evento che non ti serve.
>
> --
> ---------------------------
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threads

Grazie, sei gentilissimo, però ieri ho notato che se usavo Option
Explicit poi non potevo dichiarare più variabili all'interno del
codice perchè non le riconosce(questo mi sembra di aver capito
leggendo l' help di excel),
in realtà io ho bisogno di poter continuare la ricerca dello stesso
criterio nella tabella se esistono altri dati con che corrispondono
allo stesso criterio, io usavo questo per farlo


Set sh1 = Worksheets("Foglio1")
Set rn = Range("A1:A10")

With sh1
For Each c In rn
If c.Value = Me.ComboBox1.Text Then

Y = c.Value '(in pratica non mi riconosce questa variabile e quindi
non mi fa funzionare il codice, ho provato a metterla nella parte dove
dichiaro le altre macredo per miei limiti non va')


Me.TextBox1.Text = c.Value
Me.TextBox2.Text = c.Offset(0, 1).Value

Me.TextBox3.Text = c.Offset(0, 2).Value


Dim irisposta As Integer
irisposta = MsgBox("Trovato " & Y & ". Vuoi fermarti ?", vbYesNo)
If irisposta = vbYes Then
Exit For

Next c
risali ancora in cattedra please! comunque sia ti ringrazio perchè ho
imparato tantissimo con il tuo aiuto in questo lavoro

Mauro Gamberini

unread,
Dec 17, 2009, 12:34:39 PM12/17/09
to
Grazie, sei gentilissimo, per� ieri ho notato che se usavo Option
Explicit poi non potevo dichiarare pi� variabili all'interno del
codice perch� non le riconosce(questo mi sembra di aver capito

leggendo l' help di excel),
**********************************************

Allora...

Option Explicit c'� in tutti i miei moduli,
ci mancherebbe! A volte non li posto
nelle risposte, ma se guardi i moduli degli
esempi, c'� sempre!


in realt� io ho bisogno di poter continuare la ricerca dello stesso


criterio nella tabella se esistono altri dati con che corrispondono
allo stesso criterio, io usavo questo per farlo

************************************************

Partiamo dal file scaricabile qui:
http://www.maurogsc.eu/esemping/foglionascosto.zip

Io per fare quanto chiedi, farei cos�:

Private Sub mRicerca(ByVal v As Variant)

If Len(Me.ComboBox1.Text) = 0 Then
MsgBox "Selezionare un valore"
Exit Sub
End If

'dichiaro le variabili
Dim c As Range
Dim rng As Range

Dim lRisposta

'pulisco le TextBox dai dati
'precedenti
Call mVuotaTextBox

With sh1
'metto un riferimento al Range
'A1:A10 del Foglio1
Set rng = .Range("A1:A10")
'ciclo il Range
For Each c In rng
'se il valore di c � ugale
'al valore passato come parametro
If c.Value = v Then
'riempi le TextBox
Me.TextBox1.Text = _
c.Value
Me.TextBox2.Text = _
c.Offset(0, 1).Value
Me.TextBox3.Text = _
c.Offset(0, 2).Value

lRisposta = MsgBox(Prompt:="Vuoi continuare.", _
Title:="Trovato un riscontro", _
Buttons:=vbYesNo + vbQuestion)
If lRisposta = vbNo Then
Exit Sub
End If


End If
Next
End With

End Sub


Sostituendo con questa, la routine
con lo stesso nome che hai nel
file scaricato.

Mauro Gamberini

unread,
Dec 17, 2009, 12:37:47 PM12/17/09
to
<cut>

Ovviamente metti 2 o pi� valori uguali in colonna A
se vuoi vedere come funziona... ;-)

Fabrizio

unread,
Dec 17, 2009, 1:04:39 PM12/17/09
to
On 17 Dic, 18:37, "Mauro Gamberini"
<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> <cut>
>
> Ovviamente metti 2 o più valori uguali in colonna A

> se vuoi vedere come funziona... ;-)
>
> --
> ---------------------------
> Maurfunziona o Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threads

Grazie ora funziona perfettamente, faccio ancora degli errori nel
scrivere codici ma mi sto avvicinando,
visto che ci sono ti chiedo due cosette che leggendo il tuo codice non
mi sono molto chiare
Private Sub mRicerca(ByVal v As Variant) perchè ?
Dim iRisposta non hai dato nessun valore cosa significa?

Mauro Gamberini

unread,
Dec 17, 2009, 2:05:18 PM12/17/09
to
Grazie ora funziona perfettamente, faccio ancora degli errori nel
scrivere codici ma mi sto avvicinando,
********************************

Tutti facciamo ancora degli errori.


visto che ci sono ti chiedo due cosette che leggendo il tuo codice non
mi sono molto chiare

Private Sub mRicerca(ByVal v As Variant) perch� ?
******************************************

Vuol dire che la routine si
aspetta un valore di tipo Variant.
Di tipo variant perch� io non so
che tipo di valore stai cercando,
anche se, a dire il vero, sia
la TextBox che la ComboBox
restituiscono una String dalla propriet�
Text.
Il click sul pulsante, ad esempio,
chiama la routine e le passa il valore
che ha la ComboBox:

Private Sub CommandButton1_Click()
'richiamo la routine di ricerca
'passandole il valore da ricercare
Call mRicerca(Me.ComboBox1.Text)
End Sub

Private Sub mRicerca(ByVal v As Variant)

'codice
'qui v ha il valore
'che hai passato fra le
'parentesi quando hai
'chiamato la Sub dal
'CommandButton


If c.Value = v Then

'codice

End Sub


Dim iRisposta non hai dato nessun valore cosa significa?

******************************************

S� che l'ho valorizzato!

lRisposta = MsgBox(Prompt:="Vuoi continuare.", _
Title:="Trovato un riscontro", _
Buttons:=vbYesNo + vbQuestion)
If lRisposta = vbNo Then
Exit Sub
End If

In pratica passo il valore restituito dal pulsante
che hai premuto. Poi controllo il valore
nell' If e in base a quello eseguo o
meno codice.

Grazie per l'attenzione e buona serata.

Fabrizio

unread,
Dec 18, 2009, 5:54:35 AM12/18/09
to
On 17 Dic, 20:05, "Mauro Gamberini"

<maurogscRIMUOV...@RIMUOVEREaliceposta.it> wrote:
> Grazie ora  funziona perfettamente, faccio ancora degli errori nel
> scrivere codici ma mi sto avvicinando,
> ********************************
>
> Tutti facciamo ancora degli errori.
>
> visto che ci sono ti chiedo due cosette che leggendo il tuo codice non
> mi sono molto chiare
> Private Sub mRicerca(ByVal v As Variant) perchè ?

> ******************************************
>
> Vuol dire che la routine si
> aspetta un valore di tipo Variant.
> Di tipo variant perchè io non so

> che tipo di valore stai cercando,
> anche se, a dire il vero, sia
> la TextBox che la ComboBox
> restituiscono una String dalla proprietà

> Text.
> Il click sul pulsante, ad esempio,
> chiama la routine e le passa il valore
> che ha la ComboBox:
>
> Private Sub CommandButton1_Click()
>     'richiamo la routine di ricerca
>     'passandole il valore da ricercare
>     Call mRicerca(Me.ComboBox1.Text)
> End Sub
>
> Private Sub mRicerca(ByVal v As Variant)
>
>     'codice
>     'qui v ha il valore
>     'che hai passato fra le
>     'parentesi quando hai
>     'chiamato la Sub dal
>     'CommandButton
>     If c.Value = v Then
>     'codice
>
> End Sub
>
> Dim  iRisposta non hai dato nessun valore cosa significa?
> ******************************************
>
> Sì che l'ho valorizzato!

>
>                 lRisposta = MsgBox(Prompt:="Vuoi continuare.", _
>                     Title:="Trovato un riscontro", _
>                     Buttons:=vbYesNo + vbQuestion)
>                 If lRisposta = vbNo Then
>                     Exit Sub
>                 End If
>
> In pratica passo il valore restituito dal pulsante
> che hai premuto. Poi controllo il valore
> nell' If e in base a quello eseguo o
> meno codice.
>
> Grazie per l'attenzione e buona serata.
>
> --
> ---------------------------
> Mauro Gamberinihttp://www.riolab.org/http://www.maurogsc.eu/http://social.microsoft.com/Forums/it-IT/officeit/threads

Grazie a te, sei stato gentilissimo

Mauro Gamberini

unread,
Dec 18, 2009, 6:16:29 AM12/18/09
to
> Grazie a te, sei stato gentilissimo
>

;-)

0 new messages