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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.11.2016, 13:41   #1
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию VBA. Изменение формата столбцов

Доброго времени суток.
Записал маааленький макрос, теперь пытаюсь понять, почему он не работает?
Код:
Private Sub Workbook_Open()
    Range("D:D,E:E").Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    Columns("B:B").Select
    Selection.NumberFormat = "m/d/yyyy"
    With Selection
        .HorizontalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
End Sub
Идея такая, отформатировать столбцы D и E в финансовый тип без буквы р - рублей в конце, потом столбец В привести в короткий формат даты и выровнять его по центру.

Он не срабатывает как нужно, т.е. с начала меняет Д и Е на финансовый, потом меняет В на короткий формат даты, потом меняет Д и Е на короткий формат даты.
Не понимаю.

Последний раз редактировалось Artsiom; 28.11.2016 в 13:44.
Artsiom вне форума Ответить с цитированием
Старый 28.11.2016, 14:00   #2
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Хм, кажется понял.
У меня строка 1 и 3 имеют "объединить и поместить в центре".
Похоже из-за этого...

А можно как ни будь указать диапазон типа:
Весь столбец D, кроме D1 и D3?
Artsiom вне форума Ответить с цитированием
Старый 28.11.2016, 14:15   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Код:
Range("D2,D4:D" & Rows.Count)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.11.2016, 14:25   #4
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
Код:
Range("D2,D4:D" & Rows.Count)
Всё равно ругается на этот диапазон...

Придумал вариант:
Код:
Private Sub Workbook_Open()

    Set D = Range("D5", ActiveSheet.Range("D65536").End(xlUp))
    Set E = Range("E5", ActiveSheet.Range("E65536").End(xlUp))
    Set B = Range("B5", ActiveSheet.Range("B65536").End(xlUp))

    Range(D, E).Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    
    Columns(B).Select
    Selection.NumberFormat = "m/d/yyyy"
    With Selection
        .HorizontalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
    
End Sub
Но что-то ему не нравится Columns(B).Select
Artsiom вне форума Ответить с цитированием
Старый 28.11.2016, 14:30   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

правильно ругается, ерунда написана.
а где в Вашем варианте то, что предлагал я?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 28.11.2016, 14:38   #6
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
Смущение

Цитата:
Сообщение от IgorGO Посмотреть сообщение
правильно ругается, ерунда написана.
а где в Вашем варианте то, что предлагал я?
Вот
Код:
Private Sub Workbook_Open()
    Set B = Range("B2,B4:B" & Rows.Count)
 
    Columns(B).Select
    Selection.NumberFormat = "m/d/yyyy"
    With Selection
        .HorizontalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
End Sub
Ругается на Columns(B).Select
Artsiom вне форума Ответить с цитированием
Старый 28.11.2016, 14:50   #7
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Всё идеально, всё работает, спасибо
Вдруг кому нужно будет:
Код:
Private Sub Workbook_Open()

    Set D = Range("D6", ActiveSheet.Range("D65536").End(xlUp))
    Set E = Range("E6", ActiveSheet.Range("E65536").End(xlUp))
    
    Range(D, E).Select
    Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    Selection.NumberFormat = "_(* #,##0.00_);_(* (#,##0.00);_(* ""-""??_);_(@_)"
    
    Set F = Range("F6", ActiveSheet.Range("F65536").End(xlUp))
    Set H = Range("H6", ActiveSheet.Range("H65536").End(xlUp))
    Range(F, H).Select
    With Selection
        .HorizontalAlignment = xlLeft
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
    
    Range("B2,B6:B" & Rows.Count).Select
    Selection.NumberFormat = "m/d/yyyy"
    With Selection
        .HorizontalAlignment = xlCenter
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
    End With
    
End Sub
Artsiom вне форума Ответить с цитированием
Старый 28.11.2016, 14:55   #8
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Artsiom Посмотреть сообщение
Selection.NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
без етой строки не работает?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 28.11.2016, 15:03   #9
Artsiom
Форумчанин
 
Аватар для Artsiom
 
Регистрация: 13.07.2012
Сообщений: 357
По умолчанию

Хм, посмотрел - работает и без неё.
Я записал макрос и посмотрел код, там уже это было.
Artsiom вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изменение формата даты TYMON C++ Builder 2 21.05.2015 01:07
Изменение формата чч:мм на мм:сс Новичок77 Microsoft Office Excel 2 19.11.2014 15:07
Изменение формата картинок asale SQL, базы данных 6 17.04.2012 08:19
Изменение формата zenner Microsoft Office Word 2 01.04.2010 09:02
Изменение формата DRAGGER Фриланс 6 14.10.2008 19:36