powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при обращении к листу...
11 сообщений из 11, страница 1 из 1
Ошибка при обращении к листу...
    #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
Ошибка при обращении к листу...
    #37549760
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Ошибка при обращении к листу...
    #37549862
AleksandraN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_One, тут дело даже не в цикле... я просто к листу обратиться не могу
Код: plaintext
1.
  Worksheets( 1 ).Activate
та же ошибка...
...
Рейтинг: 0 / 0
Ошибка при обращении к листу...
    #37549898
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
worksheets( 1 ).select 
...
Рейтинг: 0 / 0
Ошибка при обращении к листу...
    #37549905
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас скорее всего Workbook отстутсвует
...
Рейтинг: 0 / 0
Ошибка при обращении к листу...
    #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
Ошибка при обращении к листу...
    #37550085
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой же это полный текст?
Где процедура CreateMacros?
...
Рейтинг: 0 / 0
Ошибка при обращении к листу...
    #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
Ошибка при обращении к листу...
    #37550622
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня на все это безобразие вообще эксель падает
...
Рейтинг: 0 / 0
Ошибка при обращении к листу...
    #37551248
sergeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
узкие места: (хотя я пробовал разные комбинации, все работало)
Код: plaintext
.Visible = False
думаю некоторые операторы работы со скрытым листом могут в дальнейшем привести к проблемам.
Код: plaintext
Worksheets( 1 ).Activate
неизвестно какой в действительности лист станет активным, что также может привести к проблемам, лучше с именем работать.
...
Рейтинг: 0 / 0
Ошибка при обращении к листу...
    #37551279
AleksandraN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо всем большое! Разобралась!
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Ошибка при обращении к листу...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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