Condividi:        

VBA EXCEL BLOCCARE L'INSERIMENTO DI UN NOME

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

VBA EXCEL BLOCCARE L'INSERIMENTO DI UN NOME

Postdi macio66 » 16/12/16 18:08

Buonasera
Uso questo codice trovato in internet e modificato per il mio uso, per bloccare l'nserimento di un nome dopo che è stato inserito per tre volte.

Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim sConta As String
Dim lConta As Long
Dim rng As Range
'
If Target.Cells.Count = 1 Then
Set rng = Me.Range(Me.Cells(2, 7).Address & ":" & Me.Cells(150, 7).Address)
If Not Intersect(Target, rng) Is Nothing Then
sConta = "=COUNTIF(g2:g150" & Target.Row & ":" & f(4) & Target.Row & "," & Target.Address & ")"
lConta = Evaluate(sConta)
If lConta > 3 Then
Beep
MsgBox "Attenzione, nome non più inseribile"
Target.Clear
Exit Sub
End If
End If
End If
'
End Sub

Private Function f(ByVal lCol As Long) As String

f = Split(Cells(1, lCol).Address( _
True, False, xlA1, False), "$")(0)

End Function
__________________________________________

Private Function f(ByVal lCol As Long) As String

f = Split(Cells(1, lCol).Address( _
True, False, xlA1, False), "$")(0)

End Function
___________________________________________

Funziona se il range di ricerca è nella tabella dove ho inserito il codice.
Il mio problema è che oltre a questa tabella, ne ho un'altra su un altro foglio (con lo stesso range di ricerca) e non so come fare per verificare, che l'inserimento del nome non sia superiore a (3).
In pratica se il nome "Massimo" è già presente due volte in una tabella, nell'altra devo poterlo inserire una sola volta (bloccando un quarto tentativo di inserimento).
Gli inserimenti li faccio tramite una UserForm.
Spero possiate darmi un'aiuto, grazie.
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Sponsor
 

Re: VBA EXCEL BLOCCARE L'INSERIMENTO DI UN NOME

Postdi patel » 16/12/16 18:58

fai 2 countif, uno per ogni tabella, poi li sommi ....
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: VBA EXCEL BLOCCARE L'INSERIMENTO DI UN NOME

Postdi patel » 16/12/16 19:25

però mi sembra molto contorto il tuo codice, io lo farei così
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Set rng1 = Range("g2:g20") ' tabella di inserimento
Set rng2 = Sheets(2).Range("a2:a20")  ' tabella nel secondo foglio
If Target.Cells.Count = 1 Then
  If Not Intersect(Target, rng1) Is Nothing Then
    sConta1 = Application.WorksheetFunction.CountIf(rng1, Target.Value)
    sConta2 = Application.WorksheetFunction.CountIf(rng2, Target.Value)
    sConta = sConta1 + sConta2
    If sConta > 3 Then
      Beep
      MsgBox "Attenzione, nome non più inseribile"
      Target.Clear
      Exit Sub
    End If
  End If
End If
End Sub
patel
Utente Senior
 
Post: 309
Iscritto il: 24/04/12 16:03

Re: VBA EXCEL BLOCCARE L'INSERIMENTO DI UN NOME

Postdi macio66 » 17/12/16 11:18

Ciao patel
Avevo già provato ad inserire un secondo countif nel mio codice e ora ho provato il tuo. Ma già al primo inserimento mi da il messaggio (nome non più inseribile). Sembra che veda già il valore >3 (non capisco)
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Re: VBA EXCEL BLOCCARE L'INSERIMENTO DI UN NOME

Postdi macio66 » 17/12/16 11:50

Ciao patel
Mi correggo, il tuo codice funziona perfettamente (la mia seconda tabella e nel foglio 3).
Grazie mille x il tuo aiuto (soprattutto x la semplificazione del codice)
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59


Torna a Applicazioni Office Windows


Topic correlati a "VBA EXCEL BLOCCARE L'INSERIMENTO DI UN NOME":


Chi c’è in linea

Visitano il forum: Nessuno e 40 ospiti