Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 08.01.2009, 19:37   #1
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
Злость проблема со ссылкой на textBox

есть форма и в ней код:
Код:
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Public tempBoxDefaultHeight As Double
Public WithEvents tempBox As MSForms.textBox
...
Private Sub t1__Change()
    showTempBox (t1_)
End Sub
...
Public Sub tempBox_Change()
    Dim wdth  As Double
    wdth = tempBox.Width
    tempBox.AutoSize = True
    tempBox.AutoSize = False
    tempBox.Width = wdth
End Sub
Public Sub showTempBox(ByRef txtBx As MSForms.textBox)
    Dim sHeight As Double
    Dim eHeight As Double
    Dim i As Integer
    If tempBox <> Nothing Then tempBox.Height = tempBoxDefaultHeight
    Set tempBox = txtBx
    tempBoxDefaultHeight = tempBox.Height
    sHeight = tempBox.Height
    tempBox_Change
    eHeight = tempBox.Height
    For i = 1 To 4
        tempBox.Height = (eHeight - sHeight) / 5 * i + sHeight
        Sleep (50&)
        addR.Repaint
    Next i
End Sub...
при возникновении события t1__Change выводит ошибку в строке выделенной оранжевым цветом - type mismatch
Подскажите в чем проблема?

Последний раз редактировалось tolikman; 08.01.2009 в 20:08.
tolikman вне форума
Старый 08.01.2009, 22:31   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а если это:
Public Sub showTempBox(ByRef txtBx As MSForms.textBox)
так написать:
Sub showTempBox(ByRef txtBx)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума
Старый 08.01.2009, 23:18   #3
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию

Спасибо IgorGO, разобрался сам, проблема была в другом.
Передал в функцию переменную другим способом:
showTempBox txtBx:=t1_
и все заработало. Но все равно не понял в чем именно проблема была, ведь первый вариант ничем не хуже этого.
tolikman вне форума
Старый 08.01.2009, 23:32   #4
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Не проверял код, но мне кажется, что в строке showTempBox (t1_) надо убрать скобки.
Или написать так: call showTempBox (t1_)

А что, конструкция If tempBox <> Nothing Then у Вас работает нормально?
Я думал, надо так: If not tempBox is Nothing Then
EducatedFool вне форума
Старый 09.01.2009, 07:04   #5
tolikman
Форумчанин
 
Регистрация: 25.08.2008
Сообщений: 159
По умолчанию

EducatedFool?, конечно If tempBox <> Nothing Then не работает нормально, просто думал о проблеме самой функции и написал "на скорую руку". потом решил первую и вспомнил про этот косячок.
tolikman вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
cmd to textbox - C# TaTT DoGG Общие вопросы .NET 8 26.11.2008 18:16
Как создать маску ввода даты в TextBox? AnnNet Microsoft Office Excel 6 24.07.2008 10:42
текст в TextBox-е Bezdar Microsoft Office Excel 2 04.06.2008 09:16
TextBox Freeman Общие вопросы C/C++ 3 28.05.2008 00:56
Textbox с вводным текстом SlimBr0ther Microsoft Office Excel 3 23.07.2007 21:21