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

Вход

Регистрация

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

 

= Мир MS Excel/Букву путает с числом - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Букву путает с числом
evgenmuravsky Дата: Среда, 24.11.2021, 16:48 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Добрый день всем. Делаю табель рабочего времени. По верхнему должно табелю должен быть сформирован нижний. Так как в табеле кроме отработанных часов может стоять буква (выходной, больничный отпуск), то при сравнении значения ячейки с числом, нет нормального сравнения и значение типа стринг понимает как числовое. Когда использовал свойство Range, такой проблемы не было. (извините за корявый код, пока учусь, использую примитивное программирование)

[vba]
Код

Application.ScreenUpdating = False
  Dim i As Integer, j As Integer, t As Integer
  i = 12: j = 19: t = 85
  Do While L4.Range("E" & i).Value <> ""
    Do While j <= 51
      For t = 82 To 113 Step 2
        If L4.Cells(i, j).Value = L4.Range("CA" & t).Value Then
          L4.Cells(i + 110, j).Value = L4.Cells(i, j).Value
          Exit For
        End If
      Next t
      [b]If L4.Cells(i, j).Value > 8 Then L4.Cells(i + 110, j).Value = 8[/b] 'Вот тут и вся загвоздка, видит что буква, но перепишет на цифру.
       
      If L4.Cells(i, j).Value <= 8 Then L4.Cells(i + 110, j).Value = L4.Cells(i, j).Value
      
      j = j + 1
      If j = 34 Then j = 36
    Loop
    j = 19: t = 85
    i = i + 1
  Loop
[/vba]
К сообщению приложен файл: 1602022.xls (181.0 Kb)
 
Ответить
СообщениеДобрый день всем. Делаю табель рабочего времени. По верхнему должно табелю должен быть сформирован нижний. Так как в табеле кроме отработанных часов может стоять буква (выходной, больничный отпуск), то при сравнении значения ячейки с числом, нет нормального сравнения и значение типа стринг понимает как числовое. Когда использовал свойство Range, такой проблемы не было. (извините за корявый код, пока учусь, использую примитивное программирование)

[vba]
Код

Application.ScreenUpdating = False
  Dim i As Integer, j As Integer, t As Integer
  i = 12: j = 19: t = 85
  Do While L4.Range("E" & i).Value <> ""
    Do While j <= 51
      For t = 82 To 113 Step 2
        If L4.Cells(i, j).Value = L4.Range("CA" & t).Value Then
          L4.Cells(i + 110, j).Value = L4.Cells(i, j).Value
          Exit For
        End If
      Next t
      [b]If L4.Cells(i, j).Value > 8 Then L4.Cells(i + 110, j).Value = 8[/b] 'Вот тут и вся загвоздка, видит что буква, но перепишет на цифру.
       
      If L4.Cells(i, j).Value <= 8 Then L4.Cells(i + 110, j).Value = L4.Cells(i, j).Value
      
      j = j + 1
      If j = 34 Then j = 36
    Loop
    j = 19: t = 85
    i = i + 1
  Loop
[/vba]

Автор - evgenmuravsky
Дата добавления - 24.11.2021 в 16:48
Pelena Дата: Среда, 24.11.2021, 18:51 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19403
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Можно попробовать функцию IsNumeric, которая проверяет, является ли аргумент числом
[vba]
Код
If IsNumeric(L4.Cells(i, j).Value) Then
If L4.Cells(i, j).Value > 8 Then L4.Cells(i + 110, j).Value = 8
End if
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Можно попробовать функцию IsNumeric, которая проверяет, является ли аргумент числом
[vba]
Код
If IsNumeric(L4.Cells(i, j).Value) Then
If L4.Cells(i, j).Value > 8 Then L4.Cells(i + 110, j).Value = 8
End if
[/vba]

Автор - Pelena
Дата добавления - 24.11.2021 в 18:51
evgenmuravsky Дата: Четверг, 25.11.2021, 10:25 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 5
Репутация: 0 ±
Замечаний: 0% ±

Отлично, помогло. Спасибо большое.
 
Ответить
СообщениеОтлично, помогло. Спасибо большое.

Автор - evgenmuravsky
Дата добавления - 25.11.2021 в 10:25
  • Страница 1 из 1
  • 1
Поиск:

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