Страницы: 1
RSS
Присвоение переменной значения элемента управления
 
Попробовал применить пользовательскую форму. Возникла проблема с невозможностью присвоить значение переменной значению из счетчика, текстового поля и прочего из этой формы, имя элемента управления требует объявить переменной. Код заработал только когда переместил его в "тело" кнопки на форме. Т.е. есть макрос1 в "теле" которого есть инструкция на запуск и показ формы1, а уже в форме1 остальной код. Если я правильно понимаю, то это неправильно и как исправить это?
 
Николай Федоров, ни хрена не понятно, но очень интересно…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
если хотите ответа, приложите файл. и опишите согласно файла что к чему.
 
Код в модуле
Код
Sub Ширина_столбцов()
'
' Макрос1 Макрос
'

'
Load UserForm1
UserForm1.Show

    
End Sub
Код в пользовательской форме
Код
Private Sub CommandButton1_Click()

Dim wcn As Long
Dim b, s, sn, n As Long
wcn = CLng(TB1.Text)
'Application.ReferenceStyle = xlR1C1
s = ActiveCell.Column ' s - Столбец начала таблицы(для случая скрытых столбцов)
sn = CLng(SpinButton2.Value) 'Counter_sn количество столбцов с нормами
'wcn = 4 'Widthcolumn_Value ширина столбцов с нормами
    ' столбцы до единиц измерения
    Columns(s).ColumnWidth = 13
        b = s + 1
    Columns(b).ColumnWidth = 38
        b = b + 1
    Columns(b).ColumnWidth = 25
        b = b + 1
    Columns(b).ColumnWidth = 26
        b = b + 1
    Columns(b).ColumnWidth = 20
        b = b + 1
    Columns(b).ColumnWidth = 6
    ' столбцы с нормами
    For n = 1 To sn
        b = b + 1
        Columns(b).ColumnWidth = wcn
    Next
'    примечания
    b = b + 1
    Columns(b).ColumnWidth = 20
' Application.ReferenceStyle = xlA1
End Sub
Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub
Private Sub CommandButton3_Click()
End
End Sub
Private Sub SpinButton1_Change()
TB1.Value = SpinButton1.Value
End Sub
Private Sub SpinButton2_Change()
TB2 = SpinButton2.Value
End Sub
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
TextBox1 = CStr(ActiveCell.Address(False, False))
End Sub
если код из CommandButton1_Click перенести в Sub Ширина столбцов, то на wcn = CLng(TB1.Text) будет ошибка - переменная TB1 не определена.
Изменено: Николай Федоров - 22.01.2020 13:44:29
 
Николай Федоров, всё ещё ни хрена не понятно, но скорее всего, вам нужна Public-переменная уровня проекта, чтобы переносить значения
Изменено: Jack Famous - 22.01.2020 13:48:50
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, прошу прощения за неправильные формулировки, VBA изучаю по мере надобности, а надобность бывает довольно редко)
 
Цитата
Jack Famous написал:
вам нужна  Public-переменная уровня проекта ,
Спасибо большое, это именно, то что было нужно
 
Николай Федоров, рад помочь  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Николай Федоров написал:
если код из CommandButton1_Click перенести в Sub Ширина столбцов, то на wcn = CLng(TB1.Text) будет ошибка - переменная TB1 не определена
что логично, потому что TB1 - это элемент формы. В этом случае надо либо указывать полностью форму, либо передавать все нужное в процедуру. Типа того(по первому варианту)
Код
wcn = CLng(UserForm1.TB1.Text)
'Application.ReferenceStyle = xlR1C1
s = ActiveCell.Column ' s - Столбец начала таблицы(для случая скрытых столбцов)
sn = CLng(UserForm1.SpinButton2.Value) 'Counter_sn количество столбцов с нормами
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий(The_Prist) Щербаков, спасибо)
Страницы: 1
Наверх