convalida dati

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
patrik01
00domenica 24 gennaio 2016 09:11
Ciao a tutti.
Devo obbligare ad inserire solo una " X " in un range con la convalida dati.
Un aiuto?
Grazie in anticipo.
patrik
federico460
00domenica 24 gennaio 2016 09:59
ciao
per favore metti un mini esempio
in un file e allegalo
detta così non è chiaro
grazie
patrik01
00domenica 24 gennaio 2016 10:40
Ciao,
deve funzionare su excel 2003/2007.
patrik
cromagno
00domenica 24 gennaio 2016 11:27
Ciao a tutti,
@patrik
basta che selezioni il range C2:C25, vai su "convalida dati",
dal menu a tendina alla voce "Consenti" scegli "Elenco" e nel campo "Origine" inserisci semplicemente una x .

Ti riallego il file...

P.S.
Il messaggio di errore puoi personalizzarlo sempre dalla finestra del convalida dati alla scheda "Messaggio di errore".
rollis13
00domenica 24 gennaio 2016 12:58
Visto che si tratta in inserire una sola possibilità, la "X" in pratica, quando imposti la convalida, come ti ha suggerito cromagno, approfitterei per togliere la spunta su "Elenco nella cella" in modo da non mostrate la lista a tendina di un solo elemento.
cromagno
00domenica 24 gennaio 2016 13:06
Ciao rollis,
hai perfettamente ragione [SM=g27811]
patrik01
00domenica 24 gennaio 2016 17:46
Grazie a tutti è o.k.! [SM=g27811]
Un' altra cosa.
A questa macro, che serve a selezionare e poi stampare, ho aggiunto la parte nel tratteggio

Sub filtra_X()

ActiveSheet.Unprotect "123456"
Application.ScreenUpdating = False


'--------------------------------------------
If Range("C2:C5000") = "X" Then 
MsgBox "non c'è niente da cancellare!", vbCritical + vbOKOnly, "Attenzione!" 'OK
Exit Sub
End If
'--------------------------------------------


    ActiveSheet.Range("$A$1:$C$5000").AutoFilter Field:=3, Criteria1:="="
    Range("A2").Select
    ActiveWindow.SmallScroll Down:=9
    Range("A2:C5000").Select
    
            
ActiveSheet.Protect "123456"
ActiveSheet.Protect Password:="123456", Contents:=True, Scenarios:=True, AllowFiltering:=True


  ActiveSheet.PrintPreview

Application.ScreenUpdating = True

Range("A2").Select
    
End Sub



mi dà errore.
Deve funzionare:
se nel range C2:C5000 non è presente una X non stampare.
Grazie ancora a tutti.
patrik
cromagno
00domenica 24 gennaio 2016 18:05
Ciao,
potresti provare così:

Sub filtra_X()
Dim Confronto As Long

ActiveSheet.Unprotect "123456"
Application.ScreenUpdating = False
 
 
'--------------------------------------------
Confronto = Application.WorksheetFunction.CountIf(Range("C2:C5000"), "x")
If Confronto = 0 Then
    MsgBox "non c'è niente da cancellare!", vbCritical + vbOKOnly, "Attenzione!" 'OK
Exit Sub
End If
'--------------------------------------------
 
 
    ActiveSheet.Range("$A$1:$C$5000").AutoFilter Field:=3, Criteria1:="="
    Range("A2").Select
    ActiveWindow.SmallScroll Down:=9
    Range("A2:C5000").Select
     
             
ActiveSheet.Protect "123456"
ActiveSheet.Protect Password:="123456", Contents:=True, Scenarios:=True, AllowFiltering:=True
 
 
  ActiveSheet.PrintPreview
 
Application.ScreenUpdating = True
 
Range("A2").Select
     
End Sub


EDIT
Occhio alla "x" minuscola o maiuscola....
Altrimenti utilizza l'istruzione:

Option Compare Text


prima della sub (all'inizio del modulo).
patrik01
00domenica 24 gennaio 2016 18:14
Ciao cromagno.
mi sembra funzioni.
L'errore è nella convalida dati: accetta solo la x come inserito.
patrik
cromagno
00domenica 24 gennaio 2016 18:16
Re:
patrik01, 24/01/2016 18:14:

Ciao cromagno.
mi sembra funzioni.
L'errore è nella convalida dati: accetta solo la x come inserito.
patrik




Scusa, non era quello che volevi???
Che accettasse solo la x.....
patrik01
00domenica 24 gennaio 2016 18:20
Mi sono spiegato male.
La macro funziona è nella convalida che non va.
Ho inserito una x in minuscolo e accetta solo questa.
Se è in maiuscolo X dà errore.
E' possibile che accetti tutte e due?
patrik
cromagno
00domenica 24 gennaio 2016 18:29
Allora, nel campo "Origine" del "convalida dati" devi mettere:

x;X

non solo x

Ma a questo punto ti conviene aggiungere l' "Option Compare Text" che ti dicevo prima all'inizio del modulo:

'Option Explicit
Option Compare Text

Sub filtra_X()
Dim Confronto As Long

ActiveSheet.Unprotect "123456"
Application.ScreenUpdating = False
 
 
'--------------------------------------------
Confronto = Application.WorksheetFunction.CountIf(Range("C2:C5000"), "x")
If Confronto = 0 Then
    MsgBox "non c'è niente da cancellare!", vbCritical + vbOKOnly, "Attenzione!" 'OK
Exit Sub
End If
'--------------------------------------------
 
 
    ActiveSheet.Range("$A$1:$C$5000").AutoFilter Field:=3, Criteria1:="="
    Range("A2").Select
    ActiveWindow.SmallScroll Down:=9
    Range("A2:C5000").Select
     
             
ActiveSheet.Protect "123456"
ActiveSheet.Protect Password:="123456", Contents:=True, Scenarios:=True, AllowFiltering:=True
 
 
  ActiveSheet.PrintPreview
 
Application.ScreenUpdating = True
 
Range("A2").Select
     
End Sub
patrik01
00domenica 24 gennaio 2016 20:06
Ciao cromagno,
ora è o.k. [SM=g27811] [SM=g27811] [SM=g27811]
Grazie a tutti.
patrik
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 07:28.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com