Всем доброго дня. Прошу подсказки в в новой казалось бы не сложной проблеме. Имеем форму ввода. В один и тот же текст бокс может вводиться значеервом случае ния в виде "1,2" и так же в виде "1 / 2". В первом случае я прописываю формат ввода [vba]
Код
Cells(iLastRow, 1).Value = Me.TextBox1
[/vba] в этом варианте записывается числовое значение в виде текста и это есть ошибка. тогда для него я применяю макрос "format" не совсем конечно верно так как ну очень не удобно.... Во втором же случает при записи в виде "1 / 2" значение как бы и верно пишется, но макрос "format" переформатирует его и значение перезаписывается... Подскажите как огранизавать запись в разных форматах, что бы при десятичном вводе не было ошибки значения. Файл прикрепляю.
Всем доброго дня. Прошу подсказки в в новой казалось бы не сложной проблеме. Имеем форму ввода. В один и тот же текст бокс может вводиться значеервом случае ния в виде "1,2" и так же в виде "1 / 2". В первом случае я прописываю формат ввода [vba]
Код
Cells(iLastRow, 1).Value = Me.TextBox1
[/vba] в этом варианте записывается числовое значение в виде текста и это есть ошибка. тогда для него я применяю макрос "format" не совсем конечно верно так как ну очень не удобно.... Во втором же случает при записи в виде "1 / 2" значение как бы и верно пишется, но макрос "format" переформатирует его и значение перезаписывается... Подскажите как огранизавать запись в разных форматах, что бы при десятичном вводе не было ошибки значения. Файл прикрепляю.Olena
Private Sub CommandButton1_Click() Dim iLastRow As Long iLastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 c = "'" If IsNumeric(Me.TextBox1) Then c = "" Cells(iLastRow, 1).Value = c & Me.TextBox1 End Sub
[/vba]
так пойдет? [vba]
Код
Private Sub CommandButton1_Click() Dim iLastRow As Long iLastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 c = "'" If IsNumeric(Me.TextBox1) Then c = "" Cells(iLastRow, 1).Value = c & Me.TextBox1 End Sub
Ваш формат так же не подходит. Записывает в обоих случаях формат в виде "1 / 2" отлично. А вот в формате "2,2" записывает с ошибкой. Нашла решение на просторах сети. Но не пойму почему у меня не работало с моим кодом....принципе почти тоже самое. Конечно тут самое главное в формулировке это "ПОЧТИ" ) вот код, может кому пригодиться. [vba]
Код
Sub Repair_Value() ' в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа Dim rArea As Range On Error Resume Next ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select If Err Then Exit Sub With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With For Each rArea In Selection.Areas rArea.FormulaLocal = rArea.FormulaLocal ' Это и есть главная часть, я же ее немного по другому писала. но суть та же Next rArea With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With End Sub
Ваш формат так же не подходит. Записывает в обоих случаях формат в виде "1 / 2" отлично. А вот в формате "2,2" записывает с ошибкой. Нашла решение на просторах сети. Но не пойму почему у меня не работало с моим кодом....принципе почти тоже самое. Конечно тут самое главное в формулировке это "ПОЧТИ" ) вот код, может кому пригодиться. [vba]
Код
Sub Repair_Value() ' в выделенных ячейках исправить экспортированные как текст данные чтобы нормально опознались числа Dim rArea As Range On Error Resume Next ActiveWindow.RangeSelection.SpecialCells(xlCellTypeConstants).Select If Err Then Exit Sub With Application: .ScreenUpdating = False: .EnableEvents = False: .Calculation = xlManual: End With For Each rArea In Selection.Areas rArea.FormulaLocal = rArea.FormulaLocal ' Это и есть главная часть, я же ее немного по другому писала. но суть та же Next rArea With Application: .ScreenUpdating = True: .EnableEvents = True: .Calculation = xlAutomatic: End With End Sub
Private Sub CommandButton1_Click() Dim iLastRow As Long iLastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 If IsNumeric(Me.TextBox1) Then Cells(iLastRow, 1).Value = Replace(Me.TextBox1, ",", ".") Else Cells(iLastRow, 1).Value = "'" & Me.TextBox1 End If End Sub
[/vba]
[vba]
Код
Private Sub CommandButton1_Click() Dim iLastRow As Long iLastRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 If IsNumeric(Me.TextBox1) Then Cells(iLastRow, 1).Value = Replace(Me.TextBox1, ",", ".") Else Cells(iLastRow, 1).Value = "'" & Me.TextBox1 End If End Sub
Прошу прощения, наверное не так описала. Видите в левом углу зелененький треугольничек, вот он как раз и мозолит глаз. Именно про него я пишу что ошибка)
Прошу прощения, наверное не так описала. Видите в левом углу зелененький треугольничек, вот он как раз и мозолит глаз. Именно про него я пишу что ошибка)
И чем же он Вам так мешает? Число, записанное текстом, Excel прекрасно "понимает" при выполнении с этим числом матдействий На крайний случай - есть Replace, как предложил Николай
И чем же он Вам так мешает? Число, записанное текстом, Excel прекрасно "понимает" при выполнении с этим числом матдействий На крайний случай - есть Replace, как предложил НиколайSerge_007
Проверила код. Записала, но при "1,2" все равно этот зеленый треугольничек( В файле выделила. Может я что не так делаю. Второй день читаю об этом. Мой вариант тоже не работает(.....
Проверила код. Записала, но при "1,2" все равно этот зеленый треугольничек( В файле выделила. Может я что не так делаю. Второй день читаю об этом. Мой вариант тоже не работает(.....Olena