2009-02-02 2 views
1

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

Dim FSelect As Boolean 
Dim myRange As Range 

Sub Rectangle18_Click() 

    If FSelect Then 
     UnhighlightBox (myRange) <---error - runtime error "424" object required 
    End If 

    Range("C9:D9").Select 
    HighlightBox 

    FSelect = True 

    Set myRange = Range("C9:D9") 
    End Sub 

Sub Rectangle19_Click() 

    If FSelect Then 
     UnhighlightBox (myRange) 
    End If 

    Range("C11:D11").Select 
    HighlightBox 

    FSelect = True 

    Set myRange = Range("C11:D11") 

End Sub  

Sub HighlightBox() 
    Selection.Interior.ColorIndex = 36 
End Sub 

Sub UnhighlightBox(cellRng As Range) 
    cellRng.Interior.ColorIndex = 2 
End Sub 
+0

Какая ошибка у вас на этой линии? (Также в StackOverflow, если вы выделите весь свой код и щелкните значок «101» рядом с значком цитаты над полем редактирования сообщения, тогда все будет отображаться как форматированный код). –

ответ

1

Когда я бросаю этот код в excel, он жалуется на Select. Я не думаю, что вы можете использовать Select as a variable ...

EDIT: выберите зарезервированное ключевое слово в VB/A, оно начинает блок Select Case.

+0

Я изменил переменную, но она по-прежнему не работает. – 2009-02-02 16:55:45

1

Ввод скобок вокруг аргумента при вызове процедуры UnhighlightBox неверен.

Два возможных правильных форм:

UnhighlightBox myRange

Call UnhighlightBox(myRange)

Я нахожу первую форму (без Call ключевого слова), чтобы быть предпочтительным

Для Excel 2003 помощью:

Вы не требуется использовать ключевое слово Call при вызове процедуры. Однако, если вы используете ключевое слово Call для вызова процедуры, которая требует аргументов , список аргументов должен быть , заключенный в круглые скобки. Если вы пропустите ключевое слово Call, вы также должны опустить круглые скобки вокруг списка аргументов.

Обратите внимание, что это не относится к функции, которая возвращает значение. Функция должна быть вызвана как часть оператора присваивания (например, a = f(x)) и аргументы должны быть заключены в скобках

Вашего использование FSelect булева (который инициализирует ложь) должно быть предупреждение проблемы с вызовом UnhighlightBox перед тем myRange является когда-либо установленных.

+0

THXS много !!!теперь он работает xD – 2009-02-03 20:46:04

0

При использовании процедуры UnhighlightBox вам нужно либо поставить оператор Call перед рукой, либо удалить скобки.

Например:

Call UnhighlightBox (myRange) 

или

UnhighlightBox myRange 

Для получения дополнительной информации о том, почему использовать вызов, и т.д. ВИДЕТЬ одно из следующих действий:

what-does-the-call-keyword-do-in-vb6

MSDN

Смежные вопросы