powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / объявление объектной переменной
40 сообщений из 40, показаны все 2 страниц
объявление объектной переменной
    #33733324
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, как описать объектную переменную и связать ее с имеющимся на форме ListBox.
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733366
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
dim obj as object
set obj = ListBox1
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733388
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет, в этом случае Obj=""
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733398
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле?
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733405
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при пошаговом выполнении программы после прохождения строки Set Obj=List1
значение Obj=""
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733417
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какое значение вы хотели увидеть у объекта ? Смотрите watch-ем.
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733439
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объектная переменная должна быть связана с элементом List box, потом ее значение передается в процедуру и там происходит заполнение listboxa
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733451
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ради бога, передавайте ее куда хотите. В чем проблема-то?
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733462
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема в том что не могу присвоить этой чертовой переменной значение List1 !
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733475
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит не можете? Покажите свой код.
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733487
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код примерно следующий:

dim Obj as Object

set obj=list1

При пошаговом проходжении видно, что LIst1="", cледовательно и Obj=""
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733536
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гениальный вывод.
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub Form_Load()
    Dim obj As Object
    Set obj = List1
    Debug.Print obj.Name
    Debug.Print obj.Font.Name
End Sub
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733552
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tommy1 , вы что-нибудь слышали о default property?
советую посмотреть :)
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733554
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну и где же гениальность? ))) ничего не выходит
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733568
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One,откровенно говоря о default property я ничего не слышала, объясните в двух словах, пожалуйста ))
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733575
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы код, что вам написали, попробовали выполнить?
что конкретно у вас не выходит, какая строчка кода у вас вызывает ошибку или сомнения?
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733586
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F1 - это справка по бейсику
ищите там свой List контрол и смотрите какие у него свойства и вам все станет ясно, я надеюсь :)
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733608
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код я выполняла, ошибку мне нигде не выдает но когда я физически передаю значение Obj другой процедуре ListBox не заполняется. По-моему, я не правильно описываю объектную переменную, я с этим еще не сталкивалась
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733611
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
F2 - очень полезное окно (см. VB.ListBox в вашем случае)
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733616
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
приведите код, которым вы передаете ссылку на вашу объектуную переменную в другую функцию
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733631
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
код я переделала

dim Obj as VB.ListBox

set Obj=Me.List1

и опять тот же результат.... Что-то я отупела )))
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733646
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что за проблема?
где вы передаете свой obj в другую функцию?


Код: plaintext
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.
Option Explicit
Public lst As ListBox

Private Sub Command1_Click()

With Me.lst
    .Clear
    .AddItem "Item 1"
    .AddItem "Item 2"
    .AddItem "Item 3"
    
    .ListIndex =  1 
    
End With

End Sub

Private Sub Form_Load()

    Set Me.lst = Me.List1

End Sub

Private Sub Form_Unload(Cancel As Integer)
    Set Me.lst = Nothing
End Sub
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733649
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в другую процедуру переменную передаю так

Call Proc (Obj as Object, Str as str)

эта процедура срабатывает без ошибок с нулевым результатом
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733659
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public MyProc(byref Obj as ListBox, Byval sValue as String)

with Obj
.AddItem sValue
.ListIndex=.NewIndex
end with

End Sub

'вызов
MyProc Me.List1, "Новое значение"
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733664
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Public Sub ...

сорри, быстро писал
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733680
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в строке
set me.lst=me.list1
выходит сообщение об ошибке

method or data member not found
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733685
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
до перехода в другую процедуру дело не дошло )), при загрузке формы вышло сообщение об ошибке
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733696
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на строке set me.lst=me.list1 выходит сообщение об ошибке method or data member not found
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33733775
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы можете свой код выложить? А еще лучше - проект.
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33734263
Фотография Magnus23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж. Тут ни FAQ не поможет, ни F1. :)


А зачем, собственно, передавать обьект в процедуру? И вообще зачем там обьектаная переменная? В любом случае это будет та же ссылка на тот же обьект.

Если нужно обратится к контролу на форме из модуля формы, так и пбращайтесь бапрямую. Область видимости позволяет. В чем проблема-то?
Ниче не понимаю.

Magnus
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33734436
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Magnus23 А зачем, собственно, передавать обьект в процедуру? И вообще зачем там обьектаная переменная? В любом случае это будет та же ссылка на тот же обьект.
Если нужно обратится к контролу на форме из модуля формы, так и пбращайтесь бапрямую. Область видимости позволяет. В чем проблема-то?
Ниче не понимаю.
Это можно испльзовать в том случае, когда надо сделать однотипные действия с кучей однотипных объектов.


Tommy1 на строке set me.lst=me.list1 выходит сообщение об ошибке method or data member not found
все правильно. В вашем случае "lst" - это переменная. а не метод обэекта "Me" и надо писать так
Код: plaintext
set lst=me.list1
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33734663
Tommy1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
именно так я делаю, но при прохождении строки

set Lst=Me.List1

значение Me.List1="", соответственно и Lst="" и List1 не заполняется, хотя нигде не выходит сообщение об ошибке
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33734705
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эх... при прохождении этой строки ткните правой педалью мыши на переменную Lst и выберите Add watch. Это так сложно сделать?
...
Рейтинг: 0 / 0
объявление объектной переменной
    #33734737
TIKO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что именно тебе нжно взять и запихнуть
из List1 в lst

Private Sub Form_Load()
Dim obj As Object
Set obj = List1
Debug.Print obj.Name
Debug.Print obj.Font.Name
End Sub

Melkiades показал что ему нужно вывести имя объетка и имя шрифта

With Me.lst
.Clear
.AddItem "Item 1"
.AddItem "Item 2"
.AddItem "Item 3"

.ListIndex = 1

End With

Konst_One показал как добавить в объект значение

Вопрос смысл создания объект? или ваш код в студию
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
объявление объектной переменной
    #35752673
kurtizANKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, что реанимирую такую древнюю тему, но вопрос состоит в следующем.
У меня есть на форме 3 группы однотипных (внутри группы) контролов (одна группа комбо, две текст). При изменении любого из этих контролов запускается процедура типа:

Sub CalcSumChange()
Dim maxAdd As Double
Dim maxTake As Double
Dim minChange As Double


maxAdd = txtSumAdd.Value
maxTake = txtSumTaking.Value
minChange = Worksheets("Параметры счетов").Range("g23").Value

'выполнение проверки сумм пополнения / снятия условиям
'присвоение "знака" движения сумм по счету
If cbx1 = "Пополнение" And Len(txtSum1) > 0 Then
If Abs(txtSum1.Value) > maxAdd Then
txtSum1.Value = Format(Abs(maxAdd), "standard")
MsgBox "Сумма пополнения не должна превышать " & Format(Abs(maxAdd), "standard")
ElseIf Abs(txtSum1.Value) < minChange Then
MsgBox "Минимальная сумма пополнения " & Format(minChange, "standard")
txtSum1.Value = Format(minChange, "standard")
Else: txtSum1.Value = Format(Abs(txtSum1), "standard")
End If
ElseIf Len(cbx1) > 0 And Len(txtSum1) > 0 Then
If Abs(txtSum1.Value) > maxTake Then
txtSum1.Value = Format(-Abs(maxTake), "standard")
MsgBox "Сумма cнятия не должна превышать " & Format(Abs(maxTake), "standard")
ElseIf Abs(txtSum1.Value) < minChange Then
MsgBox "Минимальная сумма снятия " & Format(minChange, "standard")
txtSum1.Value = Format(-minChange, "standard")
Else: txtSum1.Value = Format(-Abs(txtSum1), "standard")
End If
Else: txtSum1.Value = Format(0, "standard")
End If

If cbx2 = "Пополнение" And Len(txtSum2) > 0 Then
If Abs(txtSum2.Value) > maxAdd Then
txtSum2.Value = Format(Abs(maxAdd), "standard")
MsgBox "Сумма пополнения не должна превышать " & Format(Abs(maxAdd), "standard")
ElseIf Abs(txtSum2.Value) < minChange Then
MsgBox "Минимальная сумма пополнения " & Format(minChange, "standard")
txtSum2.Value = Format(minChange, "standard")
Else: txtSum2.Value = Format(Abs(txtSum2), "standard")
End If
ElseIf Len(cbx2) > 0 And Len(txtSum2) > 0 Then
If Abs(txtSum2.Value) > maxTake Then
txtSum2.Value = Format(-Abs(maxTake), "standard")
MsgBox "Сумма cнятия не должна превышать " & Format(Abs(maxTake), "standard")
ElseIf Abs(txtSum2.Value) < minChange Then
MsgBox "Минимальная сумма снятия " & Format(minChange, "standard")
txtSum2.Value = Format(-minChange, "standard")
Else: txtSum2.Value = Format(-Abs(txtSum2), "standard")
End If
Else: txtSum2.Value = Format(0, "standard")
End If

If cbx3 = ..... 'и так для всех 6 комбобоксов и текстбоксов
End If

txtTotalSumChange.Value = Format(CDbl(txtSum1) + CDbl(txtSum2) + CDbl(txtSum3) + CDbl(txtSum4) + CDbl(txtSum5) + CDbl(txtSum6), "standard")

TotalSum

End Sub


Почему-то у меня есть уверенность, что тупой перебор имен этих комбо- и текстбоксов можно избежать какой либо процедуркой типа:
sub cntrls ()
dim stri as string
dim datei as TextBox
dim i as integer

for i=1 to 6
stri = "frmMain.txtDate" & i + 1
Set datei.Caption = stri
next i

end sub


Только вот такая процедурка не работает выдавая ошибку "Wrong number of arguments (Error 450)", а как решить эту задачку по упрощению основного кода сама разобраться никак не могу.
Есть светлые головы, кто поможет?
...
Рейтинг: 0 / 0
объявление объектной переменной
    #35752707
kurtizANKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, по-дурацки выложила прошлый раз код

Исходный код, который хотелось бы оптимизировать (только в части обработки в цикле однотипных контролов).
Код: plaintext
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.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
Sub CalcSumChange()
Dim maxAdd As Double
Dim maxTake As Double
Dim minChange As Double


maxAdd = txtSumAdd.Value
maxTake = txtSumTaking.Value
minChange = Worksheets("Параметры счетов").Range("g23").Value

'выполнение проверки сумм пополнения / снятия условиям
'присвоение "знака" движения сумм по счету
If cbx1 = "Пополнение" And Len(txtSum1) >  0  Then
If Abs(txtSum1.Value) > maxAdd Then
txtSum1.Value = Format(Abs(maxAdd), "standard")
MsgBox "Сумма пополнения не должна превышать " & Format(Abs(maxAdd), "standard")
ElseIf Abs(txtSum1.Value) < minChange Then
MsgBox "Минимальная сумма пополнения " & Format(minChange, "standard")
txtSum1.Value = Format(minChange, "standard")
Else: txtSum1.Value = Format(Abs(txtSum1), "standard")
End If
ElseIf Len(cbx1) >  0  And Len(txtSum1) >  0  Then
If Abs(txtSum1.Value) > maxTake Then
txtSum1.Value = Format(-Abs(maxTake), "standard")
MsgBox "Сумма cнятия не должна превышать " & Format(Abs(maxTake), "standard")
ElseIf Abs(txtSum1.Value) < minChange Then
MsgBox "Минимальная сумма снятия " & Format(minChange, "standard")
txtSum1.Value = Format(-minChange, "standard")
Else: txtSum1.Value = Format(-Abs(txtSum1), "standard")
End If
Else: txtSum1.Value = Format( 0 , "standard")
End If

If cbx2 = "Пополнение" And Len(txtSum2) >  0  Then
If Abs(txtSum2.Value) > maxAdd Then
txtSum2.Value = Format(Abs(maxAdd), "standard")
MsgBox "Сумма пополнения не должна превышать " & Format(Abs(maxAdd), "standard")
ElseIf Abs(txtSum2.Value) < minChange Then
MsgBox "Минимальная сумма пополнения " & Format(minChange, "standard")
txtSum2.Value = Format(minChange, "standard")
Else: txtSum2.Value = Format(Abs(txtSum2), "standard")
End If
ElseIf Len(cbx2) >  0  And Len(txtSum2) >  0  Then
If Abs(txtSum2.Value) > maxTake Then
txtSum2.Value = Format(-Abs(maxTake), "standard")
MsgBox "Сумма cнятия не должна превышать " & Format(Abs(maxTake), "standard")
ElseIf Abs(txtSum2.Value) < minChange Then
MsgBox "Минимальная сумма снятия " & Format(minChange, "standard")
txtSum2.Value = Format(-minChange, "standard")
Else: txtSum2.Value = Format(-Abs(txtSum2), "standard")
End If
Else: txtSum2.Value = Format( 0 , "standard")
End If

If cbx3 = ..... 'и так для всех 6 комбобоксов и текстбоксов
End If

txtTotalSumChange.Value = Format(CDbl(txtSum1) + CDbl(txtSum2) + CDbl(txtSum3) + CDbl(txtSum4) + CDbl(txtSum5) + CDbl(txtSum6), "standard")

TotalSum

End Sub

Мое видение решения проблемы, которое не работает :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
sub cntrls ()
dim stri as string
dim datei as TextBox
dim i as integer

for i= 1  to  6 
stri = "frmMain.txtDate" & i +  1 
Set datei.Caption = stri
next i

end sub
...
Рейтинг: 0 / 0
объявление объектной переменной
    #35752708
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте коллекцию Controls
...
Рейтинг: 0 / 0
объявление объектной переменной
    #35752716
kurtizANKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneиспользуйте коллекцию Controls
Я еще не программер (и не планирую им стать, но текущие задачи надо решать здесь и сейчас и собственными силами), а только учусь. Что имеется в виду?
...
Рейтинг: 0 / 0
объявление объектной переменной
    #35752725
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у текущей формы есть объект Controls, в нем все ваши контролы находяться. обращение можно делать по имени контрола

Код: plaintext
Debug.Print Me.Controls("txtName1").Text
...
Рейтинг: 0 / 0
объявление объектной переменной
    #35752760
kurtizANKA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Konst_Oneу текущей формы есть объект Controls, в нем все ваши контролы находяться. обращение можно делать по имени контрола

Код: plaintext
Debug.Print Me.Controls("txtName1").Text


то есть на место "txtName1" мне как раз и надо вставить мою строковую переменную, содержащую имя (завязанное на цикл) контрола? Как то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
sub cntrls ()
dim stri as string
dim datei as date
dim i as integer

for i= 1  to  6 
stri = "txtDate" & i +  1 
datei=frmMain.Controls(stri)
next i

end sub

Спасибки, работает :)
...
Рейтинг: 0 / 0
40 сообщений из 40, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / объявление объектной переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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