Есть макрос который добавляет колонку в таблицу и есть функция которая окрашивает ячейки если в них содержится формула (Условное форматирование по формуле)...
При выполнении макроса происходит зависание и он просто останавливается... Может подскажите что можно сделать..
Код
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
Доброго дня гуру Экселя.... В очередной раз нужна Ваша помощь.. Макрос который копирует листы с именами из диапазона ячеек работает исправно.... С переборкой коллекции (пропуск если имена уже ессть) За исключением того что если в ячейках в диапазоне с именами есть пустые уходит в ошибку..... Можете ли подредактировать так что бы он просто пропускал ошибку до завершения диапазона.....Не создавая листа...
И в определенную ячейку вставить имя листа
Будет вообще супер если получится лист образец спрятать и делать копии с него.. Если вариант сначала отобразить лист -- сделать копии----спрятать лист является оптимальным тогда так и сделаем....Мнение Гуру)
Все исправлено и работает как часы.....
Выкладываю результат коллективного труда
Код
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
Есть макрос который прячет листы (номера которых находятся в ячейке)....Он работает на скрытие листов но не работает на отоброжение.....Где косяк?))
Код
Sub Спрятать() ' прячет листы перечисленные в ячейке
s = Sheets("Лист1").Range("D1").Value ' номера листов беруться из ячейки
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
Доброго вечера.....Сотворил тутна досуге програмулинку для оказания услуг...Суть такая Заполняем титульный лист вводим туда все константы, на другом листе вводим клиентов, объем работы вводится в базу, после этого перемещаемся на листы с расчетами.....(их 65..больше не очень удобно и притормаживает работа эеселя. Есть пару вопросов которые довести до ума: 1. Хотелось бы создать в книге скрытй лист шаблон на котором бы были введены все постоянные (шрифты, разметка, формулы,)Сейчас для добавления нового листа просто копирую первый лист. но если что то нужно поменять то менять нужно на каждом листе. Можно ли сделать так что бы поменяв это в шаблоне изменения произошли на каждом листе..мысли как это сделать есть но долго и нудно (Присвоив каждой ячейке уникально имя, а на каждом рабочем листе потом =имя в каждой ячейке, либо копирования с созданием связи, но тут возникают вопросы с формулами). 2. Более 60 листов в книке достаточно неудобно. Что бы просмотреть все нуно постоянно прокрычивать "ползунок" (при имени листа в 2 символа на видимой части около 35 листов помещается) ...Можно ли это оптимизировать? 3. Создать кнопку котороя бы добавляла новый лист (с листа шаблона) с именем +1 от предыдущего листа. 4. при наличие в книге 65 листов файл весит 7 Мб что можно предпринять? <EM><STRONG>Файл удален</STRONG> - велик размер - [<STRONG>МОДЕРАТОРЫ</STRONG>]</EM>