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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.02.2011, 14:35   #1
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию Автоматическое скрытие стобцов

Здравствуйте.
Есть несколько файлов, все они собираются в один свод через "=". Есть две проблемы:

1) нужно сделать автоматическое скрытие столбцов в файле 1, если в 5-й строке 0 (меньше нуля) .
2) есть макрос сохранения отдельной книгой (в примере), доделать его, чтобы он сохранял форматы и значения. И как сделать (отдельный макрос), чтобы сохранял новым листом в книге?
Заранее спасибо!
Вложения
Тип файла: rar Avto.rar (16.0 Кб, 27 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 15.02.2011, 16:22   #2
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

первую проблему решил, вот таким кодом:

Private Sub Worksheet_Calculate()
Dim i As Long: Application.ScreenUpdating = False
For i = 4 To Cells(7, Columns.Count).End(xlToLeft).Column
If Cells(7, i) = 0 Then
Columns(i).Hidden = True
Else
Columns(i).Hidden = False: Columns(i).AutoFit
End If
Next
End Sub


Остается еще вторая проблема. Поможете?
Единственный способ стать умнее, играть с более умным противником...

Последний раз редактировалось staniiislav; 15.02.2011 в 16:32.
staniiislav вне форума Ответить с цитированием
Старый 16.02.2011, 06:23   #3
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
...доделать его, чтобы он сохранял форматы и значения
При копировании книги, копируется все: и форматы и значения. Я так понимаю, что Вам нужно исключить все формулы и ссылки, оставив только значения. Если так, то между строк Вашего кода
Код:
Set Wb = ActiveWorkbook
и
Код:
Wb.SaveAs FolderName & "\" & "свод" & " " & Date_name & ".xlsm"
вставьте код
Код:
Dim ws As Worksheet
For Each ws In Wb
    ws.UsedRange.Value = ws.UsedRange.Value
Next
Что касается Вашего желания
Цитата:
как сделать (отдельный макрос), чтобы сохранял новым листом в книге?
то здесь не понятно: если книга содержит несколько листов, то что значит "сохранить ее новым листом"?
А если лист всего один, то что Вам не дает сделать его копию и присвоить нужное имя? (как удалить все формулы и ссылки, мы уже проходили).
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.02.2011, 11:04   #4
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Цитата:
Сообщение от SAS888 Посмотреть сообщение
При копировании книги, копируется все: и форматы и значения. Я так понимаю, что Вам нужно исключить все формулы и ссылки, оставив только значения. Если так, то между строк Вашего кода
Код:
Set Wb = ActiveWorkbook
и
Код:
Wb.SaveAs FolderName & "\" & "свод" & " " & Date_name & ".xlsm"
вставьте код
Код:
Dim ws As Worksheet
For Each ws In Wb
    ws.UsedRange.Value = ws.UsedRange.Value
Next
Вы все правильно поняли, но не работает, формулы и ссылки остались, вот код:

Код:
Sub Save()
  Dim WbMain As Workbook
    Dim Wb As Workbook
    Dim FolderName As String
    Dim Date_name As String
    Application.EnableEvents = False
    Set WbMain = ActiveWorkbook
    FolderName = WbMain.Path & "\Архив"
    On Error Resume Next
    MkDir FolderName
    Date_name = CStr(InputBox("Введиту месяц и год (пример: Январь 2011) для текущего периода!", "Дата"))
If Date_name <> Empty Then
    If ActiveWorkbook.Visible = -1 Then
            ActiveWorkbook.Copy
            Set Wb = ActiveWorkbook
            Dim ws As Worksheet
                For Each ws In Wb
                    ws.UsedRange.Value = ws.UsedRange.Value
                Next
            Wb.SaveAs FolderName _
                      & "\" & "Сводная за " & " " & Date_name & ".xlsm"
            Wb.Close False
    End If
    MsgBox "Книга " & ActiveSheet.Name & " в виде одного файла сохранен в папку " & FolderName
End If
    Application.EnableEvents = True
End Sub
Что касается Вашего желания то здесь не понятно: если книга содержит несколько листов, то что значит "сохранить ее новым листом"?
А если лист всего один, то что Вам не дает сделать его копию и присвоить нужное имя? (как удалить все формулы и ссылки, мы уже проходили).
Сохранить рабочий лист "свод", в эту книгу но другим листом "свод январь 2011" например, и без ссылок и формул. ТОлько значения и форматы. Просто код сохранения листа в отдельную книгу у меня есть, а вот сделать копию листа только со значениями и форматами нет ((
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 16.02.2011, 11:38   #5
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Я ж Вам ответил... Вот пример:
Код:
Sub Main()
    Sheets("свод").Copy after:=Sheets(Sheets.Count)
    With ActiveSheet
        .Name = "свод январь 2011": .UsedRange.Value = .UsedRange.Value
    End With
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 16.02.2011, 13:03   #6
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Спасибо вроде со всем разобрался. Появилась только одна маленькая проблема, которой раньше не было.
Создал фигуру, и к ней присвоил макрос сохранения, выдает прекращение работы экселя, но документ сохраняет. А если вставляю обычную кнопку ВБ тогда нормально все. Все может быть проблема?
Вложения
Тип файла: rar 2010eee111.rar (85.9 Кб, 16 просмотров)
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Старый 17.02.2011, 16:53   #7
staniiislav
Форумчанин
 
Аватар для staniiislav
 
Регистрация: 16.04.2010
Сообщений: 695
По умолчанию

Огромное спасибо за помощь! почти нашел решение!
Тему можно закрывать.
Единственный способ стать умнее, играть с более умным противником...
staniiislav вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка матрицы с небольшим колличеством строк или стобцов Aqua6190 Помощь студентам 3 20.12.2010 22:07
Pascal. Работа с внешними файлами, перестановка стобцов. Lavallet Помощь студентам 3 26.11.2010 08:24
Автоматическое скрытие ссылок в DLE параметром -hide- nulledzzz WordPress и другие CMS 1 22.12.2009 15:45
Найти кол-во её стобцов,все элементы которых различны. Delphi. Flashcherry Помощь студентам 1 21.03.2009 00:46
Как включить/выключить автоматическое скрытие панели задач. fen Общие вопросы Delphi 2 10.07.2007 14:25