Vraag : Hulp VBA

Hallo,

I am binnen uit blinkt de code in bijlage aan filter 2 gebruiken listboxes.  Het werkte voordien voor me, maar nu, zal het zal zal niet de resultaten in het aantekenvel van de „Analyse“ filtreren en tonen.  Het zal slechts de volledige dataset tonen.  Welke wijzigingen moet ik zodat de code mijn dataset maken zal filtreren?
" codeBody "
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 SubCommandButton3_Click ()

Application.ScreenUpdating = Vals

Schemerige ws1 als Aantekenvel, ws2 als Aantekenvel, rng als Waaier, cel als Waaier, I zoals lang, sList1 als Koord, sList2 als Koord
Schemerige cCont als Controle


Reeks ws1 = Aantekenvellen („Gegevens“)
Reeks ws2 = Aantekenvellen („Analyse“)

sList1 = ""
sList2 = ""

Als ListBox1.Selected (0) = Waar toen
    sList1 = ""
Anders
 Voor I = 0 aan ListBox1.ListCount - 1
    Als ListBox1.Selected (I) toen
        sList1 = sList1 & „|“ & ListBox1.List (I)
    Eind als
 Volgende I
 Als sList1 = "" toen
    sList1 = ""
    ListBox1.Selected (0) = Waar
 Anders
    sList1 = sList1 & „|“
 Eind als
 
Eind als

Als ListBox2.Selected (0) = Waar toen
    sList2 = ""
Anders
 Voor I = 0 aan ListBox2.ListCount - 1
   Als ListBox2.Selected (I) toen
      sList2 = sList2 & „|“ & ListBox2.List (I)
   Eind als
 Volgende I
 Als sList2 = "" toen
    sList2 = ""
    ListBox2.Selected (0) = Waar
 Anders
   sList2 = sList2 & „|“
 Eind als
Eind als

Als ws2.UsedRange.Cells.Count > 1 toen ws2.UsedRange.Clear
ws1. [A1: AX1]. De Bestemming van het exemplaar: =ws2. [A16]

Reeks rng = ws1.Range (ws1. [A17], ws1.Cells (ws1.Rows.Count, „A“). Eind (xlUp))

Voor Elke cel in rng
  Als UCase (sList1) = "" of InStr (sList1, „|“ & cel. Waarde & „|“) <> 0 toen
     Als UCase (sList2) = "" of InStr (sList2, „|“ & cel. Compensatie (0, 1). Waarde & „|“) <> 0 toen
  cel. Resize (1, 50). De Bestemming van het exemplaar: =ws2.Cells (ws2.Rows.Count, „A“). Eind (xlUp). Compensatie (1)
     Eind als
  Eind als
Volgende cel

Maak me leeg

Application.ScreenUpdating = Waar

Sub van het eind

Privé SubCommandButton4_Click ()
Maak me leeg
Beëindig Sub

Privé SubUserForm1_Initialize ()
ListBox1.Selected (0) = Waar
ListBox2.Selected (0) = Waar

Sub van het eind

Antwoord : Hulp VBA

Ik denk uw code alle rijen wegens Thstructuur van „als“ clausules hieronder kopi�ërt:

Voor Elke cel in rng
  Als UCase (sList1) = "" of InStr (sList1, „|“ & cel. Waarde & „|“) <> 0 toen
     Als UCase (sList2) = "" of InStr (sList2, „|“ & cel. Compensatie (0, 1). Waarde & „|“) <> 0 toen
  cel. Resize (1, 50). De Bestemming van het exemplaar: =ws2.Cells (ws2.Rows.Count, „A“). Eind (xlUp). Compensatie (1)
     Eind als
  Eind als
Volgende cel

Inderdaad de eerste „als“ oogsten de rij aan exemplaar OF als slist1 leeg is, of als er een gelijke is. De tweede „als“ het zelfde voor slist2 doet.

Mijn gissing is wat u was iets als de code hieronder van plan was:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Voor Elke cel in rng
  'als slist1 leeg is, controle slist2:
  Als UCase (sList1) = "" toen
     Als InStr (sList2, „|“ & cel. Compensatie (0, 1). Waarde & „|“) <> 0 toen
     cel. Resize (1, 50). De Bestemming van het exemplaar: =ws2.Cells (ws2.Rows.Count, „A“). Eind (xlUp). Compensatie (1)
     beëindig als
  anders
  'als slist1 geen blanco cheque voor gelijke in slist1 is
     als InStr (sList1, „|“ & cel. Waarde & „|“) <> 0 toen
     cel. Resize (1, 50). De Bestemming van het exemplaar: =ws2.Cells (ws2.Rows.Count, „A“). Eind (xlUp). Compensatie (1)
     beëindig als
beëindig als

Volgende cel
Andere oplossingen  
 
programming4us programming4us