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

Страницы: 1
Выделение области
 
Вроде бы выделил область, а чему формула не вставляется не пойму и тоже самое с выделением колонок. Я понимаю, что код не работает из-за неправильного выделение, но как выделить правильно в этих двух вариантах не знаю.    
Будьте добры помочь. (Если информации недостаточно, то скажите)  
 
Косяк№1  
On Error Resume Next  
Cells.Find(What:="Код", LookAt:=xlPart).Select  
ColumnFind = Selection.Column  
RowFind = Selection.Row  
Cells.Find(What:="Ответственная служба", LookAt:=xlPart).Select  
ColumnFind_ll = Selection.Column  
RowFind_ll = Selection.Row  
If Not Cells(RowFind + 1, ColumnFind) = 0 Then Cells(RowFind_ll, ColumnFind_ll + 8).FormulaR1C1 = "=RC[-8] & "": П.:"" & RC[-7] & ""; К.:"" & RC[-4]"
Cells(RowFind_ll, ColumnFind_ll + 8).Copy  
Range(Cells(RowFind_ll + 1, ColumnFind_ll + 8), Cells(RowFind_ll + 400, ColumnFind_ll + 8)).Paste 'косяк  
 
Косяк№2  
With Wb_NED.ActiveSheet  
.Range(ColumnFind + 1, ColumnFind_ll + 7).Delete Shift:=xlToLeft 'косяк  
.Columns("A:A").Delete Shift:=xlToLeft
10 максимальных значений
 
Здравствуйте!  
Каким образом можно найти 10 максимальных значений в списке без сортировки?  
Подскажи пожалуйста, а то я чет не могу сообразить. Заранее спасибо за любые идеи.
отправка отчета по e-mail
 
Добрый ночи, Уважаемые!  
Прошу вашей помощи, чтобы скрыто отправить файл "Отчет о проделанной работе" по почте. Какие есть варианты кроме "application.ScreenUpdating = False, application .Visible = False, application.DisplayAlerts = False"?  
Буду благодарен за любые идеи и реализации.
VBA Как переключать окна/книги?
 
Добрый вечер!  
Задаю листы.  
Set wb = ThisWorkbook  
Sheets(a).Select  
Sheets(a(i)).Columns("E:F").Cut  
Columns("A:A").Select  
Selection.Insert Shift:=xlToRight  
Set nb = Workbooks.Add  
Set ws = nb.Sheets(1)  
With ws  
.Select  
.Name = "Результат"  
.Rows("1:4").Select  
ActiveWindow.FreezePanes = True  
End With  
lastrow = sh.Cells(8, 5).End(xlDown).Row  
k = 4 'заполнение под "шапкой"  
For RowFind_ll = 8 To lastrow ' цикл по ТП  
RowFind_l = RowFind_ll  
n = 1 'порядковый номер  
Range(Cells(RowFind_l, 4), Cells(lastrow, 4)).Select ' ---> Здесь почему то стопорится из-за того что не переключается на другую книгу. Подскажите пжл, как исправить.  
Selection.Find(What:="", After:=ActiveCell, LookAt:=xlPart).Select  
RowFind_ll = Selection.Row  
next RowFind_ll    
 
//  
Пробовал указывать перед этой строчкой sh.select - тоже не переключается  
Windows("Лист1").Activate - Можно как-нибудь обойтись без этой строчки, т.к. надо будет вытаскивать имя книг и т.п. Мне казалось что это проще делает.  
 
P.S.Заранее спасибо за любой совет, решение.
Проверка списка
 
Здравствуйте!  
Подскажите пожалуйста, есть ли вариант более проще, чем перебор и проверка на соответствие порядку "1,2,3,..."?  
(количество значений не постоянное)
Время записать в тексте.(VBA)
 
Здравствуйте, знатоки!  
Мне нужно время в текстовом формате. Не знаю как его выдернуть.  
Заранее спасибо.
Как лучше организовать код, чтобы меньше занимало времени на работу.
 
Мне нужно из 20 городов содержащихся на 26 листах оставить 1. В итоге должно получиться 4 файла с нужными мне городами.  
Сейчас я могу реализовать так:  
1. Оставить 4 города на всех листах и сохранить этот файл.  
2. Открыть файл с 4 городами, оставить 1 нужный файл, сохранить.  
3. Открыть файл с 4 городами, оставить 1 нужный файл, сохранить.  
и т.д.  
 
Но проблема в том что закрытие и открытие книги занимает много времени. Нет ли решения задачи по-быстрее.  
 
Заранее спасибо за любой ответ.
Оператор Like
 
Добрый вечер, знатоки!  
Не могу никак склеить условие удаления строк по нескольким значения (Липецк,Орёл)  
С перебором листов.  
Sub Clear()  
Dim n As Long, lastrow As Long, m As Long  
Dim sh As Worksheet  
Application.ScreenUpdating = True  
Application.ShowWindowsInTaskbar = True  
Application.Calculation = xlAutomatic  
 
Application.ScreenUpdating = False  
Application.ShowWindowsInTaskbar = False  
Application.Calculation = xlManual  
 
For each sh in Application.objExcel.Worksheets.Count  
Application.objExcel.Worksheets(sh).Activate  
lastrow = Range("B65536").End(xlUp).Row  
For n = lastrow To 8 Step -1  
If Not Cells(n, 2).Text Like "*Орёл*" Or "*ОРИОН*" Then Rows(n).Delete  
 
Next n  
Next sh  
Application.ScreenUpdating = True  
Application.ShowWindowsInTaskbar = True  
Application.Calculation = xlAutomatic  
End Sub
Стоимость работы фрилансера
 
(если тема не подходит под формат, то извиняюсь)  
Сколько стоит работа фрилансера (приблизительно)  
Как-то они определяют стоимость за исполнение готового макроса?  
Первое что приходит в голову: - по кол-ву строк.  
Тогда след. вопрос: во сколько обходиться написать одну строчку кода (VB)?
Блокируется работа макроса
 
При открытии файла выходит строчка "параметры безопасности...", которое не активно, после чего нельзя никак запустить макрос. Ставил в настройках вариант "Включить все макросы" - бесполезно.  
Как можно обойти проблему? (на других компах нормально, а на том где нужно чтобы работало блокируется)
Окно сообщения без необходимости потверждения
 
Sub Msg()  
Dim i As String  
For i=1 To 10  
MsgBox i  
Next i  
End Sub  
 
Если способы вывода сообщения без подтверждения (без нажатия "ОК")?  
И если команды управления этим окном: Snow, Close?  
 
(уже который час сижу читаю и ничего подходящего не найду, или не понимаю как заставить работать)
Поиск по ФИО номер телефона
 
Парни, помогите пожалуйста! Номера не могу подцепить  
 
Даны ФИО на Листе2  
Дана телефонная база на Листе3  
 
Мой (кусок)кода:  
LastRow_ll = Sheets(3).UsedRange.Row - 1 + Sheets(3).UsedRange.Rows.Count  
If Sheets(3).Cells(r_l, 1) <> "" Then  
For r_ll = LastRow_ll To 1 Step -1  
If Replace(Sheets(3).Cells(r_ll, 2), " ", "") = Replace(Sheets(2).Cells(r_ll, 1), " ", "") Then  
k_X = Sheets(3).Cells(r_ll, 2)    
End If  
Next r_ll  
End If  
 
Replace делаю потому что бывает что лишние пробелы выставляют. Думал что уберу и они должны сравниться, а не фига. А может чего не так делаю? Будте добры, подскажите!
Счётчик времени кода
 
Парни, стопориться на:  
Dim tspan As New TimeSpan  
Ошибка компиляции  
Может какую библиотеку подключить или код подправить?  
 
Сам код:  
Dim datebefore As Date 'Здесь хранится время запуска кода  
Dim dateafter As Date 'Здесь время окончания кода  
Dim tspan As New TimeSpan 'Это для вычисления разницы между dateafter и datebefore  
'Засекаем время  
datebefore = Now  
'-----------------------------------------------------------------------------------  
 
'блок кода который нужно замерить  
 
'--------------------------- продолжение -------------------------------------------  
dateafter = Now  
tspan = dateafter.Subtract(datebefore)  
MsgBox ("Время выполнения: " & tspan.TotalMilliseconds.ToString)
Создание папок в той же директории что и файл с макросом
 
Уважаемые знатоки!  
Помогите подправить код - не работает.  
В чём дело, не могу понять.  
' Sozdanie_papok()  
   Dim fso_l, fso_ll As New FileSystemObject  
   Dim f_l, f_ll As Folder  
   Dim p_l, p_ll As String  
     
   p_l = ThisWorkbook.Path & "\" & "Сотрудники"  
   If Not fso_l.FolderExists(p_l) Then Set f_l = fso_l.CreateFolder(p_l)  
     
With ThisWorkbook.Sheets(2)  
   LastRow = .UsedRange.Row - 1 + .UsedRange.Rows.Count  
   For r_l = LastRow To 1 Step -1  
   If Cells(r_l, 1) = 0 Then  
   If Cells(r_l, 1) <> "№" Then  
   p_ll = ThisWorkbook.Path & "\" & "Сотрудники" & Cells(r_l, 2)  
   If Not fso_ll.FolderExists(p_ll) Then Set f_ll = fso_ll.CreateFolder(p_ll)  
   Next r_l  
End With
Сравнить два массива на наличие совпадений
 
(искал подобное, и на форуме, и на просторах рунета - не нашел :( )  
Суть в том что мне надо сравнить два массива на наличие совпадений (лист1 и лист2)  
лист1 - одна колонка  
лист2 - две колонки  
 
В предыдущей теме дали код, но он ищет на одном листе(колонке) дубликат/повтор/совпадения.  
 
Dim x, y(), i As Long  
Application.ScreenUpdating = False  
x = Range("D2:D" & Cells(Rows.Count, 4).End(xlUp).Row).Value  
ReDim y(1 To UBound(x), 1 To 1)  
With New Collection  
On Error Resume Next  
For i = 1 To UBound(x, 1)  
If Not x(i, 1) Like "Номер*" Then  
Err.Clear  
.Add Item:=0, Key:=CStr(x(i, 1))  
If Err <> 0 Then y(i, 1) = "дубль"  
End If  
Next i  
End With  
[e2].Resize(UBound(x, 1)).Value = y
Application.ScreenUpdating = True  
End Sub  
 
Пробовал "подкрутить" для этой задачи - не получилось :(  
Теперь необходимо чтобы коллекцию он набирал со второго листа и потом в цикле сравнивал с колонкой из первого листа.  
 
Dim x, y(), i As Long  
Application.ScreenUpdating = False  
with Sheets(2)  
x = Range("D2:D" & Cells(Rows.Count, 4).End(xlUp).Row).Value  
end with  
ReDim y(1 To UBound(x), 1 To 1)  
With New Collection  
On Error Resume Next  
For i = 1 To UBound(x, 1)  
If Not x(i, 1) Like "Номер*" Then  
Err.Clear  
.Add Item:=0, Key:=CStr(x(i, 1))  
If Err <> 0 Then y(i, 1) = "дубль"  
End If  
Next i  
End With  
[e2].Resize(UBound(x, 1)).Value = y
Application.ScreenUpdating = True  
End Sub  
 
Хотя я нашел вариант решения, но опять же кривой и я так и не разберусь как работают массивы (логику)  
Мой вариант:  
объединить листы:  
лист2 (база)  
лист1 (список)  
верхний код (изменения: дубликат -> да; [e2] -> [f2])
удалить базу (бывший лист2)    
 
Hugo (или кто там ещё хорошо рубит в массивах?!), если не сложно, переделай, пожалуйста. В идеале хотелось бы чтобы подставлял ещё дату (но если не будет, то не страшно)
Удаление сторок дубликатов
 
(искал подобное, но ничего подходящего не нашел или вообще "пустые" темы)  
Необходим код(!) чтобы удалял последующие значения, если те уже повторялись выше.  
или же что бы прописывал в соседней колонке прописывал "дубликат" - это было бы вообще идеальный вариант.  
Надеюсь на вашу помощь.
Ошибка 1004
 
Выкидывает ошибку:    
Run-time error '1004':    
Method 'Intersect' оf object'_Global' failed  
 
Код
   
Sub SOTR()   
Application.ShowWindowsInTaskbar = False   
Application.ScreenUpdating = False   
Application.Calculation = xlCalculationManual   
   
Dim MyPath, MyName As String, Str As Integer, Wb As Workbook, rngx As Range, ix As Long, rngy As Range, iy As Long   
   
Sheets(1).UsedRange.Clear   
Sheets(2).UsedRange.Clear   
   
MyPath = "\\comp7\Апельсины\"   
MyName = "образец.xls"   
Str = "153"   
   
With Sheets(1)   
    Set Wb = Workbooks.Open(Filename:=MyPath & MyName, Password:=Str)   
    ActiveSheet.Range("A:M").Copy .Cells(1, 1)   
    Wb.Close SaveChanges:=False   
    .Range("D:F", "H:L").Delete   
    .UsedRange.UnMerge   
    LastRow = .UsedRange.Row - 1 + .UsedRange.Rows.Count   
    For r = LastRow To 1 Step -1   
    If Cells(r, 2) = 0 Then Rows(r).Delete   
    Next r   
End With   
           
   
   Sheets(1).UsedRange.Copy   
   Sheets(2).Select   
   Selection.PasteSpecial Paste:=xlPasteColumnWidths, Operation:=xlNone, _   
        SkipBlanks:=False, Transpose:=False   
   ActiveSheet.Paste   
   Application.CutCopyMode = False   
   
           
           
Set rngx = Intersect(Range("B:B"), Sheets(1).UsedRange)   
For ix = rngx.Count To 1 Step -1   
Select Case rngx.Item(ix).Interior.ColorIndex   
Case 3, 7, 9, 13, 18, 21, 22, 26, 29, 30, 38, 39, 45, 46, 53, 54   
rngx.Item(ix).EntireRow.Delete   
End Select   
Next   
   
   
With Sheets(1)   
    Range("A:A,C:C,C:C,D:D").Select   
    With Selection   
        .HorizontalAlignment = xlCenter   
        .VerticalAlignment = xlCenter   
        .Orientation = 0   
        .AddIndent = False   
        .IndentLevel = 0   
        .ShrinkToFit = False   
        .ReadingOrder = xlContext   
        .MergeCells = False   
    End With   
    Range("B:B").Select   
        With Selection   
        .VerticalAlignment = xlCenter   
        .WrapText = False   
        .Orientation = 0   
        .AddIndent = False   
        .IndentLevel = 0   
        .ShrinkToFit = False   
        .ReadingOrder = xlContext   
        .MergeCells = False   
    End With   
End With   
   
Application.Calculation = xlCalculationAutomatic   
Application.ScreenUpdating = True   
Application.ShowWindowsInTaskbar = True   
End Sub   
Сосчитать количество "-" в ячейке и выставить значение в соседней колонке
 
Сосчитать количество "х" в ячейке и выставить значение в соседней колонке.  
 
Пример.  
Ячейка содержит:  
01.04.06-28.04.06(28)  01.05.06-30.05.06(28)   13.08.07-26.08.07(14)    
Нужно чтобы с соседний столбец посчитало число "-" и поставило значение 3
Удаление красных (оттеноков красного) строк по колонке B,
 
Sub DeleteRowsRedInColB()  
 Application.ScreenUpdating = False  
 Application.Calculation = xlCalculationManual  
 Dim rng As Range, ix As Long  
 Set rng = Intersect(Range("B:B"), ActiveSheet.UsedRange)  
 For ix = rng.Count To 1 Step -1  
     If rng.Item(ix).Interior.ColorIndex = 3 Then  
       rng.Item(ix).EntireRow.Delete  
     End If  
 Next  
 Application.Calculation = xlCalculationAutomatic  
 Application.ScreenUpdating = True  
End Sub  
 
Не пойму почему не удаляет. Посмотрите своим профессиональным взглядом.  
P.S. Прикрепил образец, но в данной таблице порой бывает, что используют не только красный, но и его "ближайших родственников": - оранжевый, бордовый. Можно прописать чтобы удалял любой намёк на красный? (Красный - RGD(255,0,0), кроме белого - RGD(255,255,255)  
Вот это например вшить в первоначальный код:  
 
For i = 1 To 56  
   ActiveWorkbook.Colors(i) = RGB(255 - i * 4, 0, 0)  
Next i
Страницы: 1
Наверх