PDA

Visualizza versione completa : Ricerca di un Determnato dato e copiare L'intera riga di dati da un altra parte del


A.Maurizio
22-02-2018, 06.43.47
Ciao a Tutti mi chiamo Maurizio
E il mio Problema e questo : Sul Foglio1 sto tentando di creare un mio Database e fin qui tutto bene.
Il Problema viene fuori quando attraverso una ListBox inserita in un Userform dovrebbe ricercare il nome ho il cognome che sia di un determinato cliente.
però se lascio inserito solo le prime tre voci mi coordina il tutto in modo perfetto ; E mi copia i dati provati nella Riga (J2) in poi.
Al contrario però : Se tento di estendere a tutto il resto del Database la mia procedura continua ad impallarsi.

In poche parole Vorrei che tutte le volte che trova un dato desiderato e faccio click su di esso , mi possa andare a copiare tutto il suo report a partire dalla Cella J2 in poi Grazie
La mia Procedura e questa :


Option Compare Text

Private Sub CmdCerca_Click()

' ricerca per Cognome o nome

Dim ric As String
ric = TextBox1.Text
Call cerca(ric)
End Sub

Private Sub CommandButton1_Click()
Unload UserForm1
End Sub

Private Sub Label2_Click()

End Sub

Private Sub ListBox1_Click()

' inserisce nelle celle il valore della listbox selezionato

rig = ListBox1.ListIndex
Cells(2, 10) = ListBox1.List(rig, 0)
Cells(2, 11) = ListBox1.List(rig, 1)
Cells(2, 12) = ListBox1.List(rig, 2)
Cells(2, 13) = ListBox1.List(rig, 3)
Cells(2, 13) = ListBox1.List(rig, 4)
Cells(2, 13) = ListBox1.List(rig, 5)
Unload UserForm1
End Sub

Function cerca(Optional ric As String) As Integer

uRg = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
If OptionButton1.Value = True Then cln = 1 Else cln = 5
a = 0
'ListBox1.Clear

For i = 4 To uRg
If Cells(i, cln) Like ric Then
ListBox1.Visible = True
ListBox1.AddItem Cells(i, 1).Text
ListBox1.List(a, 1) = Cells(i, 2).Text
ListBox1.List(a, 2) = Cells(i, 3).Text
ListBox1.List(a, 3) = Cells(i, 4).Text
ListBox1.List(a, 4) = Cells(i, 5).Text
ListBox1.List(a, 5) = Cells(i, 6).Text
a = a + 1
End If
Next i
End Function

Alexsandra
23-02-2018, 20.54.11
....... Non capisco .... non potrà mai funzionare.
Concettualmente è errato agire in questo modo, quando apri la form il ListBox non si vede, (proprietà visible = false ....... ) poi si devono considerare i doppioni e .....

ci sono molti metodi per cercare una frase in un range, hai scelto quello più ingarbugliato...per esempio prova questo codice

Sub Trova_Azienda()
Dim Azienda As String
Azienda = InputBox("Inserisci nome Azienda da cercare:")
Set Cerca = Cells.Find(Azienda, ActiveCell, xlFormulas, xlPart, xlByRows, xlNext, False) 'devo cercare solo nella colonna dell'aziende che è la I=9
If Cerca Is Nothing Then
MsgBox ("Azienda non presente nel databse JPS!")
Else
Cerca.Select
MsgBox ("Azienda trovata in: " & ActiveCell.Address)
End If
End Sub