Страницы: 1
RSS
method range of object worksheet failed
 
Здравствуйте, с vba имею дело впервые и появилось несколько вопросов ответы на которые я уже отчаялся найти самостоятельно...  
Имеется книга с  
Private Sub Workbook_Open()  
   Dim Sh As Worksheet, i As Integer  
   For i = 1 To Sheets.Count  
       With Sheets(i)  
           .Unprotect  
           .Protect Scenarios:=True, UserInterfaceOnly:=True, AllowFormattingRows:=True  
       End With  
   Next  
End Sub  
и  
Private Sub ComboBox07_Change()  
ComboVal = Worksheets(2).ComboBox07.Value  
If Len(ComboVal) = 13 Then  
  For Each Code In Worksheets("ФККО").Range("A:A")  
      If Val(Code.Value) = Val(ComboVal) Then  
          Worksheets(2).Range(Cells(7, 3), Cells(7, 3)) = ComboVal  
          AcRow = Worksheets(2).Range(Cells(7, 3), Cells(7, 3)).Row  
          AcCol = Worksheets(2).Range(Cells(7, 3), Cells(7, 3)).Column  
          FKKOVal = Worksheets("ФККО").Range("B" & Code.Row).Value  
          Worksheets(2).Range(Cells(AcRow, AcCol - 1), Cells(AcRow, AcCol - 1)) = FKKOVal  
          Exit For  
      End If  
  Next Code  
End If  
End Sub  
переодически на строке Worksheets(2).Range(Cells(7, 3), Cells(7, 3)) = ComboVal возникает ошибка "method range of object worksheet failed", опытным путем было выяснено что данная ошибка возникает в версии Excel 2007 12.0.4518.1014 mso, в версиях выше (например 12.0.6550.5004) ошибки нет. Написать в требованиях версию Excel не вариант, так как книгой будут пользоваться на разных компьютерах. Заранее спасибо за возможные варианты решения проблемы.
 
А может не надо так сложно  
Worksheets(2).Range(Cells(7, 3), Cells(7, 3)) = ComboVal  
Может и так сойдет???  
Worksheets(2).Cells(7, 3) = ComboVal
 
А на будущее:  
Worksheets(2).Range(Worksheets(2).Cells(7, 3), Worksheets(2).Cells(7, 3)) = ComboVal
Я сам - дурнее всякого примера! ...
 
Worksheets(2).Range(Worksheets(2).Cells(7, 3), Worksheets(2).Cells(7, 3)) = ComboVal  
пробовал - не помогло,  
Worksheets(2).Cells(7, 3) = ComboVal - спасибо, завтра попробую
 
У Вас там ерунды понаписано. Ну, про  
Worksheets(2).Range(Cells(7, 3), Cells(7, 3)) = ComboVal  
Вам RAN писал. Вот это зачем:  
AcRow = Worksheets(2).Range(Cells(7, 3), Cells(7, 3)).Row  
AcCol = Worksheets(2).Range(Cells(7, 3), Cells(7, 3)).Column  
проще и правильней:  
AcRow = 7  
AcCol = 3  
А еще правильней вообще без них:  
Worksheets(2).Cells(7, 2) = FKKOVal  
А совсем правильно выложить файл, прочитав правила, чтоб мы не гадали, почему возникают ошибки.
Я сам - дурнее всякого примера! ...
 
Спасибо за ответы. Файл вчера выложить не мог, так как писал из дома, а он сам на работе. Код находиться на Листе1 (Форма 2), остальные листы идентичны и код на них устаревший. Диапазон выбора списка находиться на отдельном листе и теоритически недолжен меняться, от греха подальше я его скрыл. После переписывания кода по вашим советам ошибка все равно возникает и отловить почему именно срабатывает - не получается :(  
Так же переодически ошибка возникает при добовлении строки, в строчке Worksheets(2).Cells(LineRow, 3).EntireRow.Insert Shift:=xlShiftDown    
Кстати, способ добавление обрабодчиков для объектов через модификацию кода единственный который я нашел, имеются ли другие, менее топорные способы?
 
Переписал макросы, все так же появляется ошибка  
на Worksheets(2).Cells(число, 3) = ComboVal  
и переодически возникает ошибка "excel the object invoked has disconnected from its clients" на строке Worksheets(2).Cells(LineRow, 3).EntireRow.Insert Shift:=xlShiftDown
Страницы: 1
Читают тему
Loading...