Pytanie : VBA pomoc

Cześć,

I am using the kod dołączać 2 listboxes wewnątrz przodować.  Ono pracować dla przed, ale teraz, ono filtrować i wystawiać the rezultat w the "Analiza worksheet.  Ono tylko wystawiać the zupełny dataset.  Jaki modyfikacja I potrzebować tak, że the kod filtrować mój dataset?
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
Private Okręt podwodny CommandButton3_Click ()

Application.ScreenUpdating = Fałszywy

Ciemnawy ws1 Jako Worksheet, ws2 Jako Worksheet, rng Pasmo, cel Jako Pasmo, i Długo, sList1 Jako Sznurek, sList2 Sznurek
Ciemnawy cCont Kontrola


Set ws1 = Worksheets ("Dane")
Set ws2 = Worksheets ("Analiza")

sList1 = ""
sList2 = ""

Jeżeli ListBox1.Selected ((0)) = Prawdziwy Wtedy
    sList1 = ""
Inny
 Dla i = (0) ListBox1.ListCount - (1)
    Jeżeli ListBox1.Selected (i) Wtedy
        sList1 = sList1 & "|" & ListBox1.List (i)
    Kończyć Jeżeli
 Następnie i
 Jeżeli sList1 = "" Wtedy
    sList1 = ""
    ListBox1.Selected ((0)) = Prawdziwy
 Inny
    sList1 = sList1 & "|"
 Kończyć Jeżeli
 
Kończyć Jeżeli

Jeżeli ListBox2.Selected ((0)) = Prawdziwy Wtedy
    sList2 = ""
Inny
 Dla i = (0) ListBox2.ListCount - (1)
   Jeżeli ListBox2.Selected (i) Wtedy
      sList2 = sList2 & "|" & ListBox2.List (i)
   Kończyć Jeżeli
 Następnie i
 Jeżeli sList2 = "" Wtedy
    sList2 = ""
    ListBox2.Selected ((0)) = Prawdziwy
 Inny
   sList2 = sList2 & "|"
 Kończyć Jeżeli
Kończyć Jeżeli

Jeżeli ws2.UsedRange.Cells.Count > (1) Wtedy ws2.UsedRange.Clear
ws1. [A1: AX1]. Odbitkowy Miejsce przeznaczenia: =ws2. [A16]

Ustalony rng = ws1.Range (ws1. [A17], ws1.Cells (ws1.Rows.Count, "A"). Końcówka (xlUp))

Dla Rng cel W rng
  Jeżeli UCase (sList1) = "" Lub InStr (sList1, "|" & cel. Wartość & "|") <> (0) Wtedy
     Jeżeli UCase (sList2) = "" Lub InStr (sList2, "|" & cel. Odsadzka ((0), 1).Value & "|") <> (0) Wtedy
  cel. Resize ((1), 50). Kopiować Miejsce przeznaczenia: =ws2.Cells (ws2.Rows.Count, "A"). Końcówka (xlUp). Odsadzka (1)
     Kończyć Jeżeli
  Kończyć Jeżeli
Następny cel

Rozładowywać

Application.ScreenUpdating = Prawdziwy

Końcówka Okręt podwodny

Intymny Okręt podwodny CommandButton4_Click ()
Rozładowywać
Kończyć Okręt podwodny

Intymny Okręt podwodny UserForm1_Initialize ()
ListBox1.Selected ((0)) = Prawdziwy
ListBox2.Selected ((0)) = Prawdziwy

Końcówka Okręt podwodny

Odpowiedź : VBA pomoc

I myśleć twój kod kopiować wszystkie the rząd przez th struktura the "jeżeli" klauzula wszystkie:

Dla Rng cel W rng
  Jeżeli UCase (sList1) = "" Lub InStr (sList1, "|" & cel. Wartość & "|") <> (0) Wtedy
     Jeżeli UCase (sList2) = "" Lub InStr (sList2, "|" & cel. Odsadzka ((0), 1).Value & "|") <> (0) Wtedy
  cel. Resize ((1), 50). Kopiować Miejsce przeznaczenia: =ws2.Cells (ws2.Rows.Count, "A"). Końcówka (xlUp). Odsadzka (1)
     Kończyć Jeżeli
  Kończyć Jeżeli
Następny cel

W istocie the pierwszy "jeżeli" wybór the rząd LUB jeżeli slist1 być puste miejsce, lub jeżeli tam  być dopasowanie. The sekunda "jeżeli" robić the slist2 dla slist2.

Mój domysł być kod ty zamierzać być zamierzać jak the kod pod:
(1):
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Dla Rng cel W rng
  'jeżeli slist1 być puste miejsce, czek slist2:
  Jeżeli UCase (sList1) = "" wtedy
     Jeżeli InStr (sList2, "|Odsadzka ((0), 1).Value & "|") <> (0) wtedy
     cel. Resize ((1), 50). Kopiować Miejsce przeznaczenia: =ws2.Cells (ws2.Rows.Count, "A"). Końcówka (xlUp). Odsadzka (1)
     kończyć jeżeli
  inny
  'jeżeli slist1 być pusty czek dla dopasowanie w slist1
     jeżeli InStr (sList1, "|Wartość & "|") <> (0) Wtedy
     cel. Resize ((1), 50). Kopiować Miejsce przeznaczenia: =ws2.Cells (ws2.Rows.Count, "A"). Końcówka (xlUp). Odsadzka (1)
     kończyć jeżeli
kończyć jeżeli

Następny cel
Inne rozwiązania  
 
programming4us programming4us