Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / NumberFormat для Range / 9 сообщений из 9, страница 1 из 1
22.10.2006, 23:52:58
    #34072751
экселист
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
имеется xla файл, в котором есть некий макрос на форматрирование страницы, добавил туда код сгенеренный самими экселем
Код: plaintext
1.
2.
                Columns("H:H").Select
                Selection.NumberFormat = "#,##0.00$"

и стала вылетать ошибка "Нельзя установить NumberFormat для Range" на нем

весь код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
    Dim xSheets As Sheets
    Dim xSheet As Worksheet
    
    Set xSheets = Workbooks(parNameBook).Sheets
    
    Dim sNameRange As String
    Dim i As Integer
    For Each xSheet In xSheets
        For i =  1  To  2 
            sNameRange = NameRangeData(xSheet, i)
            If sNameRange <> "Null" Then
                xSheet.Range("A1:H1").Select
                Selection.Font.Bold = True
                Columns("H:H").Select
                Selection.NumberFormat = "#,##0.00$" <-- Здесь ошибка
                xSheet.Range(sNameRange).Columns("A:A").ColumnWidth =  8 
                xSheet.Range(sNameRange).Columns("B:B").ColumnWidth =  25 
                xSheet.Range(sNameRange).Columns("C:C").ColumnWidth =  17 
                xSheet.Range(sNameRange).Columns("D:D").ColumnWidth =  20 
                xSheet.Range(sNameRange).Columns("E:E").ColumnWidth =  10 
                xSheet.Range(sNameRange).Columns("F:F").ColumnWidth =  8 
                xSheet.Range(sNameRange).Columns("G:G").ColumnWidth =  8 
                xSheet.Range(sNameRange).Columns("H:H").ColumnWidth =  15 
            End If
        Next i
    Next

в чем ошибка? и как ее исправить?
...
Рейтинг: 0 / 0
23.10.2006, 00:38:07
    #34072784
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
Возможно есть защищенные листы.

В любом случае, я бы слегка оптимизировал код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    Dim xSheets As Sheets
    Dim xSheet As Worksheet
    Dim i As Integer
    
    Set xSheets = Workbooks(parNameBook).Sheets
    
    For Each xSheet In xSheets
        For i =  1  To  2 
            If NameRangeData(xSheet, i) <> "Null" Then
                With xSheet.Range("A1:H1")
                    .Font.Bold = True
                    .ColumnWidth = Array( 8 ,  25 ,  17 ,  20 ,  10 ,  8 ,  8 ,  15 )
                    .Parent.Columns("H:H").NumberFormat = "#,##0.00$"
                End With
            End If
        Next i
    Next xSheet

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
23.10.2006, 01:22:07
    #34072799
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
Даже так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    Dim xSheets As Sheets
    Dim xSheet As Worksheet
    
    Set xSheets = Workbooks(parNameBook).Sheets
    
    For Each xSheet In xSheets
        If NameRangeData(xSheet,  1 ) <> "Null" Or NameRangeData(xSheet,  2 ) <> "Null" Then
            With xSheet.Range("A1:H1")
                .Font.Bold = True
                .ColumnWidth = Array( 8 ,  25 ,  17 ,  20 ,  10 ,  8 ,  8 ,  15 )
                .Parent.Columns("H:H").NumberFormat = "#,##0.00$"
            End With
        End If
    Next xSheet

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
23.10.2006, 05:49:14
    #34072846
экселист
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
спасибо, за оптимизацию, но ошибка все же осталась: "Run-time error 1004: Нельзя установить свойство NumberFormat класса Range"

листы не защищенные
...
Рейтинг: 0 / 0
23.10.2006, 07:32:44
    #34072891
orunbek
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
книгу архивните и выложьте
...
Рейтинг: 0 / 0
23.10.2006, 12:27:38
    #34073574
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
экселистспасибо, за оптимизацию, но ошибка все же осталась: "Run-time error 1004: Нельзя установить свойство NumberFormat класса Range"

листы не защищенные

1) Может есть скрытые защищенные листы, ведь код пробегает по всем листам без исключения
2) У тебя перебор листов идет в коллекции Sheets, которая включает Worksheets, Charts, Excel4MacroSheets

Но вообще orunbek прав нужен сам файл.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
23.10.2006, 17:19:41
    #34074818
экселист
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
orunbekкнигу архивните и выложьте
вот книга
...
Рейтинг: 0 / 0
23.10.2006, 17:31:05
    #34074860
vbapro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
а parNameBook не книга - надстройка? может к ней и обращаетесь?...
...
Рейтинг: 0 / 0
23.10.2006, 18:38:23
    #34075068
KL (XL)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
NumberFormat для Range
экселист orunbekкнигу архивните и выложьте
вот книга

А где же функция parNameBook и остальной код - тот, что не работает? Выкладывай лучше сам файл, дающий ошибку, а данные то как раз роли не играют.

KL
[MVP - Microsoft Excel]
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / NumberFormat для Range / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]