Top.Mail.Ru
Ответы
Аватар пользователя
14лет
Изменено
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

Помогите с простым макросом для Excel! (см. внутри)

В кратце: нужно сделать макрос, который будет каждую ячейку открывать в режим редактирования (обычный двойной клик по ячейке).
Лучше конечно если только в выбранной области, но это не главное, это если что самому дописать получится, я думаю

Подробно:
Есть массив данных.
Один столбик имеет вид

"Mar 2010
Mar 2010
Mar 2010
Mar 2010
Apr 2010
Apr 2010
Apr 2010
May 2010
May 2010"

Естественно excel не воспринимает его как даты, т.к. формат такого написания ему неизвестен.

С помощью макроса произвожу замену этого на более приглядный вид

март 2010
март 2010
март 2010
март 2010
апрель 2010
апрель 2010
апрель 2010
май 2010
май 2010

вот сам макрос , с помощью которого я это делаю( тупиковой, но как смог, главное, что работает )

"Sub замена_дат()
'
' замена_дат Макрос
'
' Сочетание клавиш: Ctrl+t
'

Cells.Replace What:="Jan", Replacement:="январь", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="feb", Replacement:="февраль", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="Mar", Replacement:="март", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="Apr", Replacement:="апрель", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="May", Replacement:="май", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="Jun", Replacement:="июнь", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="Jul", Replacement:="июль", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="aug", Replacement:="август", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="sep", Replacement:="сентябрь", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="oct", Replacement:="октябрь", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="nov", Replacement:="ноябрь", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Cells.Replace What:="dec", Replacement:="декабрь", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub
"

Но весь облом в том , что когда появляются ячейки вида
март 2010
март 2010
март 2010
март 2010
и тд

чтобы они стали отображаться именно как даты нужно кликнуть на каждую дважды, т.е. сделать ячейку активной, а потом убрать выделение. При чем нужно не просто выделение на ячейку, а именно включить режим редактирования ячейки.
Через простое форматирование получилось. ячейка имеет правильный формат, но пока не кликну на нее, толку нет.
А пока она не отобразится в нужном виде, эксель так и не сможет сортировать по месяцам, а не по алфавиту .

Так как же черт возьми написать, чтобы в выделенном участке каждая ячейка поочередно активировалась и перешла к следующей ?

По дате
По рейтингу
Аватар пользователя
Новичок
14лет

Меняйте свой макрос на этот
Код
Sub замена_дат ()
For Each cell In Selection
If cell.Value <> "" Then
mm = Left(cell.Value, 3)
gg = Right(cell.Value, 4)
cell.FormulaR1C1 = mm & "-" & gg
End If
Next
End Sub
Выделить диапазон с датами под замену и запустить макрос.

Аватар пользователя
Просветленный
14лет

задай формулу ечейки и не мучайся