Moderatori: Anthony47, Flash30005
Anthony47 ha scritto:
- Codice: Seleziona tutto
Case Is = 2 'B..
Target.Offset(0, 1).Select '..C
Case Is = 3 'C..
Target.Offset(0, 3).Select '..F
Case Is = 6 'F..
Target.Offset(0, 2).Select '..H
Case Is = 8 'H..
Target.Offset(0, 1).Select '..I
Case Is = 9 'I..
Target.Offset(0, 7).Select '..P
Case Is = 16 'P..
Target.Offset(1, -14).Select '..B+1
Anthony47 ha scritto:Ma quale e' la versione di Office che utilizzate?
Anthony47 ha scritto:Quanto alla tua situazione relativamente alla "Convalida", puoi provare a usare lo stile "Avviso" o "Informazione" (sono scelte impostabili nel tab "Messaggio di errore" del wizard di Convalida); in questo modo puoi accettare anche input diversi da quelli inizialmente in Elenco di convalida. Cosa fare dopo dipende non solo dalla creatività ma anche dalla capacità implementativa.
Anthony47 ha scritto:Per il BBingo, meglio chiamato Bullshit Bingo, puoi guardare qui: viewtopic.php?f=26&t=113273
Anthony47 ha scritto:b) se la voce immessa non e' nell'elenco di convalida, puo' essere convertita in una voce standard utilizzando un dizionario di sinonimi..
Il significato di questo codice e' facile da spiegare:Se non chiedo troppo mi spiegheresti questa parte dello script fornito prima che non l'ho capito?..
Anthony47 ha scritto:Quanto alla tua situazione relativamente alla "Convalida", puoi provare a usare lo stile "Avviso" o "Informazione" (sono scelte impostabili nel tab "Messaggio di errore" del wizard di Convalida); in questo modo puoi accettare anche input diversi da quelli inizialmente in Elenco di convalida. Cosa fare dopo dipende non solo dalla creatività ma anche dalla capacità implementativa. Es:
a) non si fa niente (questa e' facile )
b) se la voce immessa non e' nell'elenco di convalida, puo' essere convertita in una voce standard utilizzando un dizionario di sinonimi..
c) ..oppure la si aggiunge alle voci di convalida
Anthony47 ha scritto:Eh, lo devi fare nella solita macro di WorksheetChange:
-se il valore appartiene all'elenco di convalida, tutto ok;
-se non appartiene? Qui interviene la tua creatività e tutto il resto.
Mi pare che tu vorresti controllare quanto inputato con una tabella di sinonimi, e se trovi il sinonimo inserirlo al posto del valore caricato; se non c'e' un sinonimo? Ripristina il valore precedente e chiedi una nuova scelta? Bacchettate all'operatore? (o al progettista?)
=DATI.ORDINA(UNICI(Z1:Z100;;1))
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cvArea As String, cvElenco As Range, myCk
Dim DizArea As Range
'
'Parametri>>>:
cvArea = "H1:H25" 'Area Convalidata
Set cvElenco = Sheets("Foglio2").Range("B1:B100") 'Area con le voci di convalida
Set DizArea = Sheets("Foglio2").Range("L1:M100") 'Area del Dizionario
'
'Controlla se va fatta la verifica:
If Target.Count = 1 And (Not Application.Intersect(Target, Range(cvArea)) Is Nothing) Then
myCk = Application.WorksheetFunction.CountIf(cvElenco, Target.Value) 'Controlla se l'input e' in elenco
If myCk = 0 And Target.Value <> "" Then 'Non c'è
Application.EnableEvents = False
myCk = Application.VLookup(Target.Value, DizArea, 2, False) 'Cerca.Vert nel dizionario
If IsError(myCk) Then 'Non c'è:
With cvElenco.Cells(1, 1).End(xlDown).Offset(1, 0) 'Va in fondo all'elenco...
.Value = Target.Value '...ci aggiunge quel valore
.Interior.Color = RGB(255, 200, 200) '...e lo coloora in rossastro
End With
Else 'Se trova quella voce...
Target.Value = myCk '...sostituisce l'input
End If
Application.EnableEvents = True
End If
End If
End Sub
Anthony47 ha scritto:E' possibile impostare la convalida in modo che non segnali nessun errore, senza pero' poter fare distinzione tra i vari casi.
Il mio suggerimento e' che imposti lo stile=Informazione, che ti propone come risposta di default "Ok" facilitando in questo modo la conferma (che puo' anche essere data con il lettore a barre, leggendo una "label" con solo 1 carattere)
Anthony ha scritto:Il file usa funzioni disponibili in XL2021 (e 365)
Dim cvArea As String, cvElenco As Range, myCk
Dim DizArea As Range
'
'Parametri>>>:
cvArea = "H2:H201" 'Area Convalidata
Set cvElenco = Sheets("MERCI").Range("B16:B100") 'Area con le voci di convalida
Set DizArea = Sheets("MERCI").Range("D2:E50") 'Area del Dizionario
'
'Controlla se va fatta la verifica:
If Target.Count = 1 And (Not Application.Intersect(Target, Range(cvArea)) Is Nothing) Then
MsgBox "Procedo?"
myCk = Application.WorksheetFunction.CountIf(cvElenco, Target.Value) 'Controlla se l'input e' in elenco
If myCk = 0 And Target.Value <> "" Then 'Non c'è
Application.EnableEvents = False
myCk = Application.VLookup(Target.Value, DizArea, 2, False) 'Cerca.Vert nel dizionario
If IsError(myCk) Then 'Non c'è:
With cvElenco.Cells(1, 1).End(xlDown).Offset(1, 0) 'Va in fondo all'elenco...
.Value = Target.Value '...ci aggiunge quel valore
.Interior.Color = RGB(255, 200, 200) '...e lo coloora in rossastro
End With
Else 'Se trova quella voce...
Target.Value = myCk '...sostituisce l'input
End If
Application.EnableEvents = True
End If
End If
Torna a Applicazioni Office Windows
Prelevare dati da www.forebet.com usando i Driver Selenium Autore: AndreaDeBiagi |
Forum: Applicazioni Office Windows Risposte: 5 |
Codice per popolare celle con condizione Autore: ucame |
Forum: Applicazioni Office Windows Risposte: 3 |
Inserire in colonna dati presi da altra colonna Autore: Ricky0185 |
Forum: Applicazioni Office Windows Risposte: 4 |
Visitano il forum: Anthony47, Gianca532011 e 14 ospiti