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

Вход

Регистрация

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

 

= Мир MS Excel/Почему не всегда выполняется Len(Trim.....)? - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Почему не всегда выполняется Len(Trim.....)? (Макросы/Sub)
Почему не всегда выполняется Len(Trim.....)?
Tina90 Дата: Среда, 06.04.2016, 15:43 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
Привет!!! В одной книге макрос выполняется всегда, а в другой он же выполняется всегда с ошибкой в конце!! Ошибка начинается после того как макрос обработает примерно 20 или 30 строк! Ошибка заключается в том что макрос с середины начинает копировать значения,, которые состоят менее чем из 15 символов..... Почему??
[vba]
Код

bla bla bla
If Len(Trim(Cells(Y, X))) > 15 Then
Cells(Z, 17) = Cells(Y, X)
Z = Z + 1
           
        End If
    Next
bla bla bla
[/vba]
[moder]Покажите эту неправильную книгу и весь код макроса


Сообщение отредактировал Tina90 - Среда, 06.04.2016, 15:47
 
Ответить
СообщениеПривет!!! В одной книге макрос выполняется всегда, а в другой он же выполняется всегда с ошибкой в конце!! Ошибка начинается после того как макрос обработает примерно 20 или 30 строк! Ошибка заключается в том что макрос с середины начинает копировать значения,, которые состоят менее чем из 15 символов..... Почему??
[vba]
Код

bla bla bla
If Len(Trim(Cells(Y, X))) > 15 Then
Cells(Z, 17) = Cells(Y, X)
Z = Z + 1
           
        End If
    Next
bla bla bla
[/vba]
[moder]Покажите эту неправильную книгу и весь код макроса

Автор - Tina90
Дата добавления - 06.04.2016 в 15:43
Michael_S Дата: Среда, 06.04.2016, 18:54 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1731
Репутация: 332 ±
Замечаний: 0% ±

Excel2016
вероятно потому, что Trim убирает пробелы слева и справа, в середине оставляет.
Если мое предположение верно, то нужно использовать WorksheetFunction.Trim


ЯД: 41001136675053
WM: R389613894253
 
Ответить
Сообщениевероятно потому, что Trim убирает пробелы слева и справа, в середине оставляет.
Если мое предположение верно, то нужно использовать WorksheetFunction.Trim

Автор - Michael_S
Дата добавления - 06.04.2016 в 18:54
RAN Дата: Среда, 06.04.2016, 19:00 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4299
Репутация: 839 ±
Замечаний: 0% ±

2010
Бла блы разные бывают. Сравните. В первом случае 13, во втором 18.
[vba]
Код
   bla  bla  bla  
   бла  бла  бла  
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеБла блы разные бывают. Сравните. В первом случае 13, во втором 18.
[vba]
Код
   bla  bla  bla  
   бла  бла  бла  
[/vba]

Автор - RAN
Дата добавления - 06.04.2016 в 19:00
Michael_S Дата: Среда, 06.04.2016, 19:06 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1731
Репутация: 332 ±
Замечаний: 0% ±

Excel2016
А еще бывает, что пробелы на поверку - вовсе и не пробелы... вернее совсем не те пробелы, которые убирает Trim.


ЯД: 41001136675053
WM: R389613894253
 
Ответить
СообщениеА еще бывает, что пробелы на поверку - вовсе и не пробелы... вернее совсем не те пробелы, которые убирает Trim.

Автор - Michael_S
Дата добавления - 06.04.2016 в 19:06
Tina90 Дата: Среда, 06.04.2016, 19:23 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
to Moderator ► к сожалению книгу с ошибками показать не могу (государственная тайна, или военная уже не помню!!). весь код макроса вот ►
[vba]
Код

Sub TrimmText()

Dim X As Integer, Y As Integer, Z As Integer
On Error Resume Next
Z = 1
For Y = 1 To 96
    For X = 10 To 10
        If Len(Trim(Cells(Y, X))) > 39 Then
           Cells(Z, 1) = Cells(Y, X)
           
           
           Z = Z + 1
           
        End If
    Next
Next

End Sub
[/vba]
вероятно потому, что Trim убирает пробелы слева и справа, в середине оставляет.

Тогда мне странно вдвойне! Так как же тогда , если в двух разных книгах один и тот же макрос правильный\неправильный?? Через воркшит нельзя, макрос запускается кнопкой а не по факту события!
 
Ответить
Сообщениеto Moderator ► к сожалению книгу с ошибками показать не могу (государственная тайна, или военная уже не помню!!). весь код макроса вот ►
[vba]
Код

Sub TrimmText()

Dim X As Integer, Y As Integer, Z As Integer
On Error Resume Next
Z = 1
For Y = 1 To 96
    For X = 10 To 10
        If Len(Trim(Cells(Y, X))) > 39 Then
           Cells(Z, 1) = Cells(Y, X)
           
           
           Z = Z + 1
           
        End If
    Next
Next

End Sub
[/vba]
вероятно потому, что Trim убирает пробелы слева и справа, в середине оставляет.

Тогда мне странно вдвойне! Так как же тогда , если в двух разных книгах один и тот же макрос правильный\неправильный?? Через воркшит нельзя, макрос запускается кнопкой а не по факту события!

Автор - Tina90
Дата добавления - 06.04.2016 в 19:23
Tina90 Дата: Среда, 06.04.2016, 19:26 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
В первом случае 13, во втором 18.

может я и дура, но не настолько же!! только случаи 13 и 18 вы сами перепутали, Семен Семеныч!!


Сообщение отредактировал Tina90 - Среда, 06.04.2016, 19:27
 
Ответить
Сообщение
В первом случае 13, во втором 18.

может я и дура, но не настолько же!! только случаи 13 и 18 вы сами перепутали, Семен Семеныч!!

Автор - Tina90
Дата добавления - 06.04.2016 в 19:26
RAN Дата: Среда, 06.04.2016, 19:34 | Сообщение № 7
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4299
Репутация: 839 ±
Замечаний: 0% ±

2010
Форум похоже подменил символы.
Я не понял, вы знаете, или не верите?
К сообщению приложен файл: 0185936.xlsm(25Kb)


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеФорум похоже подменил символы.
Я не понял, вы знаете, или не верите?

Автор - RAN
Дата добавления - 06.04.2016 в 19:34
_Boroda_ Дата: Среда, 06.04.2016, 19:37 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 9828
Репутация: 4148 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
в двух разных книгах один и тот же макрос правильный\неправильный?

Прекрасно, и какой отсюда вывод? Ну наверное такой, что ошибка возникает не из-за макроса, а из-за данных файла, как Вы думаете? Ну и следствие - весь файл не нужен, а вот некоторые значения оттуда (в особенности те, где ошибка получается) нужны.
У Вас ничего, кроме Трима, не может такую реакцию "макрос с середины начинает копировать значения,, которые состоят менее чем из 15 символов" давать. Поэтому, как я и писал еще в первом сообщении, нужен сам текст.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение
в двух разных книгах один и тот же макрос правильный\неправильный?

Прекрасно, и какой отсюда вывод? Ну наверное такой, что ошибка возникает не из-за макроса, а из-за данных файла, как Вы думаете? Ну и следствие - весь файл не нужен, а вот некоторые значения оттуда (в особенности те, где ошибка получается) нужны.
У Вас ничего, кроме Трима, не может такую реакцию "макрос с середины начинает копировать значения,, которые состоят менее чем из 15 символов" давать. Поэтому, как я и писал еще в первом сообщении, нужен сам текст.

Автор - _Boroda_
Дата добавления - 06.04.2016 в 19:37
KuklP Дата: Среда, 06.04.2016, 19:39 | Сообщение № 9
Группа: Проверенные
Ранг: Старожил
Сообщений: 2020
Репутация: 439 ±
Замечаний: 20% ±

Может попробовать явно указать к чему относятся все эти Cells(...). В смысле родительский объект.
[vba]
Код
Sub TrimmText()
Dim X As Integer, Y As Integer, Z As Integer
On Error Resume Next
with activesheet
Z = 1
For Y = 1 To 96
If Len(Trim(.Cells(Y, 10))) > 39 Then
.Cells(Z, 1) = .Cells(Y, 10)
Z = Z + 1
End If
Next
end with
End Sub
[/vba]


Ну, с НДС и мы чего-то стoим! kuklp@mail.ru
WM Z206653985942, R334086032478, U238399322728


Сообщение отредактировал KuklP - Среда, 06.04.2016, 19:43
 
Ответить
СообщениеМожет попробовать явно указать к чему относятся все эти Cells(...). В смысле родительский объект.
[vba]
Код
Sub TrimmText()
Dim X As Integer, Y As Integer, Z As Integer
On Error Resume Next
with activesheet
Z = 1
For Y = 1 To 96
If Len(Trim(.Cells(Y, 10))) > 39 Then
.Cells(Z, 1) = .Cells(Y, 10)
Z = Z + 1
End If
Next
end with
End Sub
[/vba]

Автор - KuklP
Дата добавления - 06.04.2016 в 19:39
Tina90 Дата: Пятница, 08.04.2016, 23:57 | Сообщение № 10
Группа: Пользователи
Ранг: Новичок
Сообщений: 45
Репутация: -16 ±
Замечаний: 60% ±

Excel 2013
Всем спасибо!! girl_dance У меня в книге была ошибка, результат события листа оставлял данные в том массиве, в который проводилось копирование! Теперь тот массив перед копированием очищаю и все в порядке!!! а ведь уже собиралась гневное письмо писать в майкрософт rules
 
Ответить
СообщениеВсем спасибо!! girl_dance У меня в книге была ошибка, результат события листа оставлял данные в том массиве, в который проводилось копирование! Теперь тот массив перед копированием очищаю и все в порядке!!! а ведь уже собиралась гневное письмо писать в майкрософт rules

Автор - Tina90
Дата добавления - 08.04.2016 в 23:57
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Почему не всегда выполняется Len(Trim.....)? (Макросы/Sub)
Страница 1 из 11
Поиск:

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