Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Суммирование значений текстбоксов в числовом формате. - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Суммирование значений текстбоксов в числовом формате. (Макросы/Sub)
Суммирование значений текстбоксов в числовом формате.
Amator Дата: Понедельник, 27.06.2016, 13:13 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 59
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Здравствуйте. Помогите ,пожалуйста, задать числовой формат (0,000) для текстбоксов. По нажатию на деталь (А, В ,С ) увеличивается их количество на еденицу и соответственно увеличивается площадь деталей. Автоматически суммируется колличество всех деталей и их площадь. Если площадь детали целое число - все работает (деталь А и В), но если дробь (деталь С) , то ошибка.
К сообщению приложен файл: _1.xlsm(30Kb)
 
Ответить
СообщениеЗдравствуйте. Помогите ,пожалуйста, задать числовой формат (0,000) для текстбоксов. По нажатию на деталь (А, В ,С ) увеличивается их количество на еденицу и соответственно увеличивается площадь деталей. Автоматически суммируется колличество всех деталей и их площадь. Если площадь детали целое число - все работает (деталь А и В), но если дробь (деталь С) , то ошибка.

Автор - Amator
Дата добавления - 27.06.2016 в 13:13
Roman777 Дата: Понедельник, 27.06.2016, 13:38 | Сообщение № 2
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
Amator, проблема в том, что при изменении, у Вас возникает в какой-то момент запись аля: "2,", в данный момент отрабатывается событие Change и CDbl("2,") даёт ошибку...
Поэтому, поставив обработчик ошибок (On Error Resume Next), мы это минуем.
[vba]
Код
Private Sub myTextBox_Change()
    Dim dblSum As Double
    Dim i As Long
    Dim a As String
    For i = 1 To 3 Step 1
        a = UserForm1.Controls("TextBox" & i).Text
        If a <> "" Then
        On Error Resume Next
               dblSum = dblSum + CDbl(a)
        End If
    Next i
    UserForm1.TextBox86.Text = dblSum
End Sub
[/vba]


Много чего не знаю!!!!
 
Ответить
СообщениеAmator, проблема в том, что при изменении, у Вас возникает в какой-то момент запись аля: "2,", в данный момент отрабатывается событие Change и CDbl("2,") даёт ошибку...
Поэтому, поставив обработчик ошибок (On Error Resume Next), мы это минуем.
[vba]
Код
Private Sub myTextBox_Change()
    Dim dblSum As Double
    Dim i As Long
    Dim a As String
    For i = 1 To 3 Step 1
        a = UserForm1.Controls("TextBox" & i).Text
        If a <> "" Then
        On Error Resume Next
               dblSum = dblSum + CDbl(a)
        End If
    Next i
    UserForm1.TextBox86.Text = dblSum
End Sub
[/vba]

Автор - Roman777
Дата добавления - 27.06.2016 в 13:38
Amator Дата: Понедельник, 27.06.2016, 14:02 | Сообщение № 3
Группа: Пользователи
Ранг: Участник
Сообщений: 59
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Roman777, код изменил, ошибка не возникает. Но текстбокс с дробью не суммируется.
 
Ответить
СообщениеRoman777, код изменил, ошибка не возникает. Но текстбокс с дробью не суммируется.

Автор - Amator
Дата добавления - 27.06.2016 в 14:02
Roman777 Дата: Понедельник, 27.06.2016, 14:11 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
Amator, дробь пишете через "." или ","?
Честно говоря, у меня и 1й Ваш вариант норм складывает, когда пишу через ",".


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 27.06.2016, 14:17
 
Ответить
СообщениеAmator, дробь пишете через "." или ","?
Честно говоря, у меня и 1й Ваш вариант норм складывает, когда пишу через ",".

Автор - Roman777
Дата добавления - 27.06.2016 в 14:11
Serge_007 Дата: Понедельник, 27.06.2016, 14:22 | Сообщение № 5
Группа: Админы
Ранг: Местный житель
Сообщений: 13075
Репутация: ±
Замечаний: ±

Excel 2010
задать числовой формат (0,000) для текстбоксов
Текстбокс - он на то и текстбокс, что бы в нем был текст :)
Суммировать текст нельзя, можно только числа, значит текст текстбоксов надо переводить в числа. Как - написано выше:
Цитата
CDbl(a)


Яндекс-деньги:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
задать числовой формат (0,000) для текстбоксов
Текстбокс - он на то и текстбокс, что бы в нем был текст :)
Суммировать текст нельзя, можно только числа, значит текст текстбоксов надо переводить в числа. Как - написано выше:
Цитата
CDbl(a)

Автор - Serge_007
Дата добавления - 27.06.2016 в 14:22
Amator Дата: Понедельник, 27.06.2016, 14:26 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 59
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Roman777, через " , ".
К сообщению приложен файл: 9429389.xlsm(24Kb)
 
Ответить
СообщениеRoman777, через " , ".

Автор - Amator
Дата добавления - 27.06.2016 в 14:26
Manyasha Дата: Понедельник, 27.06.2016, 14:29 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 1586
Репутация: 661 ±
Замечаний: 0% ±

Excel 2007, 2010
Amator, вот так попробуйте:
[vba]
Код
dblSum = dblSum + CDbl(Replace(UserForm1.Controls("TextBox" & i).Text, ".", ","))
[/vba]
Roman777,
у меня и 1й Ваш вариант норм складывает, когда пишу через ","
напишите в 1-ю строчку, "1,5" и нажмите кнопку А. Должно стать "2,5", исходя из кода. У Вас так? У меня нет.

Либо меняем точки на запятые (см. выше), либо вот тут:
[vba]
Код
Private Sub CommandButton1_Click()
  Me.TextBox1.Value = CStr(CDbl(Me.TextBox1) + "1")
  Me.TextBox43.Value = CStr(CDbl(Me.TextBox1) * "2")
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеAmator, вот так попробуйте:
[vba]
Код
dblSum = dblSum + CDbl(Replace(UserForm1.Controls("TextBox" & i).Text, ".", ","))
[/vba]
Roman777,
у меня и 1й Ваш вариант норм складывает, когда пишу через ","
напишите в 1-ю строчку, "1,5" и нажмите кнопку А. Должно стать "2,5", исходя из кода. У Вас так? У меня нет.

Либо меняем точки на запятые (см. выше), либо вот тут:
[vba]
Код
Private Sub CommandButton1_Click()
  Me.TextBox1.Value = CStr(CDbl(Me.TextBox1) + "1")
  Me.TextBox43.Value = CStr(CDbl(Me.TextBox1) * "2")
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 27.06.2016 в 14:29
Amator Дата: Понедельник, 27.06.2016, 14:40 | Сообщение № 8
Группа: Пользователи
Ранг: Участник
Сообщений: 59
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Спасибо, все работает.
 
Ответить
СообщениеСпасибо, все работает.

Автор - Amator
Дата добавления - 27.06.2016 в 14:40
Roman777 Дата: Понедельник, 27.06.2016, 15:04 | Сообщение № 9
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
Amator, как вариант, можно попробовать так:
[vba]
Код
Private Sub myTextBox_Change()
    Dim dblSum As Double, a$, s$
    Dim i As Long
    Set RE = CreateObject("VBScript.RegExp")
    RE.Global = True
    RE.IgnoreCase = True
    RE.Pattern = "\d|\.|\,"
    For i = 1 To 3 Step 1
        a = UserForm1.Controls("TextBox" & i).Text
        Set oMatches = RE.Execute(a)
        For i1 = 0 To oMatches.Count - 1
            s = s & oMatches.Item(i1)
        Next i1
        s = Replace(s, ".", ",")
        If s <> "" Then
            dblSum = dblSum + CDbl(s)
        End If
        s = ""
    Next i
    UserForm1.TextBox86.Text = dblSum
End Sub
[/vba]
будет отсеивать нечисловые значения (всё что не цифра и всё что не ".", ",").


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 27.06.2016, 15:05
 
Ответить
СообщениеAmator, как вариант, можно попробовать так:
[vba]
Код
Private Sub myTextBox_Change()
    Dim dblSum As Double, a$, s$
    Dim i As Long
    Set RE = CreateObject("VBScript.RegExp")
    RE.Global = True
    RE.IgnoreCase = True
    RE.Pattern = "\d|\.|\,"
    For i = 1 To 3 Step 1
        a = UserForm1.Controls("TextBox" & i).Text
        Set oMatches = RE.Execute(a)
        For i1 = 0 To oMatches.Count - 1
            s = s & oMatches.Item(i1)
        Next i1
        s = Replace(s, ".", ",")
        If s <> "" Then
            dblSum = dblSum + CDbl(s)
        End If
        s = ""
    Next i
    UserForm1.TextBox86.Text = dblSum
End Sub
[/vba]
будет отсеивать нечисловые значения (всё что не цифра и всё что не ".", ",").

Автор - Roman777
Дата добавления - 27.06.2016 в 15:04
Amator Дата: Понедельник, 27.06.2016, 16:15 | Сообщение № 10
Группа: Пользователи
Ранг: Участник
Сообщений: 59
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Roman777, Спасибо и Ваш вариант работает. У меня на самом деле около 40 деталей. Помогите изменить код CommandButton_Click через цыкл.
 
Ответить
СообщениеRoman777, Спасибо и Ваш вариант работает. У меня на самом деле около 40 деталей. Помогите изменить код CommandButton_Click через цыкл.

Автор - Amator
Дата добавления - 27.06.2016 в 16:15
Roman777 Дата: Понедельник, 27.06.2016, 16:28 | Сообщение № 11
Группа: Проверенные
Ранг: Ветеран
Сообщений: 701
Репутация: 75 ±
Замечаний: 20% ±

Excel 2007, Excel 2013
Amator, лучше создать отдельную тему. И опишите, пожалуйста, задачу. Я что-то не понял, что Вы хотите сделать для 40 деталей циклом.


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Понедельник, 27.06.2016, 16:29
 
Ответить
СообщениеAmator, лучше создать отдельную тему. И опишите, пожалуйста, задачу. Я что-то не понял, что Вы хотите сделать для 40 деталей циклом.

Автор - Roman777
Дата добавления - 27.06.2016 в 16:28
Amator Дата: Четверг, 30.06.2016, 13:31 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 59
Репутация: 0 ±
Замечаний: 40% ±

Excel 2007
Roman777, вместо CommandButton1_Click ;CommandButton2_Click; CommandButton3_Click - CommandButton(i)_Click.
[moder]
создать отдельную тему
[/moder]


Сообщение отредактировал Manyasha - Четверг, 30.06.2016, 14:19
 
Ответить
СообщениеRoman777, вместо CommandButton1_Click ;CommandButton2_Click; CommandButton3_Click - CommandButton(i)_Click.
[moder]
создать отдельную тему
[/moder]

Автор - Amator
Дата добавления - 30.06.2016 в 13:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Суммирование значений текстбоксов в числовом формате. (Макросы/Sub)
Страница 1 из 11
Поиск:

Яндекс цитирования
© 2010-2016 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!