Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA

Модерирует : ShIvADeSt

ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273  Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

   

AndVGri

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Вы ображаетесь ниже к Worksheets("Остаток") и "Ведомость" (до того "TDSheet")
Тогда можно код записать так

Код:
 
    Sheets("TDSheet").Name = "Ведомость"
    Sheets.Add
    Sheets("Лист1").Move After:=Sheets(2)
    Sheets("Лист1").Name = "Остаток"
    ...
    Dim pSource As Worksheet, pDest As Worksheet
 

заменить кодом

Код:
 
    Dim pSource As Worksheet, pDest As Worksheet
 
    Set pSource = Worksheets("TDSeet")
    Set pDest = Worksheets.Add
    pDest.Move Aster:=Sheets(2)
    'Кстати, не мешало бы в следующих строках проверить, а нет ли листов с таким именем?
    pDest.Name = "Остаток"
    pSource.Name = "Ведомость"
 

Следующий блок

Код:
 
    Worksheets("Остаток").Range("A1").Value = "Наименование"
    Worksheets("Остаток").Range("B1").Value = "Номенклатурный номер"
    Worksheets("Остаток").Range("C1").Value = "Остаток кол-во"
    Worksheets("Остаток").Range("D1").Value = "Остаток цена"
    Worksheets("Остаток").Range("E1").Value = "Приход количество"
    Worksheets("Остаток").Range("F1").Value = "Приход цена"
    Sheets.Add
    Sheets("Ведомость").Select
    ActiveWindow.DisplayOutline = False
    Rows("1:11").Select
    Selection.Delete Shift:=xlUp
    Range("A:A,D:D,F:F,G:G,H:H").Select
    Range("G1").Activate
    Selection.Delete Shift:=xlToLeft
    Range("A1").Select
 

Упрощается

Код:
 
    'Так как "Остаток" активный рабочий лист (чем вы пользуетесь далее)
    Range("A1:F1").Value = Array("Наименование", "Номенклатурный номер", "Остаток кол-во", _
                                                 "Остаток цена", "Приход количество", "Приход цена")
    'Sheets.Add - вот это явно лишнее
     
    pSource.Select
    Rows("1:11").Delete Shift :=xlUp
    Columns("A:H").Delete Shift := xlToLeft
 

Следующий блок, не стоит использовать цикл, если вы физически изменяете область его действия

Код:
 
    Dim r As Long, LastRow As Long
    LastRow = Worksheets("Ведомость").Range("A65536").End(xlUp).Row
    For r = 1 To LastRow
        If Cells(r, 1).Font.Bold = True Then
        Rows(r + 1).Delete Shift:=xlUp
        End If
        If Cells(r, 1).Font.Bold = True Then
        Rows(r).Delete Shift:=xlUp
        End If
    Next r
 

Лучше это выполнить так

Код:
 
    Dim r As Long, LastRow As Long
    LastRow = Range("A65536").End(xlUp).Row 'Опять же, "Ведомость" уже активный лист
    r = 1
    Do Until r > LastRow
        If Cells(r, 1).Font.Bold Then 'Если Bold = True итак войдёт, масло маслянное получилось
          Rows(r + 1).Delete Shift:=xlUp
          LastRow = LastRow - 1
        End If
        If Cells(r, 1).Font.Bold Then
            Row(r).Delete Shift:=xlUp
            LastRow = LastRow - 1
        End If
        r = r + 1
    Loop
 

Вообще по этим блокам впрос: а стоило ли корёжить исходные данные, не проще ли было организовать синтактсический разбор исходных данных без этих удалений?
Ну, и последний блок форматирования "Остаток"

Код:
 
    Worksheets("Остаток").Activate
    Columns("A:A").ColumnWidth = 40
    Columns("B:B").ColumnWidth = 15.83
    Columns("C:C").ColumnWidth = 11
    Columns("D:D").ColumnWidth = 11
    Columns("E:E").ColumnWidth = 11
    Columns("F:F").ColumnWidth = 11
    Columns("B:B").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
    End With
    Columns("C:C").Select
    Selection.NumberFormat = "#,##0.000"
    With Selection
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
        .WrapText = False
    End With
    Columns("D:D").Select
    Selection.NumberFormat = "#,##0.00"
    With Selection
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
    End With
    Columns("E:E").Select
    Selection.NumberFormat = "0.000"
    With Selection
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
    End With
    Columns("F:F").Select
    Selection.NumberFormat = "#,##0.00"
    With Selection
        .HorizontalAlignment = xlRight
        .VerticalAlignment = xlBottom
        .WrapText = False
    End With
    Rows("1:1").RowHeight = 29.25
    Range("A1:F1").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
    End With
 
 

Упрощается

Код:
 
    pDest.Select
    Columns("A:A").ColumnWidth = 40
    With Columns("B:B")
        .ColumnWidth = 40
        .HorizontalAlignment = xlCenter
    End With
    With Columns("C:F")
        .ColumnWidth = 11
        .HorizontalAlignment = xlRight
        .NumberFormat = "#,##0.00"
    End With
    Columns("C:C").NumberFormat = "#,##0.000"
    Columns("E:E").NumberFormat = "0.000"
    With Range("A1:F1")
        .RowHeight = 29.25
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
    End With
 


Всего записей: 750 | Зарегистр. 14-12-2005 | Отправлено: 17:17 21-04-2007 | Исправлено: AndVGri, 18:38 21-04-2007
   

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Excel VBA
ShIvADeSt (23-04-2007 01:59): http://forum.ru-board.com/topic.cgi?forum=33&topic=8273


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru