Цитата |
---|
Исправьте все свои сообщения |
Оформил тексты в виде кода во всех своих сообщениях. Правильно понял, что об этом речь идет?
01.11.2023 09:47:01
Добрый день.
Очень интересный инструмент по работе со словарем. При пошаговом выполнении макроса, ругается на "iTmp = dic.Item(wsx(i))" (ошибка: Run-time error 9 Subscript out of range). wsx = Range("ExlWSNames").Value - читает исключаемые имена из определенного листа. ExlWSNames - имя диапазона на листе, который содержит названия листов. Спасибо
Изменено: |
|||
|
31.10.2023 16:38:51
Скажите, пожалуйста, что не так в нижеприведенной конструкции? Ругается на " If ws.Name <> wsx Then". Спасибо *************
Изменено: |
|||||
|
31.10.2023 14:22:02
Sub MyPageSetup()Dim ws As Worksheet Application.PrintCommunication = False
Изменено: |
|||||
|
31.10.2023 14:08:23
Добрый день. Подскажите, пожалуйста, что не так в нижеприведенном макросе, который должен установить одинаковые параметры печати на всех листах книги. При пошаговом запуске макроса строка ".PrintArea = ws.UsedRange" почему-то не принимает значение (т.е.пусто).
Изменено: |
|||
|
20.10.2023 14:04:40
написал: а это Код.Rows(Rw+Cnt+1).Resize(-Cnt).Deleteвы сами не могли написать НИКАК?если шансов не было, займитесь чем-то другим, выращивайте гусей или дельтепланеризм - тоже перспективное занятие, главное - по-дальше от компьютера и чисел Добрый день. Спасибо за ваши советы про выращивание гусей и дельтапланетаризм, нужно подумать... Вами написанный макрос по добавлению/удалению строк через отдельный тест-макрос (Test) работает устойчиво и стабильно (за это Вам огромное спасибо!). Однако если данный макрос инкорпорировать в другой макрос (PPE_DataImport, см.ниже), то он работает крайне нестабильно в части макроса «InsDelRows», а именно, один раз хорошо работает, а следующий раз выдает ошибку «Run-time error 1004/Метод Insert из класса Range завершен неверно». При отладке ошибки указывает на строку «.Rows(r1).Resize(d).Insert». После этого MS Excel зависает, приходится принудительно снять задачу. Помогите, пожалуйста, чем может быть связана данная ошибка. !!! Заранее спасибо ******************************************** Sub PPE_DataImport() 'Step#1 - Changing the mode of calculation Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.EnableEvents = False 'Step#2 - Defining names and the first and last used rows and columns With ThisWorkbook ws1 = Range("ws_1") 'This workbook ws2 = Range("ws_2") 'sap tr.#Z1AA1029 wb2 = Range("wb_2") 'sap tr.#Z1AA1029 FR2 = 7 'first line of ws2 c1 = .Worksheets(ws1).Cells(6, Columns.Count).End(xlToLeft).Column 'Last used column in ws1 r1 = .Worksheets(ws1).Cells(Rows.Count, 3).End(xlUp).Row - 1 'Last used row in ws1 r2 = Workbooks(wb2).Worksheets(ws2).Cells(Rows.Count, 3).End(xlUp).Row 'Last used row in ws2 d = r2 - r1 .Worksheets(ws1).Activate 'Step#3 - Insert new lines or delete unnecessary lines Msg = "Добавить/удалить строки на листе <Реестр>?" Style = vbYesNo Title = "Добавление/удаление строк" Response = MsgBox(Msg, Style, Title) If Response = vbYes Then InsDelRows r1, d Else GoTo L1 End If 'Step#4 - Importing data L1: For k = 1 To c1 nm = .Worksheets(ws1).Cells(5, k).Value If Not Workbooks(wb2).Worksheets(ws2).Rows(6).Find(What:=nm, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True) Is Nothing Then cnm = Workbooks(wb2).Worksheets(ws2).Rows(6).Find(What:=nm, LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True).Column .Worksheets(ws1).Range(Cells(FR2, k), Cells(r2, k)).Value = Workbooks(wb2).Worksheets(ws2).Range(Workbooks(wb2). _ Worksheets(ws2).Cells(FR2, cnm), Workbooks(wb2).Worksheets(ws2).Cells(r2, cnm)).Value End If Next k End With '*********************************************************** 'Step#5 - Data Formatting DataFormatting 'Step#6 - Changing the mode of calculation Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.EnableEvents = True 'Step#7 - Update array formulas UpdateArrayFormulas MsgBox ("Data import finished successfully!") End Sub Sub DataFormatting() ws1 = Range("ws_1") With ThisWorkbook.Worksheets(ws1) c1 = Range("date1").Column LastRow = .Cells(Rows.Count, 3).End(xlUp).Row .Range(Cells(7, c1), Cells(LastRow, c1 + 2)).Replace What:="00.00.0000", _ Replacement:="", SearchOrder:=xlByColumns, MatchCase:=True End With End Sub '*********************************************************** Sub UpdateArrayFormulas() ws1 = Range("ws_1") With ThisWorkbook.Worksheets(ws1) LR = Cells(Rows.Count, 3).End(xlUp).Row - 1 r1 = 7 c1 = Range("oko").Column c2 = Range("nca").Column c3 = Range("varende").Column c4 = Range("IC_GEH").Column Range(Cells(r1, c1), Cells(LR, c1)) = Cells(r1, c1).Formula 'Classes of PPE in OKO Range(Cells(r1 + 1, c1), Cells(LR, c1)) = Range(Cells(r1 + 1, c1), Cells(LR, c1)).Value Range(Cells(r1, c2), Cells(LR, c2)) = Cells(r1, c2).Formula 'Non-core assets Range(Cells(r1 + 1, c2), Cells(LR, c2)) = Range(Cells(r1 + 1, c2), Cells(LR, c2)).Value Range(Cells(r1, c3), Cells(LR, c3)) = Cells(r1, c3).Formula 'Leased out assets Range(Cells(r1 + 1, c3), Cells(LR, c3)) = Range(Cells(r1 + 1, c3), Cells(LR, c3)).Value Range(Cells(r1, c4), Cells(LR, c4)) = Cells(r1, c4).Formula 'GEH Group' companies Range(Cells(r1 + 1, c4), Cells(LR, c4)) = Range(Cells(r1 + 1, c4), Cells(LR, c4)).Value End With End Sub '*********************************************************** Sub InsDelRows(r1, d, Optional Ws As Worksheet = Nothing) If Ws Is Nothing Then Set Ws = ActiveSheet With Ws If d < 0 Then Range(Rows(r1 + d + 1), Rows(r1)).Delete Shift:=xlUp Else .Rows(r1).Copy .Rows(r1).Resize(d).Insert Application.CutCopyMode = False End If End With End Sub '*********************************************************** Sub Test() InsDelRows 34173, -173 End Sub
Изменено: |
|||
|
12.10.2023 14:38:45
Спасибо за ответ. Макрос достаточно умный и гибкий. Для того, чтобы оставались формулы и форматы, можно в макрос доработать так, чтобы вставить не просто пустые строки после Rw, а скопировать указанную строку (Rw) в буфер обмена и вставить данную строку как через вариант «Вставить скопированные ячейки» заданное Cnt количество раз? Спасибо |
|||
|
12.10.2023 14:37:24
Добрый день. Спасибо за ответ. Макрос достаточно умный и гибкий. Для того, чтобы оставались формулы и форматы, можно в макрос доработать так, чтобы вставить не просто пустые строки после Rw, а скопировать указанную строку (Rw) в буфер обмена и вставить данную строку как через вариант «Вставить скопированные ячейки» заданное Cnt количество раз?
Спасибо |
|
|
12.10.2023 13:44:56
Добрый день. Просьба подсказать умный макрос для выполнения следующей задачи: Для импорта данных из другого файла возникает необходимость добавления новых строк или удаления лишних строк в текущем рабочем листе. Пусть рабочий лист содержит N строк, при этом исходный файл, откуда нужно импортировать данные, содержит M строк. Если N<M, тогда следует скопировать предпоследнюю строку текущего рабочего листа в буфер обмена и вставить скопированные ячейки (M-N) раз перед предпоследней строкой. В противном случае, если N>M, тогда перед предпоследней строкой рабочего листа необходимо удалить (N-M) лишних строк. Количество строк может быть более чем 50 тыс строк, поэтому нужен умный макрос для того, чтобы очень быстро вставить скопированные ячейки или удалить лишние ячейки.
СПАСИБО
Изменено: |
|
|
20.04.2023 16:21:58
Дмитрий(The_Prist) Щербаков, Отлично, сработал. Огромное спасибо!!!
|
|
|
20.04.2023 14:55:50
Изменено: |
|||||
|
20.04.2023 14:35:05
Добрый день. Нужен умный макрос для снятия галочки «Защищаемая ячейка» (в закладке «Защита» в меню «Формат ячеек») по ячейкам, закрашенным в желтый цвет (код цвета 65535). Данное действие нужно произвести по всем листам книги. Пример файла прилагается. Заранее спасибо за подсказку и помощь. |
|
|
26.08.2021 16:21:13
Количество столбцов в рабочей таблице составляет более 200 штук, количество строк – более 40 тыс строк. Столбцы с формулами расположены в разной последовательности и разных количествах. При этом первая ячейка столбца, содержащий формулы, закрашен в зеленый цвет. Макрос должен сначала анализировать в первые ячейки каких столбцов таблицы закрашены в зеленый цвет и по ним выполнять задачу копирования и превращения формул в значения. При этом формула в закрашенных в зеленый цвет ячейках должна остаться (см. пример).
|
|
|
26.08.2021 15:07:27
Добрый день.
Часто возникает необходимость скопировать формулы по отдельно стоящим столбцам, а потом превратить их значения, чтобы файл быстрее работал. Вручную данная операция занимает много времени, поэтому хорошо было бы написать умный макрос для выполнения данной задачи. Описание задачи. Нужно скопировать формулы из закрашенных в зеленый цвет ячеек вниз до конца таблицы, после чего превратить формулы в значения, при этом оставить формулы в закрашенных в зеленый цвет ячейках. В таблице более 40 тыс строк и 200 столбцов. В прикрепленном файле приводит сокращенный пример. Когда столбцы, содержащие формулы, идут подряд, это делается очень просто (см. ниже макрос), а когда столбцы расположены в разной последовательности, и их более 200 штук требуется написать более умный макрос, в чем заключается задача. Для подряд идущих столбцов использовал такой макрос:
Заранее спасибо за подсказку и помощь.
Изменено: |
|||
|
10.01.2021 21:05:46
Добрый день.
При открытии таблиц эксель, ранее созданных в Windows, в MacOS масштаб не соответствует тому, что было в Windows: чтобы получить аналогичный масштаб, приходится увеличить масштаб в MacOS до 150%. Как можно сделать так, чтобы исходный масштаб остался или какое есть решение данного вопроса? Спасибо |
|
|
02.08.2019 19:47:43
После того, как я открыл файл в другом компьютере мне стало понятно, что в целом вставка таблиц в ворд происходит нормально, при этом именно через новый монитор изображение мне видится в искаженном виде, шрифты растягиваются. Как это можно исправить так, чтобы мой монитор нормально показывал изображение, попробовал подобрать разные разрешения монитора и шрифта, не помогает...
|
|
|
02.08.2019 19:19:38
Добрый день. При вставке таблицы из MS Excel в MS Word идет искажение вида таблицы, а именно буквы и числа в таблице становятся расплывчатыми, таблица растягивается, ничего невозможно делать. Это произошло после замены монитора 17 дюмов на 27 дюмов. Вставку делаю через кнопку «Вставить»/Специальная вставка/Свзяать/Лист Microsoft Excel (объект). Данным методом я пользуюсь очень много лет, всегда такой способ вставки должным образом работал. Скажите, пожалуйста, какие у вас есть мысли по данному вопросу? Спасибо за советы.
Изменено: |
|
|