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

Вход

Регистрация

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

 

= Мир MS Excel/Запись в разных форматах - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись в разных форматах (Макросы/Sub)
Запись в разных форматах
Olena Дата: Четверг, 16.02.2023, 10:01 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

Всем доброго дня.
Прошу подсказки в в новой казалось бы не сложной проблеме.
Имеем форму ввода. В один и тот же текст бокс может вводиться значеервом случае ния в виде "1,2" и так же в виде "1 / 2".
В первом случае я прописываю формат ввода
[vba]
Код
Cells(iLastRow, 1).Value = Me.TextBox1
[/vba] в этом варианте записывается числовое значение в виде текста и это есть ошибка. тогда для него я применяю макрос "format" не совсем конечно верно так как ну очень не удобно....
Во втором же случает при записи в виде "1 / 2" значение как бы и верно пишется, но макрос "format" переформатирует его и значение перезаписывается...
Подскажите как огранизавать запись в разных форматах, что бы при десятичном вводе не было ошибки значения.
Файл прикрепляю.
К сообщению приложен файл: TEST.xlsm (17.9 Kb)
 
Ответить
СообщениеВсем доброго дня.
Прошу подсказки в в новой казалось бы не сложной проблеме.
Имеем форму ввода. В один и тот же текст бокс может вводиться значеервом случае ния в виде "1,2" и так же в виде "1 / 2".
В первом случае я прописываю формат ввода
[vba]
Код
Cells(iLastRow, 1).Value = Me.TextBox1
[/vba] в этом варианте записывается числовое значение в виде текста и это есть ошибка. тогда для него я применяю макрос "format" не совсем конечно верно так как ну очень не удобно....
Во втором же случает при записи в виде "1 / 2" значение как бы и верно пишется, но макрос "format" переформатирует его и значение перезаписывается...
Подскажите как огранизавать запись в разных форматах, что бы при десятичном вводе не было ошибки значения.
Файл прикрепляю.

Автор - Olena
Дата добавления - 16.02.2023 в 10:01
Nic70y Дата: Четверг, 16.02.2023, 10:32 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
так пойдет?
[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
[/vba]


ЮMoney 41001841029809
 
Ответить
Сообщениетак пойдет?
[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
[/vba]

Автор - Nic70y
Дата добавления - 16.02.2023 в 10:32
Serge_007 Дата: Четверг, 16.02.2023, 10:32 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Здравствуйте

Если правильно понял Ваш вопрос, то:
1. Задокументируйте макрос format
2. строку [vba]
Код
Cells(iLastRow, 1).Value = Me.TextBox1
[/vba] замените на [vba]
Код
Cells(iLastRow, 1).Value = CStr(Me.TextBox1)
[/vba]
3. Формат ячеек в столбце А установите "Текстовый"


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

Если правильно понял Ваш вопрос, то:
1. Задокументируйте макрос format
2. строку [vba]
Код
Cells(iLastRow, 1).Value = Me.TextBox1
[/vba] замените на [vba]
Код
Cells(iLastRow, 1).Value = CStr(Me.TextBox1)
[/vba]
3. Формат ячеек в столбце А установите "Текстовый"

Автор - Serge_007
Дата добавления - 16.02.2023 в 10:32
Olena Дата: Четверг, 16.02.2023, 10:47 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

так пойдет?

Попробовала ваш вариант, не работает(
Формат ячеек в столбце А установите "Текстовый"

Ваш формат так же не подходит.
Записывает в обоих случаях формат в виде "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
[/vba]
Всем благодарна за отклик.


Сообщение отредактировал Olena - Четверг, 16.02.2023, 10:54
 
Ответить
Сообщение
так пойдет?

Попробовала ваш вариант, не работает(
Формат ячеек в столбце А установите "Текстовый"

Ваш формат так же не подходит.
Записывает в обоих случаях формат в виде "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
[/vba]
Всем благодарна за отклик.

Автор - Olena
Дата добавления - 16.02.2023 в 10:47
Nic70y Дата: Четверг, 16.02.2023, 10:54 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
Попробовала ваш вариант, не работает(
в смысле? совсем не работает?
см. файл.
К сообщению приложен файл: 3606490.xlsm (16.1 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщение
Попробовала ваш вариант, не работает(
в смысле? совсем не работает?
см. файл.

Автор - Nic70y
Дата добавления - 16.02.2023 в 10:54
Olena Дата: Четверг, 16.02.2023, 10:56 | Сообщение № 6
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

совсем не работает?

Работает, но при вводе "2,2" пишет число с "ошибкой". И при случае просчета формулой, данные не подтянуться.
 
Ответить
Сообщение
совсем не работает?

Работает, но при вводе "2,2" пишет число с "ошибкой". И при случае просчета формулой, данные не подтянуться.

Автор - Olena
Дата добавления - 16.02.2023 в 10:56
Nic70y Дата: Четверг, 16.02.2023, 11:08 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
[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
[/vba]


ЮMoney 41001841029809
 
Ответить
Сообщение[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
[/vba]

Автор - Nic70y
Дата добавления - 16.02.2023 в 11:08
Serge_007 Дата: Четверг, 16.02.2023, 11:09 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
в формате "2,2" записывает с ошибкой
Видимо Вы что-то не так делаете
Нормально всё записывается, никаких ошибок
К сообщению приложен файл: 2398380.png (30.4 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
в формате "2,2" записывает с ошибкой
Видимо Вы что-то не так делаете
Нормально всё записывается, никаких ошибок

Автор - Serge_007
Дата добавления - 16.02.2023 в 11:09
Olena Дата: Четверг, 16.02.2023, 12:03 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

никаких ошибок

Прошу прощения, наверное не так описала.
Видите в левом углу зелененький треугольничек, вот он как раз и мозолит глаз. Именно про него я пишу что ошибка)
 Cells(iLastRow, 1).Value = Replace(Me.TextBox1, ",", ".")

Тоже пробовала ранее через Replace, думала может и правда какой апостраф стоит перед чисами.
 
Ответить
Сообщение
никаких ошибок

Прошу прощения, наверное не так описала.
Видите в левом углу зелененький треугольничек, вот он как раз и мозолит глаз. Именно про него я пишу что ошибка)
 Cells(iLastRow, 1).Value = Replace(Me.TextBox1, ",", ".")

Тоже пробовала ранее через Replace, думала может и правда какой апостраф стоит перед чисами.

Автор - Olena
Дата добавления - 16.02.2023 в 12:03
Nic70y Дата: Четверг, 16.02.2023, 12:08 | Сообщение № 10
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
Тоже пробовала ранее через Replace
ну так работает жеж


ЮMoney 41001841029809
 
Ответить
Сообщение
Тоже пробовала ранее через Replace
ну так работает жеж

Автор - Nic70y
Дата добавления - 16.02.2023 в 12:08
Serge_007 Дата: Четверг, 16.02.2023, 12:19 | Сообщение № 11
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
в левом углу зелененький треугольничек
И чем же он Вам так мешает?
Число, записанное текстом, Excel прекрасно "понимает" при выполнении с этим числом матдействий
На крайний случай - есть Replace, как предложил Николай


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
в левом углу зелененький треугольничек
И чем же он Вам так мешает?
Число, записанное текстом, Excel прекрасно "понимает" при выполнении с этим числом матдействий
На крайний случай - есть Replace, как предложил Николай

Автор - Serge_007
Дата добавления - 16.02.2023 в 12:19
Olena Дата: Четверг, 16.02.2023, 12:26 | Сообщение № 12
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

есть Replace, как предложил Николай

Проверила код. Записала, но при "1,2" все равно этот зеленый треугольничек(
В файле выделила.
Может я что не так делаю. Второй день читаю об этом.
Мой вариант тоже не работает(.....
К сообщению приложен файл: 3606490_1.xlsm (18.2 Kb)


Сообщение отредактировал Olena - Четверг, 16.02.2023, 12:29
 
Ответить
Сообщение
есть Replace, как предложил Николай

Проверила код. Записала, но при "1,2" все равно этот зеленый треугольничек(
В файле выделила.
Может я что не так делаю. Второй день читаю об этом.
Мой вариант тоже не работает(.....

Автор - Olena
Дата добавления - 16.02.2023 в 12:26
Nic70y Дата: Четверг, 16.02.2023, 12:30 | Сообщение № 13
Группа: Друзья
Ранг: Экселист
Сообщений: 8705
Репутация: 2260 ±
Замечаний: 0% ±

Excel 2010
Olena, в вашем файле нет Replace
К сообщению приложен файл: 0195776.xlsm (18.4 Kb)


ЮMoney 41001841029809
 
Ответить
СообщениеOlena, в вашем файле нет Replace

Автор - Nic70y
Дата добавления - 16.02.2023 в 12:30
Olena Дата: Четверг, 16.02.2023, 12:35 | Сообщение № 14
Группа: Пользователи
Ранг: Участник
Сообщений: 63
Репутация: 1 ±
Замечаний: 20% ±

в вашем файле нет Replace

Капец...ну как я так тестировала....
Огромная вам благодарность. Сейчас под свой файл попробую подстроить.
 
Ответить
Сообщение
в вашем файле нет Replace

Капец...ну как я так тестировала....
Огромная вам благодарность. Сейчас под свой файл попробую подстроить.

Автор - Olena
Дата добавления - 16.02.2023 в 12:35
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Запись в разных форматах (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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