scopiazzando qua e là, ho buttato giù la macro che segue.
Sostanzialmente:
- verifico se il valore che inserisco nella cella C4 del foglio1 (partita iva) è presente nella tabella/"db" del foglio2 (stessa cartella):
se vero, mi rende alcune informazioni presenti in tabella/"db" (ne ho inserito solo una parte); se falso, mi restituisce una MsgBox, che mi suggerisce l'inserimento dei dati (per il popolamneto della tabella/"db" stessa, che effettuerò con la sub Copia)
2 domande:
la prima: vorrei, se possibile, inserire direttamente la "sub copia" dopo aver inserito tutti i dati, senza passare per il "click" sul pulsante ad essa associato. (Nessun campo deve rimanere vuoto, nel caso indicato b6, b8, c6, c8).
la seconda: la prima colonna della tabella/"db" è un contatore, che ora ho impostato con la funzione SE (che controlla la presenza della piva); vorrei però inserirlo sempre nel codice,ma o mi va in errore, o mi parte da 0. (esercizio 1 della prima ora di un qualsiasi corso vba, immagino... e io mi perdo!!! )
Sperando di essere stata sufficientemente chiara, attendo un vostro aiuto.
Grazie,
zorea
ps: nella sub copia la riga di codice Set originedati= Sheets(1).Range("B2:F2") è perchè "qui dentro" ho messo i dati che ho inserito ex-novo, per "ordinarl"i rispetto alla tabella/"db"
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("C4")) Is Nothing Then
Exit Sub
Else
Dim CL As Object
X = [C4].Value
Set originedati= Sheets(2).Range("B2:B200")
For Each CL In originedati
If CL.Value = X Then
[B6] = CL.Offset(0, 1).Value 'nome azienda
[B8] = CL.Offset(0, 2).Value 'telefono
[C6] = CL.Offset(0, 3).Value 'referente
[C8] = CL.Offset(0, 4).Value 'e-mail referente
Exit Sub
End If
Next
MsgBox "P.IVA non presente. Verificare o inserire i campi evidenziati in giallo."
Range("B6,B8,C6,C8").ClearContents
End If
End Sub
Sub Copia()
Application.ScreenUpdating = False
Set originedati= Sheets(1).Range("B2:F2")
Sheets(2).Activate
Dim iRow As Integer
iRow = 1
With Worksheets("Foglio2")
While .Cells(iRow, 2).Value <> ""
iRow = (iRow + 1)
Wend
.Cells(iRow, 2).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Sheets(1).Activate
Application.CutCopyMode = False
Range("B6,B8,C4,C6,C8").ClearContents
End Sub