Страницы: 1
RSS
Вопрос для опытных VBA
 
подскажите плиз, если я вызываю переменную через call с параметрами, то пишет ошибку, например:  
1)call TreeView1_NodeClick -нормально  
2)call TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) - выдает ошибку  
Поскажите, пожалуйста синтаксис (как описать). Спасибо!
 
Если не сложно то на примере покажите как задать эти же параметры TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) правильно? Спасибо!
 
Ну или TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
 
Спасибо за разъяснения конечно, но вы меня так и не поняли. Я сразу написал "Покажите, пожалуйста синтаксис (как описать). Спасибо!"  
Т.е. идет код и потом мне нужно вызвать через Call процедуры вот с этими параметрами. В скобках их оставлять нельзя, так как ошибка, так вы можете просто написать строку как вызвать TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer), как вы ее опишите (без разъяснений). Спасибо
 
Попытался сделать:  
Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  
  MsgBox "Произошло событие TextBox1_KeyDown" & vbCrLf & _  
         "KeyCode = " & KeyCode & vbCrLf & _  
         "Shift = " & Shift  
End Sub  
а после этого вызвать её по:  
Sub test()  
  Call TextBox1_KeyDown  
End Sub  
и тоже, естественно, получил ошибку "Обязательный аргумент!"  
А как задать аргументы As MSForms.ReturnInteger абсолютно не понимаю...  
Если вам нужно обрабатывать именно ЭТО событие (я, например, всегда обрабатываю не его, а TextBox1_Change(), которое не требует хитрых аргументов), то можно произвести "подмену" подпрограммы обработки. Например, так:  
 
Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  
  Call TextBox1_KeyDown_Zamena(CInt(KeyCode), Shift)  
End Sub  
 
Sub TextBox1_KeyDown_Zamena(KeyCode As Integer, Shift As Integer)  
  MsgBox "Произошло событие TextBox1_KeyDown" & vbCrLf & _  
         "KeyCode = " & KeyCode & vbCrLf & _  
         "Shift = " & Shift  
End Sub  
 
Sub test()  
  Call TextBox1_KeyDown_Zamena(8, 0)  
End Sub
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
Sub test()  
Dim myKeyCode As MSForms.ReturnInteger  
Call TextBox1_KeyDown(myKeyCode, 5)  
End Sub  
 
Ошибки не возникает.  
Есть прикол: при запуске Sub test происходит Userform1.Show
Bite my shiny metal ass!      
 
Ну, вообще-то я и сам догадался, что объявить аргумент можно As MSForms.ReturnInteger  
Но вот как сопоставить конкретную кнопку клавиатуры с этим самым MSForms.ReturnInteger?  
Хотя, если Макс спрашивает, то он наверное знает, что именно собирается передавать подпрограмме в аргументах, а значит и как что-то в MSForms.ReturnInteger преобразовать...  :-)
С уважением, Алексей (ИМХО: Excel-2003 - THE BEST!!!)
 
{quote}{login=Alex_ST}{date=29.01.2010 01:44}{thema=}{post}  
Но вот как сопоставить конкретную кнопку клавиатуры с этим самым MSForms.ReturnInteger?{/post}{/quote}Ну вот же у Вас ответ:  
Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  
MsgBox "Произошло событие TextBox1_KeyDown" & vbCrLf & _  
"KeyCode = " & KeyCode & vbCrLf & _  
"Shift = " & Shift  
End Sub  
 
Только запускайте ее "нормальным" путем - нажатием кнопки в TextBox1. Мсгбох и даст код кнопки.
Bite my shiny metal ass!      
 
Супер, спасибо!  
А как быть с call TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)    
как мне вызвать такую процедуру?  
Что то типо call TreeView1_NodeClick (а_здесь_что?)  
Спасибо!
 
Sub test()  
Dim myKeyCode As MSComctlLib.Node  
Call TextBox1_KeyDown(myKeyCode)  
End Sub  
Так что ли? :-0
 
Sub test()  
Dim myKeyCode As MSComctlLib.Node  
Что то типо call TreeView1_NodeClick(myKeyCode)  
End Sub  
Вернее...
 
Я наверное что-то пропустил - можно пример...
Страницы: 1
Читают тему
Наверх