Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel 2007 VBA ошибка 438 / 12 сообщений из 12, страница 1 из 1
27.01.2012, 08:47
    #37634353
GeenS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
Сто лет не программировал в Excel, возникла потребность, нашел процедуру в инете, немного модифицировал, пробую запустить, выдает ошибку Object doesn't support this property or method (Error 438) на вызове метода Activate у объекта типа Range, вот у этого объекта cActive.Activate

Почему? метод законный, выбирается и поддерживается через помощника...ничего не понимаю... подозреваю, что это следствие моего полного ламерства и я не вижу чего-то лежащего на поверхности...просьба ткнуть носом


Код: vbnet
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.
Public Sub GotoFixedCell(vValue As Variant, sSheetName As String)
  
  Dim objWSheet As Worksheet
  Dim cActive As Range
  Dim cStart As Range
  Dim cForFind As Range
  Dim i As Integer

  On Error GoTo ErrorÍandler

    Set objWSheet = ActiveWorkbook.Worksheets.Item(sSheetName)
    Set cForFind = objWSheet.Cells 
          
    
    Set cActive = cForFind.Find( _
            What:=vValue, _
            After:=ActiveCell, _
            LookIn:=xlValues, _
            LookAt:=xlPart, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False)
        
    
    Set cStart = cActive
    
    While Not cActive Is Nothing
            
     
            Set cActive = cForFind.FindNext(cActive)
            If cActive.Address = cStart.Address Then
               cActive.Activate
               Exit Sub
            End If
           
            
    Wend
        
    
     
  Exit Sub

ErrorHandler:
    MsgBox Err.Descration, vbExclamation, "Error #" & Err.Number
    
End Sub
...
Рейтинг: 0 / 0
27.01.2012, 10:35
    #37634530
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
GeenSObject doesn't support this property or methodНу нет у Range такого метода. Используй Select
...
Рейтинг: 0 / 0
27.01.2012, 12:35
    #37634782
GeenS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
Shocker.Pro,

во-первых с Select такая же байда
во-вторых Activate у Range таки есть, файл прилагаю
...
Рейтинг: 0 / 0
27.01.2012, 12:49
    #37634819
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
Поставьте первой строкой в модуле Option Explicit
...
Рейтинг: 0 / 0
27.01.2012, 12:55
    #37634838
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
Попробовал, у меня этот код ошибку не выдает.
Выкладывайте файл
...
Рейтинг: 0 / 0
27.01.2012, 13:15
    #37634886
GeenS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
...
Рейтинг: 0 / 0
27.01.2012, 13:46
    #37634956
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
GeenS,

Разобрался
Активируемый диапазон находится на неактивном листе, поэтому не хочет активироваться
...
Рейтинг: 0 / 0
27.01.2012, 14:08
    #37635030
GeenS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
ааа...вот оно что...стало быть, активировать лист в точке обнаружения искомого значения? щас попробуем
...
Рейтинг: 0 / 0
27.01.2012, 14:13
    #37635042
GeenS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
точно...вот ведь...ну я ж говорю - ламер...ну все забыл на хрен! спасибо большое! сэнк ю вери мач, не побоюсь этого слова!
...
Рейтинг: 0 / 0
27.01.2012, 14:23
    #37635074
GeenS
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
Если можно еще один вопрос, коли у Вас уже файлик под рукой. Там вот на Листе 2 в модуле листа вызывается весь процесс по нажатию "1". Первоначально хотел по ENTER, но чет не перехватывает нажатия...писал вот так, как в мануале
Application.OnKey "{~}", "Лист2.CallGotoFixedCell", т.е. тильда - это Enter...однако ни фига...не подскажете?
...
Рейтинг: 0 / 0
27.01.2012, 16:20
    #37635320
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
GeenSApplication.OnKey "{~}"откуда там взялись фигурные скобки? Внимательно читаем хелп
...
Рейтинг: 0 / 0
29.01.2012, 23:38
    #37637485
ZVI
ZVI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel 2007 VBA ошибка 438
1. По первому вопросу, проще всего активировать лист по родительскому объекту диапазона:

Код: vbnet
1.
2.
cActive.Parent.Activate ' <-- Активировать лист
cActive.Activate        ' <-- А теперь и диапазон



2. По второму вопросу учитывайте то, что обычно на клавиатуре две клавиши Enter, для OnKey "~" означает Enter на основной клавиатуры, а "{ENTER}" – на дополнительной цифровой клавиатуры.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub SetOnkey()
  Application.OnKey "~", "Macro1"       ' <-- для Enter на основной клавиатуре
  Application.OnKey "{ENTER}", "Macro2" ' <-- для Enter на дополнительной цифровой клавиатуре
End Sub

Sub ResetOnkey()
  Application.OnKey "~"
  Application.OnKey "{ENTER}"
End Sub

' Основная клавиатура
Sub Macro1()
  MsgBox "~"
End Sub

' Дополнительная клавиатура
Sub Macro2()
  MsgBox "{ENTER}"
End Sub



Поэтому лучше задавать OnKey на один и тот же макрос и для "~", и для "{ENTER}"

3. Select и Activate по результату могут совпадать, но не всегда.
Код: vbnet
1.
2.
3.
4.
Sub Test()
  Range("A1:D5").Select ' <-- Выделение A1:D5
  Range("B2").Activate  ' <-- активирование B2, не снимая выделения 
End Sub
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Excel 2007 VBA ошибка 438 / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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