Я надеюсь, что никто не будет оскорблен мной, задав вопрос о , работающем. Мне сказали, однако, SO тоже для обучения, поэтому я надеюсь, что все будет хорошо.Попытка понять разницу
Я хочу, чтобы попытаться понять разницу между двумя кодами, которые я написал, одна работающая, одна неудачная.
Этот код неудачу версия:
Sub Lowercase()
Dim Seq As Range
Set Seq = Range(Range("A2"), ActiveCell.SpecialCells(xlLastCell))
For Each cell In Seq
cell.Value = LCase(cell.Value)
Next cell
End Sub
Он положить вещи в нижнем регистре просто отлично, но зацикливается, пока я не закрыть или минимизировать Excel. Думая на старом коде я изменил код так:
Sub Lowercase()
Dim Seq As Range, v As Variant
Dim L As Long, i As Long
Set Seq = Range(Range("A2"), ActiveCell.SpecialCells(xlLastCell))
For Each cell In Seq
v = cell.Value
L = Len(v)
For i = 1 To L
cell.Value = LCase(cell.Value)
Next i
Next cell
End Sub
Это прекрасно работает (немного медленно, но хорошо) и я не понимаю, почему.
Файлы Я пытаюсь преобразовать выглядеть (Строка A2 имеет тенденцию продолжаться 600 до 1200 символов):
Однако я до сих пор называют все клетки, и я не знаю, почему давая ячейке значение, которое фактически прекращает цикл. Как, но я уверен, что я ошибаюсь, у меня такое чувство, что я все еще не изменил часть кода «Для каждой ячейки/следующей ячейки».
EDIT: Это связано с неправильным использованием xlLastCell для моих рабочих листов, поскольку это была не последняя ячейка в строке 2. Во втором коде значение могло достигнуть 0, тогда как в первом нет. Код должен был быть изменен, чтобы использовать другой метод для поиска последней ячейки.
Я не могу воспроизвести вашу проблему. Ваша первая версия отлично подходит для меня, без бесконечного цикла (и ваша вторая версия кажется бессмысленной). Можете ли вы сделать воспроизводимый пример (который также объясняет макет листа)? –
Сравнивая две версии, кажется, что должна быть хотя бы одна ячейка со свойством «Len (cell.Value) = 0', но по какой-либо причине« LCase (cell.Value) »не возвращается. Я понятия не имею, что может вызвать это. Циркулярные ссылки? Что-то странное с неустойчивыми UDF? Коррумпированная книга? Пока вы не сделаете его воспроизводимым, не так много. –
Отредактировано, чтобы показать образец листов Excel. Первые коды дают мне «синий поворот мысли» с несколькими файлами для меня, поэтому он воспроизводится для меня. Возможно, я неверно истолковываю то, что вы подразумеваете под «воспроизводимым». Я не знаком с такими терминами, как «volatile UDF». – GMV