Страницы: 1
RSS
Как из TextBox вписать в ячейку число в числовом (не в текстовом) формате, Установить формат ячеек через VBA
 
Коллеги, добрый день!
Помогите разобраться.
Имеется Элемент управления TextBox. Когда его заполняю, он в ячейки устанавливает формат "Текстовый", как сделать что бы в ячейку эксель прописывался формат ячеек "Числовой"
Вот часть кода:
Код
Private Sub MyButton1_Click()

Dim iRow As Integer
    If TextBox1 = Empty Or TextBox2 = Empty Or TextBox4 = Empty Then
        MsgBox " Быстро заполни все поля помеченные знаком *"
    Exit Sub
    End If
    With MyList1
    On Error Resume Next
    iRow = .ListObjects("Таблица1").DataBodyRange.Rows.Count + 6
    
    If Err.Number <> 0 Then
        Err.Clear
        iRow = 6
    End If
    
    .Cells(iRow, "B").Value = TextBox1
    .Cells(iRow, "C").Value = TextBox2
    .Cells(iRow, "D").Value = TextBox3
    .Cells(iRow, "E").Value = TextBox4
    .Cells(iRow, "F").Value = TextBox5
    .Cells(iRow, "G").Value = TextBox6
    .Cells(iRow, "H").Value = TextBox7
    
    End With
    ClearForm
End Sub
 
Для целых - Val,   для дробных - CDbl
 
Не подскажете в какой части кода это нужно прописать?
 
Val(TextBox1.Text) - слева все числовые символы до нечислового
CDbl(TextBox1.Text)  - ошибка, если в TextBox не число
 
Цитата
vikttur написал:
Для целых - Val
по чему же. если разделитель точка то и дробную часть увидит.
 
Большое спасибо, помогло
 
Цитата
Toto_costa написал:
MsgBox " Быстро заполни все поля помеченные знаком *"
Вот это Прикольно!  :D   :D  :D
Слушаюсь и повинуюсь мой господин.  :D  :D  :D
Хорошего настроения Всем!
 
Цитата
vikttur написал:
Для целых - Val,   для дробных - CDbl
a SuperVal для любых.
Код
Function SuperVal(s)
    SuperVal = Val(Replace(s, ",", "."))
End Function
Изменено: RAN - 26.05.2021 13:17:46
 
Здравствуйте, коллеги! Функция SuperVal подойдет, если гарантируется, что пользователь корректно ввел число, иначе можно получить искажение.

Код
Debug.Print SuperVal("1O34")

выдаст 1 (второй символ - буква).
Изменено: sokol92 - 26.05.2021 14:02:08
Владимир
 
Цитата
sokol92 написал:
если гарантируется, что пользователь корректно ввел число
А для этого есть
Код
Function DoubleBox_KeyPress(ByVal KeyAsci As Integer, dsep As String)
    Select Case KeyAsci
    Case 48 To 57: DoubleBox_KeyPress = KeyAsci
    Case 46, 44: If dsep Like ("*,*") Then DoubleBox_KeyPress = 0 Else DoubleBox_KeyPress = 44    '[","."]
    Case Else: DoubleBox_KeyPress = 0
    End Select
End Function
 
Цитата
vikttur: для дробных - CDbl
для всех же подходит, разве нет?
Двойное бинарное отрицание (vl=--vl) тоже хорошо, но были случаи, когда не преобразовывало то, что преобразовал CDbl()
Изменено: Jack Famous - 26.05.2021 14:55:12
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
И про разделитель (точку) упустил момент.
Ну да, CDbl - для всех. Но при некорректных данных этот оператор ошибку выдаст, а Val от этого - ни холодно, ни жарко - выдаст  0 и уйдет отдыхать )
Нужно было развернуто описать, но справка - для чего? Получили подсказку - носом справку рыть, вдоль и поперек! :)
 
vikttur, ну ещё вопрос, что лучше - ошибку выдать или просто 0 написать))
А так да - там рыть и рыть  :D
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
Страницы: 1
Наверх