| Код |
|---|
Option Explicit
Sub Копировать_значения_только_в_путь_в_определенной_ячейки()
Dim rSheets As Range, journalFullname As String, sourceRange As Range
Set rSheets = ThisWorkbook.Sheets("Подборка").UsedRange.Rows(1)
journalFullname = ThisWorkbook.Sheets("Расположение").Range("G4").Value
Set sourceRange = ThisWorkbook.Sheets("Данные").UsedRange
CopyRange rSheets, journalFullname, sourceRange
End Sub
Private Sub CopyRange(rSheets As Range, journalFullname As String, sourceRange As Range)
Dim Application_Calculation As XlCalculation: Application_Calculation = Application.Calculation: Application.Calculation = xlCalculationManual
Dim journal As Workbook
On Error Resume Next
Set journal = Workbooks.Open(journalFullname)
If journal Is Nothing Then
MsgBox Err.Description, vbExclamation, "Ошибка открытия файла"
End If
On Error GoTo 0
If Not journal Is Nothing Then
Set rSheets = Intersect(rSheets, rSheets.Parent.UsedRange)
Set sourceRange = Intersect(sourceRange, sourceRange.Parent.Range("A3").Resize(sourceRange.Parent.UsedRange.Rows.Count, sourceRange.Parent.UsedRange.Columns.Count))
CopyJournal rSheets, journal, sourceRange
Application.Calculation = Application_Calculation
journal.Close True
Else
Application.Calculation = Application_Calculation
End If
End Sub
Private Sub CopyJournal(rSheets As Range, journal As Workbook, sourceRange As Range)
Dim clSheet As Range, shTarget As Worksheet, rTarget As Range
For Each clSheet In rSheets.Cells
On Error Resume Next
Set shTarget = journal.Worksheets(clSheet.Value)
On Error GoTo 0
If Not shTarget Is Nothing Then
Set rTarget = GetTargetRange(shTarget, sourceRange)
Set rTarget = rTarget.Resize(sourceRange.Rows.Count, sourceRange.Columns.Count)
sourceRange.Copy rTarget
Application.CutCopyMode = False
rTarget.Value = sourceRange.Value
Set shTarget = Nothing
End If
Next
End Sub
Private Function GetTargetRange(sh As Worksheet, sourceRange As Range) As Range
Set GetTargetRange = GetTargetRange_Exists(sh, sourceRange)
If Not GetTargetRange Is Nothing Then Exit Function
Set GetTargetRange = GetTargetRange_New(sh)
End Function
Private Function GetTargetRange_Exists(sh As Worksheet, sourceRange As Range) As Range
Dim yy As Long
For yy = 2 To sh.UsedRange.Rows.Count
If sh.Cells(yy, 1).Value = sourceRange.Cells(1, 1).Value Then
If sh.Cells(yy, 2).Value = sourceRange.Cells(1, 2).Value Then
If sh.Cells(yy, 3).Value = sourceRange.Cells(1, 3).Value Then
Set GetTargetRange_Exists = sh.Cells(yy, 1)
AddRows sh.Cells(yy, 1), sourceRange.Rows.Count
Exit Function
End If
End If
End If
Next
End Function
Private Sub AddRows(rr As Range, nRows As Long)
Dim sh As Worksheet
Set sh = rr.Parent
Dim cd As Range
Set cd = rr.End(xlDown)
If cd.Row >= sh.Rows.Count - 2 Then Exit Sub
Do
If cd.Row >= rr.Row + nRows Then Exit Do
cd.EntireRow.Insert
DoEvents
Loop
Do
If cd.Row - 1 <= rr.Row + nRows Then Exit Do
cd.Cells(0, 1).EntireRow.Delete
DoEvents
Loop
End Sub
Private Function GetTargetRange_New(sh As Worksheet) As Range
Dim cl As Range, yy As Long, ym As Long
ym = 1
For Each cl In sh.UsedRange.Rows(sh.UsedRange.Rows.Count + 2).Cells
yy = cl.End(xlUp).Row + 1
If ym < yy Then ym = yy
Next
Set GetTargetRange_New = sh.Cells(ym, 1)
End Function
|
Перенести данные из открытой книги в закрытую в определенные листы
Альтернативные способы выбора числа по нескольких условиям, Помогите разобраться начинающему нубу
Перенести данные из открытой книги в закрытую в определенные листы
|
25.11.2025 15:55:15
|
|||
|
|
|
Вставить данные с таблицы в протокол
|
25.11.2025 15:27:57
|
|||
|
|
|
Как мне расставить значения из столбца далее по строкам в виде ступенек?, Есть данные в столбец, мне необходимо, чтобы все эти данные шли дальше в виде ступенек
Замена функционала сводных таблиц через формулы, Замена функционала сводных таблиц через формулы
|
25.11.2025 13:56:40
Вариант без дополнительного столбца. В I2 и вниз:
|
|||
|
|
|
Посчитать цену по двум условиям
Посчитать цену по двум условиям
Замена функционала сводных таблиц через формулы, Замена функционала сводных таблиц через формулы
Удаление и вставка срок таблицы, в зависимости от другой таблицы.
|
25.11.2025 09:38:07
Вариант макросом. Вставьте код в модуль листа 2.
|
|||
|
|
|
Заполнение таблицы по колонкам и строкам VBA
|
24.11.2025 16:23:22
|
|||||
|
|
|
Заполнение таблицы по колонкам и строкам VBA
|
24.11.2025 15:27:08
Если с листа "Движение" удалили умную таблицу "tb_RozdZdavVid", то можно обработать инициирование переменной:
Изменено: - 24.11.2025 15:58:30
|
|||||||
|
|
|
Помощь с лабораторной в access
Скопировать данные(лист) из выбранной книги
Сохранение нескольких файлов из одного шаблона в PDF, Макрос VBA
Сохранение нескольких файлов из одного шаблона в PDF, Макрос VBA
|
20.11.2025 14:06:12
Сохранение нескольких файлов из одного шаблона в PDF |
|||
|
|
|
Копирование и именование листов EXCEL датами по возрастающей
|
20.11.2025 13:45:43
|
|||||
|
|
|
Копирование и именование листов EXCEL датами по возрастающей
|
20.11.2025 13:15:21
|
|||
|
|
|
Автоматическое формирование гиперссылки на файл
Автоматическое формирование гиперссылки на файл
|
20.11.2025 10:35:08
В модуль листа:
|
|||
|
|
|
Автоматическое формирование гиперссылки на файл
Копирование значения с фиксацией из динамической ячейки
|
20.11.2025 09:08:49
В модуль листа "Поставка".
|
|||
|
|
|
макрос/VBA-скрипт для Excel импорт банковских выписок
Копирование значения с фиксацией из динамической ячейки
|
18.11.2025 16:26:30
В модуль листа "Перечень".
|
|||
|
|
|
Заполнение таблицы по колонкам и строкам VBA
|
18.11.2025 16:09:49
А так ищет соответствие и признака, и сорта.
|
|||
|
|
|
Заполнение таблицы по колонкам и строкам VBA
|
18.11.2025 16:01:52
Так просто отображается.
|
|||
|
|
|
Копирование значения с фиксацией из динамической ячейки
Суммирование по условию при совпадении начала строк, Нужна помощь
|
18.11.2025 15:20:53
Как вариант сделать таблицу-переводчик между названиями из верхней и нижней таблицей. В дополнительный столбец вывести общее название. С помощью СУММЕСЛИМН посчитать сумму. Или в условии перечислить все возможные варианты, для этого монтажа формула выглядит так:
|
|||
|
|
|
Поиск значения в столбце и протяжка диапазона в формуле СУММЕСЛИМН
Суммирование по условию при совпадении начала строк, Нужна помощь