Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

VBA per sostituire cerca_vert

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 per sostituire cerca_vert

Postdi deniel69 » 29/12/14 18:10

Buon giorno a tutti, eccomi qui con un nuovo quesito.

Nel Foglio1 ho una tabella che devo popolare con dei dati presenti
in una tabella del foglio 2.

Sino a qui tutto ok, con i due codici seguenti, uno nel foglio1
e l'altro in un modulo, tutto funzionante.

Ora i problemi sono due.

1-Non riesco a mettere un controllo con messaggio se L'indice presente in Foglio1 e "A1" è mancante.
2-Non so come fare per fare un controllo nel foglio2 con eventuale messaggio se l'indice da cercare in colonna 1
è doppio!

Ora come ora se l'indice è mancante pulisco i campi e semplicemente rimangono vuoti e se è doppio nel foglio2
mi restituisce l'ultimo.

'In Foglio1

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Cells.Count <> 1 Then Exit Sub
If Target.Row = 1 And Target.Column = 1 Then
Range("A1").Activate
Call Cerca_Vert2
End If
End Sub


'Nel Modulo

Sub Cerca_Vert2()
Dim valore As String
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lUltRiga As Long

Set sh1 = Worksheets("Foglio1")
Set sh2 = Worksheets("Foglio2")
valore = sh1.Range("A1").Value
With sh1
lUltRiga = sh2.Range("A" & Rows.Count).End(xlUp).Row

sh1.Range("B1").Clear
sh1.Range("C2").Clear
sh1.Range("D3").Clear

For a = 1 To lUltRiga

If sh2.Range("A" & a).Value = valore Then
sh1.Range("B1").Value = sh2.Range("B" & a).Value
sh1.Range("C2").Value = sh2.Range("C" & a).Value
sh1.Range("D3").Value = sh2.Range("D" & a).Value
End If

Next

End With
End Sub


Grazie a tutti !!!!!! :) 8) :undecided:
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Sponsor
 

Re: VBA per sostituire cerca_vert

Postdi Anthony47 » 29/12/14 19:33

Perdona, ma dovresti dire che cosa vuoi ottenere, trascurando l' ipotesi che lo possiamo capire esaminando due macro che quella cosa non la fanno...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: VBA per sostituire cerca_vert

Postdi deniel69 » 29/12/14 20:06

Ok ,come ho scritto vorrei inserire un controllo con messaggio se L'indice che cerco nella tebella del foglio2 in colonna "A" è mancante (l'indice da cercare è in Foglio1 cella "A1").

Al tempo stesso voglio inserire un controllo con messaggio e uscita dalla sub nel caso l'indice cercato nella tabella non sia univoco
e qundi doppio.

E credo che entrambi debbano essere inseriti prima di questa parte del codice.

For a = 1 To lUltRiga

If sh2.Range("A" & a).Value = valore Then
sh1.Range("B1").Value = sh2.Range("B" & a).Value
sh1.Range("C2").Value = sh2.Range("C" & a).Value
sh1.Range("D3").Value = sh2.Range("D" & a).Value
End If

Next

Ricapitolando:
Devo inserire due controlli ,presenza indice in tabella ed univocità dell'indice ,e per entrambi uscita da sub e messaggio di errore.

Spero di essere stato chiaro.
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Re: VBA per sostituire cerca_vert

Postdi Flash30005 » 30/12/14 02:18

Non è ancora molto chiaro ma... proviamo così:

Inserisci le righe evidenziate con <<<<
tra le righe esistenti nella macro del modulo
Codice: Seleziona tutto
lUltRiga = sh2.Range("A" & Rows.Count).End(xlUp).Row

Esist = Application.WorksheetFunction.CountIf(sh2.Range("A1:A" & lUltRiga), valore) '<<<< riga aggiunta
    If Esist = 0 Then
        MsgBox "Valore non presente"        ' <<<< riga aggiunta
        Exit Sub                            ' <<<< riga aggiunta
    End If                                  ' <<<< riga aggiunta
    If Esist > 1 Then
        MsgBox "Valore presente " & Esist & " volte"       ' <<<< riga aggiunta
        Exit Sub                            ' <<<< riga aggiunta
    End If
 
sh1.Range("B1").Clear
sh1.Range("C2").Clear
sh1.Range("D3").Clear
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: VBA per sostituire cerca_vert

Postdi deniel69 » 30/12/14 08:54

8) :) Buon giorno a tutti, problema risolto egregiamente.

Non ero padrone della ==> Application.WorksheetFunction.CountIf.....

Posto la stringa completa alla quale ho aggiunto semplicemente quale valore è dippio nel messaggi.

Sub Cerca_Vert2_controlli()
Dim valore As String
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim lUltRiga As Long

Set sh1 = Worksheets("Foglio1")
Set sh2 = Worksheets("Foglio2")
valore = sh1.Range("A1").Value

With sh1

lUltRiga = sh2.Range("A" & Rows.Count).End(xlUp).Row

Esist = Application.WorksheetFunction.CountIf(sh2.Range("A1:A" & lUltRiga), valore) '<<<< riga aggiunta

If Esist = 0 Then
MsgBox "Valore non presente" ' <<<< riga aggiunta
Exit Sub ' <<<< riga aggiunta
End If ' <<<< riga aggiunta
If Esist > 1 Then
MsgBox "Il valore " & valore & " è presente No. " & Esist & " volte" ' <<<< riga aggiunta
Exit Sub ' <<<< riga aggiunta
End If

sh1.Range("B1").Clear
'sh1.Range("C2").Clear
'sh1.Range("D3").Clear

For a = 1 To lUltRiga

If sh2.Range("A" & a).Value = valore Then
sh1.Range("B1").Value = sh2.Range("B" & a).Value
sh1.Range("C2").Value = sh2.Range("C" & a).Value
sh1.Range("D3").Value = sh2.Range("D" & a).Value
End If

Next
End With
End Sub


Grazie a tutti ....post risolto! 8) :lol:
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43


Torna a Applicazioni Office Windows


Topic correlati a "VBA per sostituire cerca_vert":


Chi c’è in linea

Visitano il forum: patel e 3 ospiti