Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при обращении к листу... / 11 сообщений из 11, страница 1 из 1
29.11.2011, 13:12
    #37549757
AleksandraN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
Доброго времени суток!
При обращении к листу появляется ошибка "Application defined or object defined error"
Код: plaintext
1.
2.
3.
4.
5.
    For i =  1  To Worksheets.Count
      If Worksheets(i).Name = "LIST" Then
        ' что-то
      End If
    Next i
Появляется ошибка только когда Worksheets(i).Name = "LIST"...
Причем макрос какое-то время нормально работал, потом перестал...
...
Рейтинг: 0 / 0
29.11.2011, 13:14
    #37549760
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
...
Рейтинг: 0 / 0
29.11.2011, 13:40
    #37549862
AleksandraN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
Konst_One, тут дело даже не в цикле... я просто к листу обратиться не могу
Код: plaintext
1.
  Worksheets( 1 ).Activate
та же ошибка...
...
Рейтинг: 0 / 0
29.11.2011, 13:56
    #37549898
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
Код: plaintext
worksheets( 1 ).select 
...
Рейтинг: 0 / 0
29.11.2011, 13:58
    #37549905
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
у вас скорее всего Workbook отстутсвует
...
Рейтинг: 0 / 0
29.11.2011, 14:44
    #37550052
AleksandraN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
Konst_One, да нет, есть и листы есть...
вот полный текст
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
 Private Function IsWorkSheetExist(sName As String) As Boolean
 Dim c As Object
 On Error GoTo errНandle:
    Set c = Sheets(sName)
    IsWorkSheetExist = True
  Exit Function
errНandle:
    IsWorkSheetExist = False
End Function

Private Sub Workbook_Open()
    
    If Not (IsWorkSheetExist("LIST")) Then
      With Worksheets.Add
          .Name = "LIST"
          .Visible = False
      End With
    End If
    CreateMacros
    Worksheets( 1 ).Activate
End Sub

...
Рейтинг: 0 / 0
29.11.2011, 15:00
    #37550085
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
Какой же это полный текст?
Где процедура CreateMacros?
...
Рейтинг: 0 / 0
29.11.2011, 15:28
    #37550167
AleksandraN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
Shocker.Pro, вот :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Sub CreateMacros()
    'MacrosText = MacrosText + "Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) "
    MacrosText = MacrosText + "Private Sub Worksheet_SelectionChange(ByVal Target As Range, Cancel As Boolean) "
    MacrosText = MacrosText & Chr( 13 ) + "     RefreshData " & Chr( 13 ) + "End Sub "
    
    For Each iVBComponent In ThisWorkbook.VBProject.VBComponents
      If iVBComponent.CodeModule.Find("Sub" & _
                iProcedure$,  1 ,  1 , iVBComponent.CodeModule.CountOfLines,  1 ) = False Then
          iVBComponent.CodeModule.AddFromString (MacrosText)
      End If
    Next
    
End Sub

а вот RefreshData на всякий случай (хотя врядли в ней дело, RefreshData работает стабильно):
Код: plaintext
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.
Sub RefreshData()
'
' Макрос1 Макрос
    s = ActiveSheet.Cells( 1 , ActiveCell.Column)
    p = InStr(s, "|")
    a = ActiveSheet.Cells(ActiveCell.Row,  1 )
  If ((ActiveSheet.Name <> "Титульный лист") And (ActiveSheet.Name <> "LIST") And (ActiveSheet.Cells( 1 , ActiveCell.Column) <> "") And (p >  0 ) And (ActiveSheet.Cells(ActiveCell.Row,  1 ) <> "")) Then
    'Создается сессия
    Set objSession = CreateObject("OracleInProcServer.XOraSession")
    'Происходит соединение
    Set objDataBase = objSession.OpenDatabase(Sheets("Титульный лист").Cells( 10 ,  3 ), Sheets("Титульный лист").Cells( 11 ,  3 ) + "/" + Sheets("Титульный лист").Cells( 12 ,  3 ),  0 &)
    Dim oSheet As Object
    Dim oCell As Object
    
    Set oSheet = ActiveSheet
   ' Set oCell = ActiveCell
    ' Связываем переменные

    objDataBase.Parameters.Add "mlt",  1 ,  1 
    objDataBase.Parameters.Add "clf",  6 ,  1 
    objDataBase.Parameters.Add "cls", ActiveSheet.Cells(ActiveCell.Row,  1 ),  1 
    objDataBase.Parameters.Add "sgn", Mid(s, p +  1 ),  1 
    objDataBase.Parameters.Add "dvs", Mid(s,  1 , p -  1 ),  1 
    objDataBase.Parameters.Add "obj", ActiveSheet.Cells(ActiveCell.Row,  2 ),  1 
    DvsVsn = ""
    For i =  1  To ActiveSheet.UsedRange.Columns.Count
      s1 = ActiveSheet.Cells( 1 , i)
      p1 = InStr(s1, "|")
      If (p1 >  0 ) And (ActiveSheet.Cells(ActiveCell.Row, i) <> "") Then
        DvsVsn = DvsVsn + Mid(s1,  1 , p1 -  1 ) + "|" + CStr(ActiveSheet.Cells(ActiveCell.Row, i)) + ";"
      End If
    Next i
    objDataBase.Parameters.Add "dvsvsn", DvsVsn,  2 
   'Создаем объект, куда будет помещен результат выполнения запроса. strSQL - это текст запроса
    strSQL = "SELECT vsn.vsn_id, decode(vsn.vsn_id, 0, 'Не требуется', nvl(nvl(valchar, valnum),valdate)), valchar, valnum, valdate name FROM TABLE (ap_exp_system_us.excelvsnset (:mlt, :clf, :cls, :sgn, :dvs, :obj, :dvsvsn)) t, vsn, vds where vsn.sgn_id = :sgn and vds.mlt_id = :mlt and vds.clf_id = :clf and vds.cls_id = :cls and vds.sgn_id = vsn.sgn_id and vds.vsn_id = vsn.vsn_id and vds.dvs_id = :dvs and( vsn.vsn_id = t.column_value or t.column_value is null) order by valchar, valnum, valdate"
    Set qurVSN = objDataBase.DBCreateDynaset(strSQL,  0 &)
       
    If qurVSN.RecordCount >  0  Then
      qurVSN.MoveFirst
      For i =  1  To qurVSN.RecordCount
        Sheets("LIST").Cells(i,  1 ) = qurVSN.Fields( 0 ).Value
        Sheets("LIST").Cells(i,  2 ) = qurVSN.Fields( 1 ).Value
        qurVSN.MoveNext
      Next i
    End If
    
    'выпадающий список
    ActiveSheet.Unprotect ("incon")
    
    With Selection.Validation
      .Delete
      If qurVSN.RecordCount >  0  Then
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator _
         :=xlBetween, Formula1:="=LIST!$B$1:$B$" + CStr(qurVSN.RecordCount)
      Else
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator _
         :=xlBetween, Formula1:="=LIST!C1:C1"
      End If
      .IgnoreBlank = False
      .InCellDropdown = True
      .InputTitle = ""
      .ErrorTitle = "    Внимание!"
      .InputMessage = ""
      .ErrorMessage = "                Значение не подтверждено правилами!"
      .ShowInput = True
      .ShowError = True
    End With
   ' ActiveSheet.Protect ("incon")
    
  End If
End Sub
...
Рейтинг: 0 / 0
29.11.2011, 17:59
    #37550622
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
у меня на все это безобразие вообще эксель падает
...
Рейтинг: 0 / 0
30.11.2011, 08:02
    #37551248
sergeyvg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
узкие места: (хотя я пробовал разные комбинации, все работало)
Код: plaintext
.Visible = False
думаю некоторые операторы работы со скрытым листом могут в дальнейшем привести к проблемам.
Код: plaintext
Worksheets( 1 ).Activate
неизвестно какой в действительности лист станет активным, что также может привести к проблемам, лучше с именем работать.
...
Рейтинг: 0 / 0
30.11.2011, 08:40
    #37551279
AleksandraN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ошибка при обращении к листу...
спасибо всем большое! Разобралась!
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при обращении к листу... / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]