Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.10.2011, 02:06   #1
alex0070
Новичок
Джуниор
 
Регистрация: 14.10.2011
Сообщений: 2
По умолчанию Макрос чтобы во всех ячейках столбца удалить последний символ

Excel 2003. Стоит задача: во всех ячейках столбца необходимо удалить последний символ. Выделяю верхнюю ячейку и записываю макрос: F2 (переход к правке в строке формул), затем END (перевод курсора в конец строки) , BACKSPAСE (Удалить символ) ENTER (принять и перейти к след. ячейке), остановить запись макроса. Результат работы – в обрабатываемую ячейку поставит содержимое ячейки, на которой записывался макрос (в данном случае первой), вместо того, чтобы обработать содержимое выделенной ячейки.
Получилось так:

Sub Макрос1()
'
' Макрос1 Макрос
' Макрос записан 14.10.2011 (S)
'
' Сочетание клавиш: Ctrl+e
'
ActiveCell.FormulaR1C1 = "Cодержимое верхней ячейк"
Range("E2").Select
End Sub

Активной ячейке нужно не присваивать текст, а явно указать нажатие ентера, а нажатие BACKSPAСE вообще проигнорировано. Как победить?
alex0070 вне форума Ответить с цитированием
Старый 14.10.2011, 02:39   #2
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
sub DelLastChar
  dim r as long, v as string
  for r = 1 to cells(rows.count, activecell.column).end(xlup).row
    v = cstr(cells(r, activecell.column).value)
    if v <> "" then cells(r, activecell.column).value = left(v, len(v)-1)
  next
end sub
перед запуском макроса активной должна быть любая ячейка редактируемого столбца
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.10.2011, 06:19   #3
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Вариант без цикла:
Код:
Sub www()
Dim r$
r = Range(Cells(1, ActiveCell.Column), Cells(65536, ActiveCell.Column).End(xlUp)).Address
Range(r) = Evaluate("IF(" & r & "="""","""",LEFT(" & r & ",LEN(" & r & ")-1))")
End Sub
перед запуском макроса активной должна быть любая ячейка редактируемого столбца
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 14.10.2011 в 06:23.
kuklp вне форума Ответить с цитированием
Старый 14.10.2011, 09:54   #4
vikttur
Участник клуба
 
Регистрация: 16.05.2010
Сообщений: 1,249
По умолчанию

Вариант без макроса
Код:
=ПСТР(A1;1;ДЛСТР(A1)-1)
=ЛЕВСИМВ(A1;ДЛСТР(A1)-1)
Заменить на значения, подставить вместо исходного столбца.
vikttur вне форума Ответить с цитированием
Старый 14.10.2011, 22:45   #5
alex0070
Новичок
Джуниор
 
Регистрация: 14.10.2011
Сообщений: 2
По умолчанию

Спасибо IgorGO, kuklp и vikttur за Ваши решения, сейчас попробую эти варианты
alex0070 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удалить последний символ ячейки andre344 Microsoft Office Excel 10 14.09.2020 16:10
первый и последний символ в строке AndreyF Общие вопросы Delphi 10 03.08.2016 12:09
[Делфи]Как удалить последний символ в edit1.text? zotox Помощь студентам 3 05.08.2009 12:05
объясните почему рубится последний символ hen Общие вопросы C/C++ 4 07.04.2009 22:01
В прямоугольной матрице переставить столбцы так, чтобы сумма элементов столбца росла от первого столбца Aleo13 Помощь студентам 5 15.10.2008 18:34