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

Страницы: 1
Ускорить макрос
 
Здравствуйте уважаемые Форумчане,
Помогите пожалуйста с оптимизацией работы макроса.
Имеется рабочий файл, в котором администраторы распределяют людей по зонам работы.
Потом эти данные копируются из одного файла в другой файл в "умную" таблицу. Проблема заключается в том, что макрос, который я использую очень медленно переносит данные.
Помогите пожалуйста ускорить это, если это возможно. Файл пример приклеплен.
Здесь кусочек макроса, так как дальше процедура повторяется.
Спасибо за помощь.
Код
        Dim Admin As Worksheet
        Dim Adminobj As ListObject
        Dim Adminrow As Listrow
    
        Dim cell As String, arrData, i As Long
    
        
        Set Admin = Workbooks("ROSTER Admin V1.0.xlsm").Worksheets("Shift Approval")
        Set Adminobj = Admin.ListObjects("Shiftapp_tb")
    
        With Workbooks("ROSTER DM V1.0.xlsm").ActiveSheet
        arrData = .Range("AS5").CurrentRegion
        For i = 3 To UBound(arrData, 1)
        If arrData(i, 31) = "Yes" Then
            Set Adminrow = Adminobj.ListRows.Add
            Adminrow.Range(3) = arrData(i, 32)
            Adminrow.Range(4) = arrData(i, 4)
            Adminrow.Range(5) = arrData(i, 5)
            Adminrow.Range(6) = arrData(i, 1)
            Adminrow.Range(7) = arrData(i, 2)
            Adminrow.Range(8) = arrData(i, 3)
            Adminrow.Range(9) = arrData(i, 6)
            Adminrow.Range(10) = arrData(i, 7)
            Adminrow.Range(11) = 0
            Adminrow.Range(12) = arrData(i, 29)
            Adminrow.Range(13) = arrData(i, 10)
            Adminrow.Range(14) = arrData(i, 30)
        End If
        Next i
        End With
        
        With Workbooks("ROSTER DM V1.0.xlsm").ActiveSheet
        arrData = .Range("B5").CurrentRegion
        For i = 1 To UBound(arrData, 1)
        If arrData(i, 16) = "Yes" Then
            Set Adminrow = Adminobj.ListRows.Add
            Adminrow.Range(3) = arrData(i, 10)
            Adminrow.Range(4) = arrData(i, 13)
            Adminrow.Range(5) = arrData(i, 14)
            Adminrow.Range(6) = arrData(i, 2)
            Adminrow.Range(7) = arrData(i, 11)
            Adminrow.Range(8) = arrData(i, 12)
            Adminrow.Range(9) = arrData(i, 15)
            Adminrow.Range(10) = arrData(i, 9)
            Adminrow.Range(11) = arrData(i, 7)
            Adminrow.Range(12) = arrData(i, 6)
            Adminrow.Range(13) = arrData(i, 8)
        End If
        Next i
        End With
Макрос перестал работать
 
Здравствуйте уважаемые форумчане,
С наступивщим Вас новым годом!
Помогите пожалуйста советом.
Есть файл в нем отмечаю посещаемость. Ученики пришедшие отмечаются буквой Р и записываются в другой файл (как в базу данных).
Файл работал года 3-4 и вот перестал записывать.
Сразу хочу сказать, что файл находиться на другом компьютере и я пробовола на своем и все работает нормально.
Подскажите пожалуйста, что могло стать причиной сбоя. Может нужно что-то проверить.
Верисия Excel английская. Файл и файл база данных находяться на share drive в одной папке и пользуется только один человек в одно время.
Спасибо
Код
Sub Add_attend_data() ' add attandance to data file
    Dim Attend As Worksheet
    Dim Attendlistobj As ListObject
    Dim Attendrow As ListRow
    
    Dim Attenddata As Worksheet 'Sheet2 (all attendance data)
    Dim Attenddataobj As ListObject
    Dim Attenddatarow As ListRow
    
    Set Attend = ThisWorkbook.Worksheets("Attendance")
    Set Attendlistobj = Attend.ListObjects("Attendance_tb")
    Set Attenddata = Workbooks("DATA.xlsm").Worksheets("Attendance_data")
    Set Attenddataobj = Attenddata.ListObjects("Attend_data")
    Dim cell As String, arrData, i As Long
    Dim b As Double
    b = Application.Max(Workbooks("DATA.xlsm").Worksheets("Attendance_data").Range("Attend_data[Operation code]")) + 1
    
    With Worksheets("ATTENDANCE")
    cell = "P"
    arrData = .Range("C9").CurrentRegion
    For i = 2 To UBound(arrData, 1)
    If arrData(i, 13) = cell Then
        Set Attenddatarow = Attenddataobj.ListRows.Add
        Attenddatarow.Range(2) = b
        Attenddatarow.Range(3) = arrData(i, 1)
        Attenddatarow.Range(4) = Sheet2.Range("E3")
        Attenddatarow.Range(5) = Sheet2.Range("E6")
    End If
    Next i
    End With
    Delete_attend
    Sheet2.Range("E3,E6").ClearContents
    Sheet2.Range("Attendance_tb").ClearContents
    Sheet2.Range("Attendance_tb[belt]").ClearFormats
End Sub
Заполнить таблицу по порядку возростания (не сортировка)
 
Здравствуйте уважаемые форумчане,
Мне нужно данные из одной таблицу перенести в другую таблицу по порядку номеров (1,2,3 и т.д). Проблема в том, что значения в таблице расположены в случайном порядке и количество строк различное.
У меня есть макрос, который находит наименьшее значение и добавляет только одну строку.
Помогите пожалуйста скорректировать макрос, чтобы вносились все значения по порядку.
Спасибо
Код
Sub Fill_report()
    Dim cell As String, arrData, i As Long, n

    Dim Rpdata As Worksheet
    Dim Rpdataobj As ListObject
    Dim Rpdatarow As ListRow
    
    Dim Rp As Worksheet
    Dim Rpobj As ListObject
    Dim Rprow As ListRow
    
    Set Rpdata = ThisWorkbook.Worksheets("Report_data")
    Set Rpdataobj = Rpdata.ListObjects("Report_tb")
    
    Set Rp = ThisWorkbook.Worksheets("Report")
    Set Rpobj = Rp.ListObjects("Reportcharge_tb")
    n = Application.Min(Worksheets("Report_data").Range("Report_tb[Order check]"))

    With Worksheets("Report_data")
        arrData = .Range("A1").CurrentRegion
        For i = 2 To UBound(arrData, 1)
            If arrData(i, 4) = n Then
            Set Rprow = Rpobj.ListRows.Add()
                Rprow.Range(1) = arrData(i, 1)
            End If
        Next i
    End With
End Sub
Формат дат и чисел в английском и русском Excel
 
Здравствуйте уважаемые формучане,
Помогите с решением одного вопроса.
У меня Excel2013 английская версия. Я сделала файл, который должен работать в русском Excel2013.
Возникла ошибка в форматах дат и чисел.
Через пользовательскую форму заполняется таблица и данные из нее (таблицы) просматриваются тоже через пользовательскую форму.
При попытки открыть пользовательскую форму возникает ошибка "Разный тип"
Вот формат дат в макросе:
Код
Datanozzlerow.Range(2) = Format(Parts_used.TextBox2.value, "mm/dd/yyyy") 
И формат чисел:
Код
Parts_used.TextBox11.value = Format(cell.Cells(1, 3).value, "#,##0.00")
Подскажите пожалуйста, как изменить, чтобы формат работал в русской версии.
Заранее благодарю.
Ошибка 91 в макросе
 
Здравствуйте Уважаемые форумчане,
Помогите с проблемой.
Есть макрос, который выбирает данные из list box и записывает в таблицу.
Если зарускаю первый раз после открытия файла, все срабатывает, а вот со второго раза начинает ругаться. Выдает ошибку 91.
Я сделала тестовый файл, там происходит тоже самое.
При этом у меня есть другой list box в оригинальном файле, но в этом list box ошибка не появляется, хотя код похожий.
Посмотрите пожалуйста тестовый файл.
Помогите справиться с ошибкой.
Спасибо.
Редизайн таблицы в умную таблицу без пустых значений
 
Здравствуйте Форумчане,
Помогите решить проблему.
Есть умная таблица 1, ее трансформирую в плоскую на другой лист тоже в умную таблицу 2.
К сожелению, макрос берет все ячейки, потому что там формулы и добовляет множество пустых строк.
Мне нужно, чтобы пустые значения из вычислений не попадали в умную таблицу 2. И при обеновление сначала все строки умной таблицы 2 удалялись.
Помогите пожалуйста.
С уважением, Марина
Код
Sub Redesigner()
    Dim inpdata As Range, realdata As Range, ns As Worksheet
    Dim i&, j&, k&, c&, r&, hc&, hr&
    Dim out(), dataArr, hcArr, hrArr
    Dim Dashboard As Worksheet
    Dim Dashboardobj As ListObject
    Dim Dashboardrow As ListRow

    Sheet9.Activate
    Sheet9.Range("Members_data_tb[[#All],[Code]:[Sun2]]").Select
    hr = 1
    hc = 1
    Set inpdata = Selection
    
    If inpdata.Rows.Count <= hr Or inpdata.Columns.Count <= hc Then Exit Sub
    Set realdata = inpdata.Offset(hr, hc).Resize(inpdata.Rows.Count - hr, inpdata.Columns.Count - hc)
    dataArr = realdata.value

    If hr Then hrArr = inpdata.Offset(0, hc).Resize(hr, inpdata.Columns.Count - hc).value
    If hc Then hcArr = inpdata.Offset(hr, 0).Resize(inpdata.Rows.Count - hr, hc).value

    ReDim out(1 To Application.CountA(realdata), 1 To hr + hc + 1)
    Set ns = Sheet11
   
    For i = 1 To UBound(dataArr, 1)
        For j = 1 To UBound(dataArr, 2)
            If Not IsEmpty(dataArr(i, j)) And (dataArr(i, j)) <> "" Then
            
                k = k + 1
                For c = 1 To hc: out(k, c) = hcArr(i, c): Next c
                For r = 1 To hr: out(k, c + r - 1) = hrArr(r, j): Next r
                out(k, c + r - 1) = dataArr(i, j)
            End If
    Next j, i
    ns.Cells(2, 2).Resize(UBound(out, 1), UBound(out, 2)) = out

End Sub
Создание нескольких умных таблиц с определенным кол-м строк с помощью макроса
 
Здравствуйте уважаемые форумчане,
Помогите пожалуйста решить проблему.
На листе1 есть таблица и в столбе "1" указано значение.
Нужно на другом листе создать с помощью макроса столько умных таблиц, сколько строк больше нуля в таблице на листе 1 с количеством строк указаных в ячейке.
Пожалуйста посмотрите файл. (на втором листе, то что должно быть в итоге)
Благодарю за помощь,
Марина

 
Один срез для умной и сводной таблицы
 
Здравствуйте Уважаемые форумчане,
Помогите решить такой вопрос.
Есть умная таблица. На ее основе построена сводная. Есть один срез. Нужно, чтобы этот один Срез работал и для умной и для сводной таблицы.
Спасибо за помощь.
Ошибка при работе макроса в пользовательской форме
 
Уважаемы форумчане помогите!
Есть вот такой макрос в UserForm для добавления нового лица. Несколько дней он работал, а вот теперь выдает ошибку, после которой закрывается Excel.
Помогите понять, что произошло.
Спасибо.
Код
Private Sub Add_new_requestor()
    Dim SheetClient As Worksheet
    Dim SheetClientListobj As ListObject
    Dim SheetClientlistrow As ListRow
    Dim cell As Range, r As Long
    Set SheetClient = ThisWorkbook.Worksheets("Client&Requestor")
    Set SheetClientListobj = SheetClient.ListObjects("Requestor_tb")
    Set cell = SheetClientListobj.ListColumns.Item(1).Range.Find(Me.Requestor_Cbox.Value, lookat:=xlWhole)
    If Not cell Is Nothing Then
    Exit Sub
    Else
    r = MsgBox("Would you like to add a requestor to the list?", vbYesNo, "Execution request")
    If r = vbNo Then
    Exit Sub
    Else
    Set SheetClientlistrow = SheetClientListobj.ListRows.Add
    SheetClientlistrow.Range(1) = Me.Requestor_Cbox.Text
    End If
    End If
End Sub
Подстановка нескольких значений в пользoвательскую форму UserForm
 
Здравствуйте уважаемые форумчане!

Помогите пожалуйста решить такую проблему.
Имеется таблица База данных. В ней тысячи строк. Есть UserForm. Пользователь вводит порядковый номер в App_ref.
Макрос ищет номер и заполняет данные в соответсвующие разделы формы.

Проблема в том, что в один раздел входить до восьми строк. В примере один раздел.

Как сделать, чтобы он находил не первую строку, а все, по двум условиям: Номер и тип данных; и каждая строка должна отображатся в отдельном Box. В примере, если ввели номер 434, то в этот раздел попадают две строки с типом "Labour".

Спасибо за помощь.
Макрос автоматического закрытия файла по таймеру с предупреждением
 
Здравствуйте уважаемые Форумчани,
Помогите мне пожалуйста с макросом. Очень долго искала среди тем, но не смогла найти то, что полностью подходит.
Есть файл на общем диске. Как это часто бывает, один пользователь открыл и ушел по своим делам, а в моем случае вообще в отпуск :(
Мне нужно, если файлом не пользуются какое-то время, то появляется сообщение о том, что файл будет закрыт и если пользователь не отменил, файл закрывается без сохранения изменений.
Я нашла на форуме вот такой макрос:
В модуль книги:
Код
Dim DateTime As Date

Private Sub Workbook_Open()
    DateTime = Now + #12:10:00 AM#
    Application.OnTime DateTime, "TimeOut"
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    On Error Resume Next
    Application.OnTime DateTime, "TimeOut", , False
End Sub

В простой модуль:

Код
Private Sub TimeOut()
    ThisWorkbook.Close True
End Sub

В модуль листа, для сброса таймера, если файлом пользуются:
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Workbook_BeforeClose False
    Workbook_Open
End Sub
Проблема в том, что при изменениях, появляется сообщение при закрытие, а значит файл не закроется. И если нажать отмена, то макрос больше не срaбатывает.

Помогите пожалуйста.
Макрос переход на скрытый лист с помощью пароля
 
Здравствуйте уважаемые Форумчане!
Помоги в таком вопросе. Обыскала весь форум, но не нашла то, что мне подходит.
В файле есть лист "Параметры", он скрыт и защищен паролем и Лист "Форма", с которым все рабоют. Только один человек может вносить изменения в листе "Параметры". К сожелению, человек, который будет обнавлять лист не селен в эксел. Мне нужно сделать так, что при нажатии на кнопку "Ввести новые параметры" на листе "Форма", запрашивался пароль и в случае правильного ввода скрытый лист "Параметры" отображался и разблокировался. После внесения изменений уже на листе "Параметры" при нажатии кноки лист защищался и скрывался и активировался лист "Форма".
Помогите пожалуйста.
Удаление строки по результату формулы в "умной таблице"
 
Уважаемые форумчане, помогите пожалуйста!
Есть "умная таблица". В столбике "Check" формула, при изменение значения на другом листе в строке, формула ставить "х" и эту строку в "умной таблице" надо удалить. Есть макрос для удаление строк по условию, в "умной таблице" удаляет значения, но не результат формулы. Как его изменить, чтобы удалялись строки по результату формулы в "умной таблице". Пример приложить не могу, на рабочем компьютере. Версия Excel английская.
Код
Sub DeleteRows()
Dim rng as Range, value, i as Long
Set rng = worksheets("Details").Range("Table17[Check]")
For i = rng.Rows.Count to 1 Step -1
Value = rng.Cells(i,1).value
if (value = worksheets("Details").Range("AD1") Then
rng.Rows(i).EnterRow.Delete
End If
Next i
End Sub
Проблема сохранения файла Excel 2013 в Excel 2016
 
Здравствуйте Форумчане,
Помогите пожалуйста с вопросом.
На сетевом диске есть файл с макросом версии 2013 года. Файл достался мне по наследству и, как я поняла, написан с помощью "макрос помощника". Работал нормально, но компания установила Windows 10 и Excel 2016 и теперь изменения в файле не сохраняются.
Появляется сообщение: "Файл используется другим пользователем. Попробуйте сохранить позже", либо просто пишит: "Файл не сохранен". Одновременного доступа к файлу нет, сразу несколько человек в нем работать не могут. Версия Excel английская.
Помогите пожалуйста.
С уважением,Марина  
Страницы: 1
Наверх