Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Конфликт Макроса и функции
 
Доброго дня мастадонты гуру экселя))

Есть макрос который добавляет колонку в таблицу и есть функция которая окрашивает ячейки если в них содержится формула (Условное форматирование по формуле)...

При выполнении макроса происходит зависание и он просто останавливается... Может подскажите что можно сделать..
Код
Public Sub Вст_колонку()

    ActiveSheet.Unprotect
    Columns(Range("ПСбаза").Column).Select
    Selection.EntireColumn.Hidden = False
    Selection.Copy
    Selection.Insert Shift:=xlToRight   'на этой строке выполнения происходит остановка
    Columns(Range("ПСбаза").Column).Select
    Selection.EntireColumn.Hidden = True
    Application.CutCopyMode = False
    ActiveCell.Offset(3, -1).Activate
    
End Sub

Function IsFormula(Check_Cell As Range)

'Функция Для определение формул в ячейках и их выделение
' =IsFormula(F35) в условном форматировании записать формулу с указанием первой ячейки в нужном диапазоне
IsFormula = Check_Cell.HasFormula
End Function

Спасибо кто откликнется.
Изменено: Артур Завгородний - 21.12.2021 11:53:21
Копирование листов с именами из диапазона ячеек
 
Доброго дня гуру Экселя.... В очередной раз нужна Ваша помощь..
Макрос который копирует листы с именами из диапазона ячеек работает исправно.... С переборкой коллекции (пропуск если имена уже ессть)
За исключением того что если в ячейках в диапазоне с именами есть пустые уходит в ошибку..... Можете ли подредактировать так что бы он просто пропускал ошибку до завершения диапазона.....Не создавая листа...

И в определенную ячейку вставить имя листа

Будет вообще супер если получится лист образец спрятать и делать копии с него.. Если вариант сначала отобразить лист -- сделать копии----спрятать лист является оптимальным тогда так и сделаем....Мнение Гуру)

Все исправлено и работает как часы.....

Выкладываю результат коллективного труда
Код
Sub CopySheetExample()
  Dim diapaz As Range 'диапазон нужных листов
  'Dim i As Long
  Dim list As Worksheet
  Dim rgCell As Range ' переменная для перебора коллекции
  
On Error Resume Next
Set diapaz = ActiveWorkbook.Sheets("Договора").Range("A10:A20") ' Диапазон который для новых листов
'Set diapaz = Application.InputBox("Пожалуйста, выделите диапазон ячеек, который содержит названия для новых листов!", Type:=8)
On Error GoTo 0
If diapaz Is Nothing Then Exit Sub
Set list = Worksheets("0") 'ActiveSheet  'имя листа образца
'For i = 1 To diapaz.Count
'i = 1
For Each rgCell In diapaz 'диапазон нужных листов
list.Visible = xlSheetVisible   'отображает лист образец
    If rgCell.Value <> "" Then
    
        If ExistList(rgCell.Value) = False Then
        list.Copy after:=Worksheets(Worksheets.Count) 'ActiveSheet
        ActiveSheet.Name = rgCell.Value 'Left(diapaz(i), 31)
        ActiveSheet.Range("A1") = rgCell 'Вставляет имя листа в ячейку А1
        End If

    End If
    
Next rgCell
list.Visible = xlSheetHidden 'Скрывает лист образец
End Sub

Function ExistList(strListName As String) As Boolean
 
    Dim objWsheet As Worksheet
    
    On Error GoTo Metka:
    Set objWsheet = ActiveWorkbook.Sheets(strListName)
    ExistList = True
Exit Function
Metka:
    ExistList = False
      
End Function



Спасибо всем кто откликнется.
Изменено: Артур Завгородний - 09.12.2021 17:40:35
Скрытие и отоброжение листов макросом
 
Дорого дня форумчане и гуру екселя....

Есть макрос который прячет листы (номера которых находятся в ячейке)....Он работает на скрытие листов но не работает на отоброжение.....Где косяк?))
Код
Sub Спрятать() &#39; прячет листы перечисленные в ячейке
    
    s = Sheets("Лист1").Range("D1").Value &#39; номера листов беруться из ячейки
    a = Split(s, ",")
    For i = 0 To UBound(a): a(i) = Sheets(Val(a(i))).Name: Next
      'Sheets(a).Visible = xlSheetHidden  'работает на скрытие
      'Sheets(a).Visible = xlSheetVisible  'не работает !!!!
      On Error Resume Next
        'End If
End Sub
Выдает Ошибку-1004 в Excel VBA - невозможно установить свойство visible класса worksheet
Поиск значений в закрытых книгах и копирование строк с найденными значениями
 
Всем доброго дня!

На просторах интернета нашел интересный макрос по поиску значений в закрытых книгах и выбором папки для поиска.
Работает отменно но очень хочется кое что изменить. но в этом ничего не понимаю.....Все хотелки собираю как пазл по крупицам)))
Макрос выводит название книги......название листа .....название ячейки и искомое значение в таблицу на новый лист......

Можно ли:
1. Выводить сразу гиперссылку на эту ячейку.
2 в итоговый результат копиравать всю строку а не только значение ячейки.... Нашлось значение скопировалась вся строка.....
Код
Sub SearchFolders()
'UpdatebyKutoolsforExcel20151202
    Dim xFso As Object
    Dim xFld As Object
    Dim xStrSearch As String
    Dim xStrPath As String
    Dim xStrFile As String
    Dim xOut As Worksheet
    Dim xWb As Workbook
    Dim xWk As Worksheet
    Dim xRow As Long
    Dim xFound As Range
    Dim xStrAddress As String
    Dim xFileDialog As FileDialog
    Dim xUpdate As Boolean
    Dim xCount As Long
    On Error GoTo ErrHandler
    Set xFileDialog = Application.FileDialog(msoFileDialogFolderPicker)
    xFileDialog.AllowMultiSelect = False
    xFileDialog.Title = "Выберете папку"
    If xFileDialog.Show = -1 Then
        xStrPath = xFileDialog.SelectedItems(1)
    End If
    If xStrPath = "" Then Exit Sub
    xStrSearch = Range("C4")
    xUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    Set xOut = Worksheets.Add
    xRow = 1
    With xOut
        .Cells(xRow, 1) = "Книга"
        .Cells(xRow, 2) = "Лист"
        .Cells(xRow, 3) = "Ячейка"
        .Cells(xRow, 4) = "Text in Cell"
        Set xFso = CreateObject("Scripting.FileSystemObject")
        Set xFld = xFso.GetFolder(xStrPath)
        xStrFile = Dir(xStrPath & "\*.xls*")
        Do While xStrFile <> ""
            Set xWb = Workbooks.Open(Filename:=xStrPath & "\" & xStrFile, UpdateLinks:=0, ReadOnly:=True, AddToMRU:=False)
            For Each xWk In xWb.Worksheets
                Set xFound = xWk.UsedRange.Find(xStrSearch)
                If Not xFound Is Nothing Then
                    xStrAddress = xFound.Address
                End If
                Do
                    If xFound Is Nothing Then
                        Exit Do
                    Else
                        xCount = xCount + 1
                        xRow = xRow + 1
                        .Cells(xRow, 1) = xWb.Name
                        .Cells(xRow, 2) = xWk.Name
                        .Cells(xRow, 3) = xFound.Address
                        .Cells(xRow, 4) = xFound.Value
                    End If
                    Set xFound = xWk.Cells.FindNext(After:=xFound)
                Loop While xStrAddress <> xFound.Address
            Next
            xWb.Close (False)
            xStrFile = Dir
        Loop
        .Columns("A:D").EntireColumn.AutoFit
    End With
    MsgBox "Найдено " & xCount & " значений", , "Kutools for Excel"
ExitHandler:
    Set xOut = Nothing
    Set xWk = Nothing
    Set xWb = Nothing
    Set xFld = Nothing
    Set xFso = Nothing
    Application.ScreenUpdating = xUpdate
    Exit Sub
ErrHandler:
    MsgBox Err.Description, vbExclamation
    Resume ExitHandler
End Sub
Изменено: vikttur - 18.08.2021 11:36:12
Алгоритм макроса защиты книги
 
Доброго дня! Помогите пожалуйста с пониманием алгоритма работы... Буду признателен кто напишет ход вычисления.
Работа с шаблонами
 
Доброго вечера.....Сотворил тутна досуге програмулинку для оказания услуг...Суть такая Заполняем титульный лист вводим туда все константы, на другом листе вводим клиентов, объем работы вводится в базу, после этого перемещаемся на листы с расчетами.....(их 65..больше не очень удобно и притормаживает работа эеселя. Есть пару вопросов которые довести до ума:  
1. Хотелось бы создать в книге скрытй лист шаблон на котором бы были введены все постоянные (шрифты, разметка, формулы,)Сейчас для добавления нового листа просто копирую первый лист. но если что то нужно поменять то менять нужно на каждом листе. Можно ли сделать так что бы поменяв это в шаблоне изменения произошли на каждом листе..мысли как это сделать есть но долго и нудно (Присвоив каждой ячейке уникально имя, а на каждом рабочем листе потом =имя в каждой ячейке, либо копирования с созданием связи, но тут возникают вопросы с формулами).  
2. Более 60 листов в книке достаточно неудобно. Что бы просмотреть все  нуно постоянно прокрычивать "ползунок" (при имени листа в 2 символа на видимой части около 35 листов помещается) ...Можно ли это оптимизировать?  
3. Создать кнопку котороя бы добавляла новый лист (с листа шаблона) с именем +1 от предыдущего листа.  
4. при наличие в книге 65 листов файл весит 7 Мб  что можно предпринять?  
<EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>
Страницы: 1
Наверх