У Уокенбаха есть пример мастера по расчету платежей по кредиту (см вложенный файл Loan.xlsm Файл весит 108кб поэтому пришлось заинуть в облако) [moder]Файл вложен в сообщение #4[/moder]
Я решил добавить в ЮзерФорму под названием FormMain на шаге №2 полосу ScrollBar (в коде ее название: sbPurchasePrice) (см вложенный рисунок), которая связана с полем "Возвращаемая сумма" (в коде ее название: tbPurchasePrice) так, что пользователь может не только руками сумму в этом поле набивать, но и менять сумму прокручивая эту полосу прокрутки sbPurchasePrice
Вот так я добавил полосу прокрутки в форму ForMain: [vba]
Код
Private Sub sbPurchasePrice_Change() With sbPurchasePrice .Min = 0 .Max = 10000000 .SmallChange = 1000 .LargeChange = 10000 tbPurchasePrice.Text = .Value End With End Sub
[/vba]
Когда крутишь полосу прокрутки , сразу меняется и значение возвращаемой сумму в поле tbPurchasePrice
Теперь , хотелось бы сделать так, чтобы когда пользователь вручную забивает значение в поле tbPurchasePrice , чтобы в этот же момент ползунок в полосе прокрутки sbPurchasePrice тоже бы менял свое положение.
В коде формы FormMain я попытался решить задачу , добавив в изначальный код Уокенбаха вот эту закомментированную строку:
[vba]
Код
'STEP 2 EVENT HANDLERS Private Sub tbPurchasePrice_Change() ' sbPurchasePrice.Value = Val(tbPurchasePrice.Text) Call UpdateLoanAmount End Sub
[/vba]
Если ее раскомментировать, то Макрос выдает ошибку!
Хотя , например точно такой же метод работает во вложенном файле TestSB и никаких ошибок нет [vba]
Код
Option Explicit
Private Sub OK_Click() Unload Me End Sub
Private Sub ScrollBar1_Change() With ScrollBar1 .Min = 0 .Max = 10000000 .SmallChange = 1000 .LargeChange = 10000 TextBox1.Text = .Value End With End Sub
Private Sub TextBox1_Change() ScrollBar1.Value = Val(TextBox1.Text) End Sub
[/vba]
Помогите пожалуйста понять в чем затык?
Всем привет!
У Уокенбаха есть пример мастера по расчету платежей по кредиту (см вложенный файл Loan.xlsm Файл весит 108кб поэтому пришлось заинуть в облако) [moder]Файл вложен в сообщение #4[/moder]
Я решил добавить в ЮзерФорму под названием FormMain на шаге №2 полосу ScrollBar (в коде ее название: sbPurchasePrice) (см вложенный рисунок), которая связана с полем "Возвращаемая сумма" (в коде ее название: tbPurchasePrice) так, что пользователь может не только руками сумму в этом поле набивать, но и менять сумму прокручивая эту полосу прокрутки sbPurchasePrice
Вот так я добавил полосу прокрутки в форму ForMain: [vba]
Код
Private Sub sbPurchasePrice_Change() With sbPurchasePrice .Min = 0 .Max = 10000000 .SmallChange = 1000 .LargeChange = 10000 tbPurchasePrice.Text = .Value End With End Sub
[/vba]
Когда крутишь полосу прокрутки , сразу меняется и значение возвращаемой сумму в поле tbPurchasePrice
Теперь , хотелось бы сделать так, чтобы когда пользователь вручную забивает значение в поле tbPurchasePrice , чтобы в этот же момент ползунок в полосе прокрутки sbPurchasePrice тоже бы менял свое положение.
В коде формы FormMain я попытался решить задачу , добавив в изначальный код Уокенбаха вот эту закомментированную строку:
[vba]
Код
'STEP 2 EVENT HANDLERS Private Sub tbPurchasePrice_Change() ' sbPurchasePrice.Value = Val(tbPurchasePrice.Text) Call UpdateLoanAmount End Sub
[/vba]
Если ее раскомментировать, то Макрос выдает ошибку!
Хотя , например точно такой же метод работает во вложенном файле TestSB и никаких ошибок нет [vba]
Код
Option Explicit
Private Sub OK_Click() Unload Me End Sub
Private Sub ScrollBar1_Change() With ScrollBar1 .Min = 0 .Max = 10000000 .SmallChange = 1000 .LargeChange = 10000 TextBox1.Text = .Value End With End Sub
Private Sub TextBox1_Change() ScrollBar1.Value = Val(TextBox1.Text) End Sub
А ответ прост - у Вас максимум у полосы прокрутки какой? 30 с чем-то тысяч.
А где написано, что максимум для полосы прокрутки 30тыс? Это какая -то программная константа Экселя? В файле TestSB я ввожу и 5 000 000 и полоса прокрутки не ругается.
А ответ прост - у Вас максимум у полосы прокрутки какой? 30 с чем-то тысяч.
А где написано, что максимум для полосы прокрутки 30тыс? Это какая -то программная константа Экселя? В файле TestSB я ввожу и 5 000 000 и полоса прокрутки не ругается.t330
Удивительно, что в файле TestSB максимальнео значение для полосы прокрутки тоже 32 тыс, но это никак не смущает Эксель когда вводишь больше 32 тыс...
Удивительно, что в файле TestSB максимальнео значение для полосы прокрутки тоже 32 тыс, но это никак не смущает Эксель когда вводишь больше 32 тыс...t330
А вы в этом файле введите 10000000 и 10000001. Может тогда тайное станет явным?
Нет не станет. В файле TestSB так же как и в Уокенбаховском файле стоит максимальное значение для СкроллБара 32000 (см скрин) и только в самой процедуре прописано, что максимум может быть до 10 000000 [vba]
Код
ScrollBar1.Max = 10000000
[/vba]
Понятно, что если ввести 10 000 001 - Эксель должен ругнуться , но не понятно почему он не ругается когда вводишь цифру более 32000 и менее 10 000 000.
А вы в этом файле введите 10000000 и 10000001. Может тогда тайное станет явным?
Нет не станет. В файле TestSB так же как и в Уокенбаховском файле стоит максимальное значение для СкроллБара 32000 (см скрин) и только в самой процедуре прописано, что максимум может быть до 10 000000 [vba]
Код
ScrollBar1.Max = 10000000
[/vba]
Понятно, что если ввести 10 000 001 - Эксель должен ругнуться , но не понятно почему он не ругается когда вводишь цифру более 32000 и менее 10 000 000.
А ответ прост - у Вас максимум у полосы прокрутки какой?
Скажите пожалуйста, можно ли SmallChange у ScrollBar сделать меньше единицы? Например, если нужно с помощью скролл бара менять процент ставки по 0,5% , а не по 1% сразу?
А ответ прост - у Вас максимум у полосы прокрутки какой?
Скажите пожалуйста, можно ли SmallChange у ScrollBar сделать меньше единицы? Например, если нужно с помощью скролл бара менять процент ставки по 0,5% , а не по 1% сразу?t330