Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Messaggio di errore se digiti determinati numeri

Ultimo Aggiornamento: 07/11/2017 12:08
Post: 145
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
06/11/2017 15:33

Messaggio di errore se digiti determinati numeri
mi servirebbe che nella colonna i14:i60 se viene digitato il numero 2 oppure 3 oppure 4 mi dia errore , cioè un modo che mi faccia capire che quei numeri non possono essere scritti in quella colonna.
mi hanno aiutato a fare questo codice, funziona ma se copio incollo un rigo mi da errore.
copia dal foglio set b15:i15 e incolla su b18...mi da errore..
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long
r = Target.Row
If Not Intersect(Target, [i14:i60]) Is Nothing Then
If Target = 2 Or Target = 3 Or Target = 4 Then
Target = ""
MsgBox "qui va messo solo codice presenza"
End If
End If
End Sub

vi allego un esempio
excel 2003
Post: 145
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
06/11/2017 15:41

per togliere la protezione al file basta cliccare il tasti 1 nel foglio riep
excel 2003
Post: 1.656
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
06/11/2017 17:27

Ciao
se copi un range di più colonne, nel tuo caso excel va in errore perchè non può calcolare il valore del range essendo lo stesso composto da più colonne.
Pertanto si rende necessario leggere il target colonna per colonna e, una volta individuata la colonna interessata (la 9 nel tuo caso) fare sul valore di quella colonna i controlli

Probabilmente ci sarà un sistema diverso da quello che ti sottopongo.

Note:
- quando utilizzi gli "eventi" devi prudentemente disabilitare gli eventi e ripristinarli alla fine.

- naturalmente la copia deve interessare un rigo per volta, altrimenti bisognerebbe controllare tutti i valori per ciascun rigo copiato.

- Nella tua Sub minuti() gli eventi non vengono ripristinati!!!


saluti e testa bene il codice

Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Long, i As Integer
Application.EnableEvents = False
On Error GoTo errore:
r = Target.Row
If Target.Rows.Count > 1 Then
    MsgBox "non puoi copiare più di 1 rigo alla volta"
    GoTo xit
End If
If Not Intersect(Target, [i14:i60]) Is Nothing Then
    For i = 1 To Target.Columns.Count
        If Target.Columns(i).Column = 9 Then
            If Target.Columns(i).Value = 2 Or _
                Target.Columns(i).Value = 3 Or _
                Target.Columns(i).Value = 4 Then
                Target.Columns(i).Value = ""
                MsgBox "qui va messo solo codice presenza"
            End If
        End If
    Next i
End If
xit:
Application.EnableEvents = True
Exit Sub
errore:
MsgBox Err.Number & " - " & Err.Description
Resume xit
End Sub




[Modificato da dodo47 06/11/2017 17:48]
Domenico
Win 10 - Excel 2016
Post: 146
Registrato il: 02/04/2010
Città: MILANO
Età: 54
Utente Junior
2002
OFFLINE
07/11/2017 12:08

ok funziona...grazie
excel 2003
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 04:06. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com