Страницы: 1
RSS
ComboBox1.Clear ошибка
 
Уважаемые гуру при нажатии клавиш del,backspace,escape(чтобы очистить форму) combo box активен выдает ошибку следующего типа:  
run-time error '381': Could not get the List property.Invalid property array index.  
 
Вот код из user form:  
 
Option Explicit  
Private Sub Combobox1_Change()  
Dim iSotrud As String  
   iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)  
    If ActiveSheet.AutoFilterMode Then  
   Range("b1").AutoFilter Field:=2, Criteria1:=iSotrud  
   End If  
   UserForm2.StartUpPosition = 2  
End Sub  
Private Sub CommandButton1_Click()  
Selection.AutoFilter Field:=2  
End Sub  
Private Sub UserForm_Initialize()  
   Dim AllCells As Range, Cell As Range  
   Dim NoDupes As New Collection  
   Dim i As Integer, j As Integer  
   Dim Swap1, Swap2, Item  
   Set AllCells = Range("b2:b" & Cells(Rows.Count, 2).End(xlUp).Row)  
   On Error Resume Next  
   For Each Cell In AllCells  
       NoDupes.Add Cell.Value, CStr(Cell.Value)  
   Next Cell  
   On Error GoTo 0  
   For i = 1 To NoDupes.Count - 1  
       For j = i + 1 To NoDupes.Count  
           If NoDupes(i) > NoDupes(j) Then  
               Swap1 = NoDupes(i)  
               Swap2 = NoDupes(j)  
               NoDupes.Add Swap1, before:=j  
               NoDupes.Add Swap2, before:=i  
               NoDupes.Remove i + 1  
               NoDupes.Remove j + 1  
           End If  
       Next j  
   Next i  
   For Each Item In NoDupes  
       UserForm2.ComboBox1.AddItem Item  
   Next Item  
End Sub  
 
почему не получается очистить форму ?  
где ошибка?
 
На этой строке?  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)  
 
Может потому, что при пустом значении ListIndex = -1 и это стоит отслеживать?  
If Me.ComboBox1 = "" then exit sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
да на строке  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
 
{quote}{login=kacagevici}{date=07.10.2010 03:27}{thema=}{post}да на строке  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex){/post}{/quote}И? Я ж написал, что сделать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
{quote}{login=The_Prist}{date=07.10.2010 03:29}{thema=Re: }{post}{quote}{login=kacagevici}{date=07.10.2010 03:27}{thema=}{post}да на строке  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex){/post}{/quote}И? Я ж написал, что сделать.{/post}{/quote}  
 
Option Explicit  
Private Sub Combobox1_Change()  
Dim iSotrud As String  
   iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex = -1)  
    If ActiveSheet.AutoFilterMode Then  
   Range("b1").AutoFilter Field:=2, Criteria1:=iSotrud  
   End If  
   UserForm2.StartUpPosition = 2  
End Sub  
Private Sub CommandButton1_Click()  
Selection.AutoFilter Field:=2  
End Sub  
Private Sub UserForm_Initialize()  
   Dim AllCells As Range, Cell As Range  
   Dim NoDupes As New Collection  
   Dim i As Integer, j As Integer  
   Dim Swap1, Swap2, Item  
   Set AllCells = Range("b2:b" & Cells(Rows.Count, 2).End(xlUp).Row)  
   On Error Resume Next  
   For Each Cell In AllCells  
       NoDupes.Add Cell.Value, CStr(Cell.Value)  
   Next Cell  
   On Error GoTo 0  
   For i = 1 To NoDupes.Count - 1  
       For j = i + 1 To NoDupes.Count  
           If NoDupes(i) > NoDupes(j) Then  
               Swap1 = NoDupes(i)  
               Swap2 = NoDupes(j)  
               NoDupes.Add Swap1, before:=j  
               NoDupes.Add Swap2, before:=i  
               NoDupes.Remove i + 1  
               NoDupes.Remove j + 1  
           End If  
       Next j  
   Next i  
   For Each Item In NoDupes  
       UserForm2.ComboBox1.AddItem Item  
   Next Item  
End Sub  
 
 
-1 я поставил а остальное подскажи пожалуйста в какую строку ).
 
Вот же блин...не так Вы все поняли. На фиг не надо -1.  
 
Private Sub Combobox1_Change()  
If Me.ComboBox1 = "" then exit sub  
Dim iSotrud As String  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
{quote}{login=The_Prist}{date=07.10.2010 03:42}{thema=}{post}Вот же блин...не так Вы все поняли. На фиг не надо -1.  
 
Private Sub Combobox1_Change()  
If Me.ComboBox1 = "" then exit sub  
Dim iSotrud As String  
iSotrud = Me.ComboBox1.List(Me.ComboBox1.ListIndex){/post}{/quote}  
думаю быстрее будет только с файлом )))  
а то выдает только ошибки.
 
Попробуйте такой вариант для ComboBox1_Change:  
 
Private Sub ComboBox1_Change()  
 On Error Resume Next  
 Dim s As String  
 s = ComboBox1.Value  
 With ActiveSheet  
   If .AutoFilterMode Then  
     If Len(s) = 0 Then  
       .ShowAllData  
     Else  
       .AutoFilter.Range.AutoFilter 2, s  
     End If  
   End If  
 End With  
 'UserForm2.StartUpPosition = 2  
End Sub
 
{quote}{login=ZVI}{date=08.10.2010 05:17}{thema=}{post}Попробуйте такой вариант для ComboBox1_Change:  
 
Private Sub ComboBox1_Change()  
 On Error Resume Next  
 Dim s As String  
 s = ComboBox1.Value  
 With ActiveSheet  
   If .AutoFilterMode Then  
     If Len(s) = 0 Then  
       .ShowAllData  
     Else  
       .AutoFilter.Range.AutoFilter 2, s  
     End If  
   End If  
 End With  
 'UserForm2.StartUpPosition = 2  
End Sub{/post}{/quote}  
 
 
то что надо! спасибо огромное!
Страницы: 1
Читают тему
Loading...