Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Главное меню

Фопросы по USERFORM кредит

Автор Mobsman, 25.11.2011, 12:10

« назад - далее »

Mobsman

a = TextBox30

b = Sheets(3).Range("H3") * Sheets(3).Range("J3")

If CSng(b) > a Then
TextBox29.Value = a
Else
TextBox29.Value = b
End If

Не работает как нужно, вчем проблема не пойму



Mart222

#1
У меня заработало после замены

If CSng(b) > a Then

на

If CSng(b) > Replace(a, ".", ",") Then

Иначе он не воспринимает "а" как число и соответственно некорректно сравнивает

_Boroda_

Из комбобокса, как, впрочем и из всех остальных подобных элементов, значение выводится текстом.
Преобразовать можно, например, так
CSng(b) > --a

или как написал уважаемый Mart222
или еще куча способов
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Mobsman

разобрался нужно еще стобы этот цикл работал если нажата OptionButton9

Сделал так не выходит. Как сделать что при нажатой OptionButton9 работало условие, :-\

If CSng(b) > Replace(a, ".", ",") And OptionButton9.Enabled Then
TextBox29.Value = a
End If
If CSng(b) < Replace(a, ".", ",") And OptionButton9.Enabled Then
TextBox29.Value = b
End If

Mart222

#4
Попробуйте так.

If CSng(b) > Replace(a, ".", ",") And OptionButton9 = True Then
TextBox29.Value = a
End If
If CSng(b) < Replace(a, ".", ",") And OptionButton9 = True Then
TextBox29.Value = b
End If

Enabled - это свойство отображающее доступность элемента управления, но не его значение.

Двойное отрицание конечно более красивое решение чем замена точки на запятую.

Mobsman



TextBox25.Value = ((CSng(a) * (Replace(b, ".", ",") / 100)) / 365) * CDate(c)


CDate(c) это месяц в котором считают проценты, нужно чтобы умножалось на количество дней этого месяца

Mobsman

Цитата: Mobsman от 25.11.2011, 15:29


TextBox25.Value = ((CSng(a) * (Replace(b, ".", ",") / 100)) / 365) * CDate(c)


CDate(c) это месяц в котором считают проценты, нужно чтобы умножалось на количество дней этого месяца

Как работать с датами в макросе как представить данные в виде цифр( сколько дней в месяце )

Wasilic

Цитата: Mobsman от 25.11.2011, 22:59
Как работать с датами в макросе как представить данные в виде цифр( сколько дней в месяце )
У меня тут примерчик завалялся, мож подойдёт.
Хотя, наверное, есть другой метод.
Может и я на что сгожусь ... Если сгодился, можете меня по+благодарить+.

Mobsman

Сделал проще Day(Month(c))

a = TextBox1
b = TextBox29
c = CDate(ComboBox2)

TextBox25.Value = ((CSng(a) * ((Replace(b, ".", ",") / 100))) / 365) * Day(Month(c))

Вопрос как сделать чтоб TextBox25.Value округлялся до трех знаков после запятой?

_Boroda_

TextBox25.Value = Round(((CSng(a) * ((Replace(b, ".", ",") / 100))) / 365) * Day(Month(c)),3)
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Mobsman

TextBox25.Value = Round(((CSng(a) * ((Replace(b, ".", ",") / 100))) / 365) * Day(Month(c)),3)


Day(Month(c))
С результатами получаются полные непонятки, считает для января правильно в нем 31 день, но затем для февраля считает что в нем 1 день, для января 2 дня и так далее до декабря, в нем 11 дней,

Данные для диапазона дат берутся отсюда

Private Sub UserForm_Initialize()
Dim r As Range
   For Each r In Worksheets("Данные  Кредит").[M1:M12]
       ComboBox2.AddItem Format(r, "mmmm yyyy")
   Next r
   ComboBox2.ListIndex = 0    
Me.ComboBox1.RowSource = "'Данные  Кредит'!A3:A14"
End Sub

_Boroda_

1. В ComboBox1_Change напишите a = --TextBox30
2. у Вас нет OptionButton9, а в условии If CSng(b) > Replace(a, ".", ",") And OptionButton9 = True Then
- есть. конечно всегда будет Ложь, следовательно, b будет пусто и формуле работать не будет
a = TextBox30
b = Sheets(3).Range("H3") * Sheets(3).Range("J3")
If CSng(b) > Replace(a, ".", ",") And OptionButton9 = True Then
TextBox29.Value = a
End If
If CSng(b) < Replace(a, ".", ",") And OptionButton9 = True Then
TextBox29.Value = b
End If

меняем на
a = --TextBox30
b = Sheets(3).Range("H3") * Sheets(3).Range("J3")
TextBox29.Value = WorksheetFunction.Min(a, b)


и дальше
Private Sub CommandButton1_Click()
a = --TextBox1
b = --TextBox29
c = CDate(ComboBox2)
If OptionButton4.Enabled = True And OptionButton7.Enabled = True Then
TextBox25.Value = Round(a * b / 100 / 365 * Day(WorksheetFunction.EoMonth(c, 0)), 3)
Else
TextBox25.Value = ""
End If
End Sub
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Mobsman

#12
непонятненько что то, формула то работает, просто форма не доделана, проблема в том что нужно
все да-нет выставить на нет, тогда считает, но почему то  количество дней берет правильно именно от января от остальных месяцев не берет, Меняю в той же ячейке на рабочем листе январь на февраль, уже считает что неправильно, меняю обратно правильно. Меняю последний месяц тоже на январь считает правильно, получается считает только январь, остальные месяцы воспринимает черт знает как

_Boroda_

потому, что формула Day(Month(c)) на русский переводится так: от даты с взять НОМЕР месяца (1;2;3;...;12). Результат - числа от 1 до 12. потом от этого числа взять день - получаем это же число.
Я же написал формулу подсчета кол-ва дней в месяце - Day(WorksheetFunction.EoMonth(c, 0))
Скажи мне, кудесник, любимец ба'гов...



Яндекс-деньги: 41001632713405
Webmoney: R289877159277; Z102172301748; E177867141995

Mobsman

Цитата: _Boroda_ от 28.11.2011, 14:53
потому, что формула Day(Month(c)) на русский переводится так: от даты с взять НОМЕР месяца (1;2;3;...;12). Результат - числа от 1 до 12. потом от этого числа взять день - получаем это же число.
Я же написал формулу подсчета кол-ва дней в месяце - Day(WorksheetFunction.EoMonth(c, 0))

Понятно, но почему тогда январь считает правильно

Вставляю в свою формулу не получается, может где то ошибка
a = TextBox1

b = TextBox29

c = CDate(ComboBox2)

If OptionButton4.Enabled = True And OptionButton7.Enabled = True Then

TextBox25.Value = Round(((CSng(a) * ((Replace(b, ".", ",") / 100))) / 365) * Day(WorksheetFunction.EoMonth(c, 0))), 2)