в одной из тем мне составили простой макрос для решения моего вопроса с копированием ячеек, я пытаюсь этот макрос адаптировать под мою реально существующую таблицу, но т.к. мои знания в макросах стремятся к нулю, я даже не знаю как запросы в гугле писать и что искать. я и экселем до этого особо не интересовался... вопросы явно для новичков, возможно даже глупые, но всё же. [vba]
Код
Option Explicit Sub TRUBA() Dim P%, N%, Cl As Range P = 1 N = 89 For Each Cl In Range("D5:D" & Cells(Rows.Count, 29).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, 7) = Cl.Offset(, 2) Cells(N + 1, 8) = Cl.Offset(, 3) Cells(N + 1, 9) = Cl.Offset(, 10) Cells(N + 1, 10) = Cl.Offset(, 5) Cells(N + 1, 13) = Cl.Offset(, 14) Cells(N + 1, 16) = Cl.Offset(, 17) Cells(N + 1, 19) = Cl.Offset(, 23) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub
[/vba] я слегка поломал исходный макрос, кое что понял, кое что ещё нет.
1. как добавлять описание строки? Cells(N + 1, 9) = Cl.Offset(, 10) например "масса деловых остатков из целой трубы" 2. можно ли вместе с ячейкой (которую я копирую), в той же строке, сбоку, ещё как то неподалеку добавлять и свойства (центрока по правому краю, цвет желтый, окружить рамкой, цифры округлять до 1 знака, и т.д) 3. как вставить в ячейку формулу связанную с номером ячейки (напрмер мне необходимо условие если (для скрывания неиспользующихся ячеек =ЕСЛИ(V107=0;"скрыть";" ") как привязать к макросу расчет, а то все что я пытаюсь вставить - оно вставляет как текст, а не готовое значение
буду благодарен и прямому ответу и ссылками либо названиями тех фенкций, что я ищу, чтоб я мог самостоятельно про них почитать. читать конечно интересно, но у меня свободные субботы, и то не каждая, так что скорость набора знаний не велика
в одной из тем мне составили простой макрос для решения моего вопроса с копированием ячеек, я пытаюсь этот макрос адаптировать под мою реально существующую таблицу, но т.к. мои знания в макросах стремятся к нулю, я даже не знаю как запросы в гугле писать и что искать. я и экселем до этого особо не интересовался... вопросы явно для новичков, возможно даже глупые, но всё же. [vba]
Код
Option Explicit Sub TRUBA() Dim P%, N%, Cl As Range P = 1 N = 89 For Each Cl In Range("D5:D" & Cells(Rows.Count, 29).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, 7) = Cl.Offset(, 2) Cells(N + 1, 8) = Cl.Offset(, 3) Cells(N + 1, 9) = Cl.Offset(, 10) Cells(N + 1, 10) = Cl.Offset(, 5) Cells(N + 1, 13) = Cl.Offset(, 14) Cells(N + 1, 16) = Cl.Offset(, 17) Cells(N + 1, 19) = Cl.Offset(, 23) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub
[/vba] я слегка поломал исходный макрос, кое что понял, кое что ещё нет.
1. как добавлять описание строки? Cells(N + 1, 9) = Cl.Offset(, 10) например "масса деловых остатков из целой трубы" 2. можно ли вместе с ячейкой (которую я копирую), в той же строке, сбоку, ещё как то неподалеку добавлять и свойства (центрока по правому краю, цвет желтый, окружить рамкой, цифры округлять до 1 знака, и т.д) 3. как вставить в ячейку формулу связанную с номером ячейки (напрмер мне необходимо условие если (для скрывания неиспользующихся ячеек =ЕСЛИ(V107=0;"скрыть";" ") как привязать к макросу расчет, а то все что я пытаюсь вставить - оно вставляет как текст, а не готовое значение
буду благодарен и прямому ответу и ссылками либо названиями тех фенкций, что я ищу, чтоб я мог самостоятельно про них почитать. читать конечно интересно, но у меня свободные субботы, и то не каждая, так что скорость набора знаний не великаgagarin-ace
Сообщение отредактировал gagarin-ace - Суббота, 10.06.2023, 21:05
gagarin-ace, приложите небольшой пример, как есть и как надо. А то не совсем понятно, в каком виде Вы хотите получить результат Если правильно поняла [vba]
Код
Sub TRUBA() Dim P%, N%, Cl As Range P = 1 N = 89 For Each Cl In Range("D5:D" & Cells(Rows.Count, 29).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, 7).Copy Cl.Offset(, 2) 'масса деловых остатков из целой трубы Cells(N + 1, 8).Copy Cl.Offset(, 3) Cells(N + 1, 9).Copy Cl.Offset(, 10) Cells(N + 1, 10).Copy Cl.Offset(, 5) Cells(N + 1, 13).Copy Cl.Offset(, 14) Cells(N + 1, 16).Copy Cl.Offset(, 17) Cells(N + 1, 19).Copy Cl.Offset(, 23) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub
[/vba]
gagarin-ace, приложите небольшой пример, как есть и как надо. А то не совсем понятно, в каком виде Вы хотите получить результат Если правильно поняла [vba]
Код
Sub TRUBA() Dim P%, N%, Cl As Range P = 1 N = 89 For Each Cl In Range("D5:D" & Cells(Rows.Count, 29).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, 7).Copy Cl.Offset(, 2) 'масса деловых остатков из целой трубы Cells(N + 1, 8).Copy Cl.Offset(, 3) Cells(N + 1, 9).Copy Cl.Offset(, 10) Cells(N + 1, 10).Copy Cl.Offset(, 5) Cells(N + 1, 13).Copy Cl.Offset(, 14) Cells(N + 1, 16).Copy Cl.Offset(, 17) Cells(N + 1, 19).Copy Cl.Offset(, 23) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub
Option Explicit Sub TRUBA() Dim P%, N%, Cl As Range P = 1 N = 89 For Each Cl In Range("D5:D" & Cells(Rows.Count, 26).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, 7) = Cl.Offset(, 2) Cells(N + 1, 8) = Cl.Offset(, 3) Cells(N + 1, 9) = Cl.Offset(, 10) Cells(N + 1, 10) = Cl.Offset(, 5) Cells(N + 1, 13) = Cl.Offset(, 14) Cells(N + 1, 16) = Cl.Offset(, 17) Cells(N + 1, 19) = Cl.Offset(, 23) Cells(N + 1, 22) = Cl.Offset(, 11) Cells(N + 1, 26) = Cl.Offset(, 20) Cells(N + 2, 8) = "Остатки" Cells(N + 2, 13) = Cl.Offset(, 14) Cells(N + 2, 16) = Cl.Offset(, 18) Cells(N + 2, 22) = Cl.Offset(, 12) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub
[/vba]
я копировал ячейки на другой лист, добавляя построчно в макрос каждую ячейку и проверяя результат. и вдруг у меня начало копировать ячейки ниже таблицы листа "труба" с каждым новым запуском макроса в геометрической прогрессии умножая кол-во строк. откатившись назад работоспособность не восстановилась.
ещё хотел добавить ещё одну переменную S, но она не добавилась, скрипт после этого не работал
[vba]
Код
Option Explicit Sub TRUBA() Dim P%, S%, N%, Cl As Range P = 1 N = 89 S = 7 For Each Cl In Range("D5:D" & Cells(Rows.Count, 26).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, S + 1) = Cl.Offset(, 2) Cells(N + 1, S + 2) = Cl.Offset(, 3) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub
[/vba]
подскажите где у меня ошибки?
[vba]
Код
Option Explicit Sub TRUBA() Dim P%, N%, Cl As Range P = 1 N = 89 For Each Cl In Range("D5:D" & Cells(Rows.Count, 26).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, 7) = Cl.Offset(, 2) Cells(N + 1, 8) = Cl.Offset(, 3) Cells(N + 1, 9) = Cl.Offset(, 10) Cells(N + 1, 10) = Cl.Offset(, 5) Cells(N + 1, 13) = Cl.Offset(, 14) Cells(N + 1, 16) = Cl.Offset(, 17) Cells(N + 1, 19) = Cl.Offset(, 23) Cells(N + 1, 22) = Cl.Offset(, 11) Cells(N + 1, 26) = Cl.Offset(, 20) Cells(N + 2, 8) = "Остатки" Cells(N + 2, 13) = Cl.Offset(, 14) Cells(N + 2, 16) = Cl.Offset(, 18) Cells(N + 2, 22) = Cl.Offset(, 12) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub
[/vba]
я копировал ячейки на другой лист, добавляя построчно в макрос каждую ячейку и проверяя результат. и вдруг у меня начало копировать ячейки ниже таблицы листа "труба" с каждым новым запуском макроса в геометрической прогрессии умножая кол-во строк. откатившись назад работоспособность не восстановилась.
ещё хотел добавить ещё одну переменную S, но она не добавилась, скрипт после этого не работал
[vba]
Код
Option Explicit Sub TRUBA() Dim P%, S%, N%, Cl As Range P = 1 N = 89 S = 7 For Each Cl In Range("D5:D" & Cells(Rows.Count, 26).End(xlUp).Row) Sheets("Труба").Select Cells(N + 1, S + 1) = Cl.Offset(, 2) Cells(N + 1, S + 2) = Cl.Offset(, 3) Cells(N + 1, 5) = P Cells(N, 3).Resize(3, 2).Borders.LineStyle = xlContinuous N = N + 3 P = P + 1 Next End Sub