VBA object required
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA object required

VBA object required

Ответ
Поиск в этой теме
Непрочитано 09.09.2006, 13:23 #1
VBA object required
To Thuc
 
Регистрация: 12.07.2006
Сообщений: 14

У меня такие строки

Цитата:
Public n, m, i, j, s As Integer
Public ctl(1 To 7, 1 To 5) As Control
Public l, h, f, tamx, tamy, gia As Double
Public tai(0 To 10, 1 To 3) As Double
Public luc(1 To 3) As Double
Public back, taitron, taicao As Boolean
Public r, phi, a, b, x, y, moment, ngang, doc As Double
Public bang(0 To 100, 1 To 6) As Double
Public ghi(1 To 3, 1 To 3)
Public matrix(1 To 3, 1 To 3) As Double


Public Sub Importdata()
Load UserForm1
UserForm1.Show
End Sub
Раньше они нормальные работали. Вчера я изменил название нескольких неизвестных, и они не работают. Я открыл сохраненный файл, но ошибка одна и тоже. Error message : "Object required". UserForm1 существует, но когда я нажал на него, properties windows is clear. Я сам не смог понять. Помогите, пожалуйста.
Просмотров: 11685
 
Непрочитано 10.09.2006, 14:55
#2
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Попробуй так:

Код:
[Выделить все]
Option Explicit
.................
        Load Me
~'J'~
fixo вне форума  
 
Непрочитано 10.09.2006, 17:54 Re: VBA object required
#3
C1


 
Регистрация: 13.06.2005
Сообщений: 314


Цитата:
Public n, m, i, j, s As Integer
Public ctl(1 To 7, 1 To 5) As Control
Public l, h, f, tamx, tamy, gia As Double
Public tai(0 To 10, 1 To 3) As Double
Public luc(1 To 3) As Double
Public back, taitron, taicao As Boolean
Public r, phi, a, b, x, y, moment, ngang, doc As Double
Public bang(0 To 100, 1 To 6) As Double
Public ghi(1 To 3, 1 To 3)
Public matrix(1 To 3, 1 To 3) As Double

Вчера я изменил название нескольких неизвестных, и они не работают.
Вы не правильно описываете переменные.
Вам кажется, что при

Public back, taitron, taicao As Boolean

они все Boolean - то Boolean только последняя taicao, а остальные Variant.
Также с Public n, m, i, j, s As Integer.
C1 вне форума  
 
Непрочитано 10.09.2006, 19:51
#4
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


Опять забыл?

http://dwg.ru/forum/viewtopic.php?t=9336

:wink:
fixo вне форума  
 
Непрочитано 11.09.2006, 09:45
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Вопрос - а зачем выполнять загрузку формы? Она же и так уже загружена, вместе с проектом, по-моему. И если так, то достаточно просто выполнить
Код:
[Выделить все]
UserForm1.Show
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.09.2006, 04:58
#6
To Thuc


 
Регистрация: 12.07.2006
Сообщений: 14


Спасибо fatty и C1, я эту ошибку опять раз не заметил. Но проблема, наверное, не находится в этом. Даже когда я объявил каждую переменную в одном строке (со своим типом) или удалить все объявления, форма 1 не загружалась.

Я тоже пытался удалить строку "load userform1", но мне не повезло.

Первый способ у Fatty, мне не очень понятно. Можно мне рассказать по больше ?
To Thuc вне форума  
 
Непрочитано 12.09.2006, 08:38
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Только что специально проверил. В одном dvb-файле одновременно и форма, и модуль. В модуле единственная функция:
Код:
[Выделить все]
Sub main()
  UserForm1.Show
End Sub
Форма пустая. Показывается.
Вариант (с установленными на форме контролами):
Код:
[Выделить все]
Sub Main()
  With UserForm1
    .Caption = "Это заголовок для проверки"
    .txtValue.Value = ""
    .Show vbModeless
  End With
End Sub
И в форме расположены 2 кнопки (btnOK, btnCancel) и текстовое поле (txtValue), Тамошний код:
Код:
[Выделить все]
Option Explicit

Const ControlDist = 6

Private Sub btnCancel_Click()
  Me.Hide ' Если надо потом обрабатывать в VBA данные из формы
  ' Иначе можно использовать и Unload Me
End Sub

Private Sub btnOK_Click()
  Me.Hide ' Если надо потом обрабатывать в VBA данные из формы
  ' Иначе можно использовать и Unload Me
End Sub

Private Sub UserForm_Activate()
  With Me
    .txtValue.top = ControlDist
    .btnCancel.Height = 18
    .btnCancel.Width = 60
    .btnOK.Height = .btnCancel.Height
    .btnOK.Width = .btnCancel.Width
    .btnCancel.top = .txtValue.top + .txtValue.Height + ControlDist
    .btnCancel.Left = .Width - .btnCancel.Width - ControlDist
    .btnOK.top = .btnCancel.top
    .btnOK.Left = .btnCancel.Left - .btnOK.Width - ControlDist
  End With
End Sub
Работает, зараза!
Может, если не секрет, выложить dvb? Чтоб уж конкретно все смотреть?
[ATTACH]1158036194.rar[/ATTACH]
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 12.10.2006, 14:50
#8
To Thuc


 
Регистрация: 12.07.2006
Сообщений: 14


Я заболел и поэтому не смог ответить сразу. Просите меня, пожалуйста!

Я вообще не знал, что происходит с своем Autocad. Я скопировал те же тексты в новый файл, и все работали.

Но сейчас я почти сошел с ума из-за него. Команды не работают как должны быть. Например

i = atn(1) ' Ответ програмы i = 1

'или
n=2
select case n
case 1
i = 1
if i =1 then msgbox "Error"
case 2
i = 2
end select

ответ програмы "error"
Скажите мне, пожалуйста: Что происходит с моей программой ? Я использовал и Norton и Kaperski, но не нашел вирусов.
To Thuc вне форума  
 
Непрочитано 13.10.2006, 11:28
#9
fixo

Lisp/VBA/VB.NET Hobbyist
 
Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367


1. Скорее всего дело не в Автокаде, возможно ты
объявляешь переменную i с неправильным типом данных
(у тебя наверно переменная i объявлена как Integer)

2. Используй отлов ошибок чтобы легче было контролировать
ход выполнения программы

Самые простейшие примеры



Код:
[Выделить все]
Option Explicit
Sub test1()
Dim i As Double
On Error GoTo Err_control
i = Atn(1)
MsgBox "Return value is: " & i
Err_control:
If Err.Number <> 0 Then
MsgBox Err.Description
End If

End Sub
Код:
[Выделить все]
Option Explicit
Sub test2()

Dim i As Double, n As Integer
On Error GoTo Err_control
n = 2
Select Case n
Case 1
i = 1
If i = 1 Then MsgBox "Error"
Case 2
i = 2
End Select

MsgBox "Return value is: " & i

Err_control:
If Err.Number <> 0 Then
MsgBox Err.Description
End If

End Sub
~'J'~
fixo вне форума  
 
Автор темы   Непрочитано 14.10.2006, 04:11
#10
To Thuc


 
Регистрация: 12.07.2006
Сообщений: 14


Спасибо fatty. Я понимаю, но даже когда я копировал данные строки в мой файл, результат одно и то же. Я думаю, что мне надо переустановить Автокад. Ой...
To Thuc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA object required