paha83 Пользователь Сообщений: 12 |
Доброго времени суток уважаемые форумчане! Задача. С помощью VBA: Спасибо! Прикрепленные файлы
|
CAHO Пользователь Сообщений: 2183 |
Пункт 3 и 4 противоречат друг другу. Или я не так понял. Мастерство программиста не в том, чтобы писать программы, работающие без ошибок. |
paha83 Пользователь Сообщений: 12 |
Приветствую, САНО! |
kakaccc Пользователь Сообщений: 5 |
#4 22.09.2015 15:38:18 paha83
, если еще актуально:
Здесь первые 3 пункта. Прикрепленные файлы
Изменено: kakaccc — 22.09.2015 18:11:32 |
||
kakaccc Пользователь Сообщений: 5 |
#5 23.09.2015 15:35:13 Для 5 пункта:
Хотя, по-моему, без макроса будет даже проще. Пока он настроен так, что его надо запустить на каждом листе, который будет затем защищен. Прикрепленные файлы
|
||
paha83 Пользователь Сообщений: 12 |
Доброго времени суток, kakaccc! Большое спасибо за ответ и помощь. Еще раз спасибо!!! |
rSkrin Пользователь Сообщений: 3 |
Добрый день! |
kakaccc Пользователь Сообщений: 5 |
#8 27.02.2016 17:38:57
Немного громоздкий макрос получился. Изменено: kakaccc — 28.02.2016 02:18:56 |
||
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#9 27.02.2016 18:36:24 kakaccc, чем по-Вашему будут отличаться результаты, если блок:
записать так:
Я сам — дурнее всякого примера! … |
||||
TheBestOfTheBest Пользователь Сообщений: 2366 Excel 2010 +PLEX +SaveToDB +PowerQuery |
Файл должен находиться в папке c:1. На таблице ПКМ-Обновить. Прикрепленные файлы
Неизлечимых болезней нет, есть неизлечимые люди. |
kakaccc Пользователь Сообщений: 5 |
KuklP, потому что я нуб в vba Спасибо! Буду теперь знать и использовать эту функцию. |
rSkrin Пользователь Сообщений: 3 |
Спасибо друзья! Но есть вопрос. Уважаемый kakaccc, правильно ли я понял про «таблица должна начинаться с ячейки А1»- т.е. начало всей таблицы, в том числе и шапки. |
rSkrin Пользователь Сообщений: 3 |
Вопрос отменяю. Чуть подправил, проверил работу, все отлично!!! Спасибо. |
KuklP Пользователь Сообщений: 14868 E-mail и реквизиты в профиле. |
#14 28.02.2016 13:55:14
Да, это destination.
можно записать буквально:
в этом слуячае родительский объект вычисляется 3 раза вместо одного в предыдущем примере. Я сам — дурнее всякого примера! … |
||||||
kakaccc Пользователь Сообщений: 5 |
KuklP, все, раз это destination, то вопросов нет. Более менее разобрался. Буду теперь пользоваться. Красиво и лаконично получилось. Спасибо за объяснение! rSkrin, да, вся таблица должна начинаться с А1 (шапка в вашемслучае). Можно сделать независимо от находжения таблицы, используя свойство CurrentRegion, например. Но тогда перед запуском макроса надо будет выделять какую-нибудь ячейку из таблицы. Первоначально я так и записал макрос. Не знал как для вас проще будет. Если хотите, можно так сделать. |
0mega Пользователь Сообщений: 170 |
#16 06.11.2022 11:54:18 KuklP
, здравствуйте
почему команда начинается с точки
Какое у них отличие ? |
||||
MikeVol Пользователь Сообщений: 230 Ученик |
#17 06.11.2022 12:29:09 0mega, Думаю если вы прочтёте справку то возможно поймёте что к чему. почему команда начинается с точки |
wishcom 1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
||||||||
1 |
||||||||
18.12.2010, 21:39. Показов 19003. Ответов 20 Метки нет (Все метки)
Не понимаю почему работат.
,а
нет.
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
19.12.2010, 03:06 |
2 |
|||
Вы забыли инструкцию Select или Activate
0 |
wishcom 1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
||||
19.12.2010, 18:09 [ТС] |
3 |
|||
Activate Точно отпадает.
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
19.12.2010, 18:36 |
4 |
Вы спросили, почему не работает Ваш код, и я ответил, что
0 |
1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
|
19.12.2010, 20:48 [ТС] |
5 |
Неужели никак иначе.
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
19.12.2010, 21:39 |
6 |
Можно и иначе, советую более внимательно ознакомиться с help.
0 |
22 / 5 / 1 Регистрация: 05.09.2010 Сообщений: 370 |
|
20.12.2010, 09:55 |
7 |
Так чтобы не маячило, может надо
0 |
1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
|
20.12.2010, 20:04 [ТС] |
8 |
Да отлично я это знаю.
0 |
22 / 5 / 1 Регистрация: 05.09.2010 Сообщений: 370 |
|
21.12.2010, 05:25 |
9 |
А так?
0 |
1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
|
21.12.2010, 22:56 [ТС] |
10 |
НЕ…
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
22.12.2010, 07:06 |
11 |
А вот так …
0 |
wishcom 1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
||||
22.12.2010, 20:06 [ТС] |
12 |
|||
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||
22.12.2010, 22:58 |
13 |
|||
А вот так :
‘хотя в Excel наверняка существует функция возвращающая имя столбца,
0 |
1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
|
23.12.2010, 18:14 [ТС] |
14 |
У тебя код побыстрее, но у меня для Rows и Cols, в функции содержатся все операторы. Кстати. Ссылка на адрес… это черевато крахом Exel.
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
24.12.2010, 01:41 |
15 |
Этот код я написал специально для Вас, и в свете вышеописанных задач он свою функцию выполняет на 100%.
0 |
1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
|
24.12.2010, 11:29 [ТС] |
16 |
У меня сверху стоит Option Explicit Ну мне покрайней мере надо было Не. Дописал бы.. Самому пригодилось бы…
0 |
wishcom 1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
||||
24.12.2010, 14:01 [ТС] |
17 |
|||
Я тут к твоему коду присмотрелся и написал…
0 |
Dimakart 0 / 0 / 1 Регистрация: 11.10.2010 Сообщений: 48 |
||||
24.12.2010, 19:51 |
18 |
|||
А вот так не проще ли будет ?
0 |
1 / 1 / 0 Регистрация: 17.02.2010 Сообщений: 131 |
|
24.12.2010, 22:08 [ТС] |
19 |
По моему мой код побыстрее…
0 |
4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
|
25.12.2010, 01:21 |
20 |
Снимаю шляпу перед Dimakart. Я этот код хотел оставить напоследок, как мега извращение. Теперь снова придётся придумывать что-то более извращённое.
0 |
I have two sheets containing the employee records.
Sheet1 contains the Event Date, CardNo, Employee Name, Dept Id, Employee No, Entry and Exit Time, Total Working Hours, Status, ConcatinatedColumn and Remarks (copied through vlookup from sheet2)
Sheet2 contains ConcatinatedColumn, Event Date, Employee No, Name, Remarks.
If the data in the remarks column of sheet2 is «Sick Off» then that row should be inserted to sheet1 without effecting the previous records.
I’ve already written the code for it but it does not work.
Would be really grateful if anyone can help me out !
THANKS IN ADVANCE !
MY CODE :
Sub SickOff()
Dim objWorksheet As Sheet2
Dim rngBurnDown As Range
Dim rngCell As Range
Dim strPasteToSheet As String
'Used for the new worksheet we are pasting into
Dim objNewSheet As Sheet1
Dim rngNextAvailbleRow As Range
'Define the worksheet with our data
Set objWorksheet = ThisWorkbook.Worksheets("Sheet2")
'Dynamically define the range to the last cell.
'This doesn't include and error handling e.g. null cells
'If we are not starting in A1, then change as appropriate
Set rngBurnDown = objWorksheet.Range("G2:G" & objWorksheet.Cells(Rows.Count, "G").End(xlUp).Row)
'Now loop through all the cells in the range
For Each rngCell In rngBurnDown.Cells
objWorksheet.Select
If rngCell.Value = "Sick Off" Then
'select the entire row
rngCell.EntireRow.Select
'copy the selection
Selection.Copy
'Now identify and select the new sheet to paste into
Set objNewSheet = ThisWorkbook.Worksheets("Sheet1" & rngCell.Value)
objNewSheet.Select
'Looking at your initial question, I believe you are trying to find the next available row
Set rngNextAvailbleRow = objNewSheet.Range("A1:A" & objNewSheet.Cells(Rows.Count, "A").End(xlUp).Row)
Range("A" & rngNextAvailbleRow.Rows.Count + 1).Select
ActiveSheet.Paste
End If
Next rngCell
objWorksheet.Select
objWorksheet.Cells(1, 1).Select
'Can do some basic error handing here
'kill all objects
If IsObject(objWorksheet) Then Set objWorksheet = Nothing
If IsObject(rngBurnDown) Then Set rngBurnDown = Nothing
If IsObject(rngCell) Then Set rngCell = Nothing
If IsObject(objNewSheet) Then Set objNewSheet = Nothing
If IsObject(rngNextAvailbleRow) Then Set rngNextAvailbleRow = Nothing
End Sub
Вырезание, перемещение, копирование и вставка ячеек (диапазонов) в VBA Excel. Методы Cut, Copy и PasteSpecial объекта Range, метод Paste объекта Worksheet.
Метод Range.Cut
Range.Cut – это метод, который вырезает объект Range (диапазон ячеек) в буфер обмена или перемещает его в указанное место на рабочем листе.
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен (перемещен) вырезанный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект вырезается в буфер обмена. |
Для вставки на рабочий лист диапазона ячеек, вырезанного в буфер обмена методом Range.Cut, следует использовать метод Worksheet.Paste.
Метод Range.Copy
Range.Copy – это метод, который копирует объект Range (диапазон ячеек) в буфер обмена или в указанное место на рабочем листе.
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен скопированный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект копируется в буфер обмена. |
Метод Worksheet.Paste
Worksheet.Paste – это метод, который вставляет содержимое буфера обмена на рабочий лист.
Синтаксис
Worksheet.Paste (Destination, Link) |
Метод Worksheet.Paste работает как с диапазонами ячеек, вырезанными в буфер обмена методом Range.Cut, так и скопированными в буфер обмена методом Range.Copy.
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон (ячейка), указывающий место вставки содержимого буфера обмена. Если этот параметр не указан, используется текущий выделенный объект. |
Link | Необязательный параметр. Булево значение, которое указывает, устанавливать ли ссылку на источник вставленных данных: True – устанавливать, False – не устанавливать (значение по умолчанию). |
В выражении с методом Worksheet.Paste можно указать только один из параметров: или Destination, или Link.
Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, форматы, примечания и т.д.), а также для проведения транспонирования и вычислений, используйте метод Range.PasteSpecial (специальная вставка).
Примеры
Вырезание и вставка диапазона одной строкой (перемещение):
Range(«A1:C3»).Cut Range(«E1») |
Вырезание ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Range(«A1:C3»).Cut ActiveSheet.Paste Range(«E1») |
Копирование и вставка диапазона одной строкой:
Range(«A18:C20»).Copy Range(«E18») |
Копирование ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Range(«A18:C20»).Copy ActiveSheet.Paste Range(«E18») |
Копирование одной ячейки и вставка ее данных во все ячейки заданного диапазона:
Range(«A1»).Copy Range(«B1:D10») |
In this Article
- Rows & Columns – Paste vs. Insert
- Copy & Paste Over Existing Row / Column
- Copy & Insert Row / Column
- Copy Entire Row
- Cut and Paste Rows
- Copy Multiple Rows
- Copy Entire Column
- Cut and Paste Columns
- Copy Multiple Columns
- Copy Rows or Columns to Another Sheet
- Cut Rows or Columns to Another Sheet
This tutorial will teach you how to copy (or cut) entire Rows or Columns using VBA. We cover copying and pasting ranges of cells in another article.
First we will show you how to paste or insert copied rows/columns and discuss the differences. Then we will show you all of the different ways to references rows and columns when copying or cutting.
Rows & Columns – Paste vs. Insert
When pasting rows and columns you have two options: You can paste over the existing row (or column) or you can insert a new row (or column).
Let’s look at the difference…
Copy & Paste Over Existing Row / Column
This will copy row 1 and paste it into the existing row 5:
Range("1:1").Copy Range("5:5")
This will copy column C and paste it into column E:
Range("C:C").Copy Range("E:E")
Copy & Insert Row / Column
Instead you can insert the copied row or column and shift the existing rows or columns to make room.
This will copy row 1 and insert it into row 5, shifting the existing rows down:
Range("1:1").Copy
Range("5:5").Insert
This will copy column C and insert it into column E, shifting the existing columns to the right:
Range("C:C").Copy
Range("E:E").Insert
Copy Entire Row
Below we will show you several ways to copy row 1 and paste into row 5.
Range("1:1").Copy Range("5:5")
Range("A1").EntireRow.Copy Range("A5")
Rows(1).Copy Rows(5)
Cut and Paste Rows
Simply use Cut instead of Copy to cut and paste rows:
Rows(1).Cut Rows(5)
Copy Multiple Rows
Here are examples of copying multiple rows at once:
Range("5:7").Copy Range("10:13")
Range("A5:A7").EntireRow.Copy Range("A10:A13")
Rows("5:7").Copy Rows("10:13")
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Learn More
Copy Entire Column
You can copy entire columns similarily to copying entire rows:
Range("C:C").Copy Range("E:E")
Range("C1").EntireColumn.Copy Range("C1").EntireColumn
Columns(3).Copy Range(5)
Cut and Paste Columns
Simply use Cut instead of Copy to cut and paste columns:
Range("C:C").Cut Range("E:E")
Copy Multiple Columns
Here are examples of copying multiple columns at once:
Range("C:E").Copy Range("G:I")
Range("C1:E1").EntireColumn.Copy Range("G1:I1")
Columns("3:5").Copy Columns("7:9")
VBA Programming | Code Generator does work for you!
Copy Rows or Columns to Another Sheet
To copy to another sheet, simply use the Sheet Object:
Sheets("sheet1").Range("C:E").Copy Sheets("sheet2").Range("G:I")
Cut Rows or Columns to Another Sheet
You can use the exact same technique to cut and paste rows or columns to another sheet.
Sheets("sheet1").Range("C:E").Cut Sheets("sheet2").Range("G:I")
Содержание
- Range.Copy method (Excel)
- Syntax
- Parameters
- Return value
- Example
- Support and feedback
- Метод Range.Copy (Excel)
- Синтаксис
- Параметры
- Возвращаемое значение
- Пример
- Поддержка и обратная связь
- VBA Copy / Paste Rows & Columns
- Rows & Columns – Paste vs. Insert
- Copy & Paste Over Existing Row / Column
- Copy & Insert Row / Column
- Copy Entire Row
- Cut and Paste Rows
- Copy Multiple Rows
- VBA Coding Made Easy
- Copy Entire Column
- Cut and Paste Columns
- Copy Multiple Columns
- Copy Rows or Columns to Another Sheet
- Cut Rows or Columns to Another Sheet
- VBA Code Examples Add-in
- VBA Excel. Копирование данных с одного листа на другой
- Условие задачи по копированию данных
- Решение копированием с листа на лист
- Решение с использованием массивов
- 6 комментариев для “VBA Excel. Копирование данных с одного листа на другой”
- VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)
- Метод Range.Cut
- Синтаксис
- Параметры
- Метод Range.Copy
- Синтаксис
- Параметры
- Метод Worksheet.Paste
- Синтаксис
- Параметры
- Примеры
- 43 комментария для “VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)”
Range.Copy method (Excel)
Copies the range to the specified range or to the Clipboard.
Interested in developing solutions that extend the Office experience across multiple platforms? Check out the new Office Add-ins model. Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.
Syntax
expression.Copy (Destination)
expression A variable that represents a Range object.
Parameters
Name | Required/Optional | Data type | Description |
---|---|---|---|
Destination | Optional | Variant | Specifies the new range to which the specified range will be copied. If this argument is omitted, Microsoft Excel copies the range to the Clipboard. |
Return value
Example
The following code example copies the formulas in cells A1:D4 on Sheet1 into cells E5:H8 on Sheet2.
The following code example inspects the value in column D for each row on Sheet1. If the value in column D equals A, the entire row is copied onto SheetA in the next empty row. If the value equals B, the row is copied onto SheetB.
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
Источник
Метод Range.Copy (Excel)
Копирует диапазон в указанный диапазон или в буфер обмена.
Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Синтаксис
выражение.Copy (Destination)
выражение: переменная, представляющая объект Range.
Параметры
Имя | Обязательный или необязательный | Тип данных | Описание |
---|---|---|---|
Destination | Необязательный | Variant | Указывает новый диапазон, в который будет скопирован заданный диапазон. Если этот аргумент опущен, Microsoft Excel копирует диапазон в буфер обмена. |
Возвращаемое значение
Пример
В следующем примере кода копируются формулы ячеек A1:D4 с листа Sheet1 в ячейки с E5:H8 на листе Sheet2.
В приведенном ниже примере кода проверяется значение столбца D для каждой строки на листе Sheet1. Если значение в столбце D равно «A», вся строка копируется на лист SheetA в следующую пустую строку. Если значение равно «B», строка копируется на лист SheetB.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Источник
VBA Copy / Paste Rows & Columns
In this Article
This tutorial will teach you how to copy (or cut) entire Rows or Columns using VBA. We cover copying and pasting ranges of cells in another article.
First we will show you how to paste or insert copied rows/columns and discuss the differences. Then we will show you all of the different ways to references rows and columns when copying or cutting.
Rows & Columns – Paste vs. Insert
When pasting rows and columns you have two options: You can paste over the existing row (or column) or you can insert a new row (or column).
Let’s look at the difference…
Copy & Paste Over Existing Row / Column
This will copy row 1 and paste it into the existing row 5:
This will copy column C and paste it into column E:
Copy & Insert Row / Column
Instead you can insert the copied row or column and shift the existing rows or columns to make room.
This will copy row 1 and insert it into row 5, shifting the existing rows down:
This will copy column C and insert it into column E, shifting the existing columns to the right:
Copy Entire Row
Below we will show you several ways to copy row 1 and paste into row 5.
Cut and Paste Rows
Simply use Cut instead of Copy to cut and paste rows:
Copy Multiple Rows
Here are examples of copying multiple rows at once:
VBA Coding Made Easy
Stop searching for VBA code online. Learn more about AutoMacro — A VBA Code Builder that allows beginners to code procedures from scratch with minimal coding knowledge and with many time-saving features for all users!
Copy Entire Column
You can copy entire columns similarily to copying entire rows:
Cut and Paste Columns
Simply use Cut instead of Copy to cut and paste columns:
Copy Multiple Columns
Here are examples of copying multiple columns at once:
Copy Rows or Columns to Another Sheet
To copy to another sheet, simply use the Sheet Object:
Cut Rows or Columns to Another Sheet
You can use the exact same technique to cut and paste rows or columns to another sheet.
VBA Code Examples Add-in
Easily access all of the code examples found on our site.
Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.
Источник
VBA Excel. Копирование данных с одного листа на другой
Решение задачи по копированию данных с одного листа на другой без использования и с использованием массивов. Вызов из кода VBA Excel других процедур.
Условие задачи по копированию данных
На одном листе расположен список повторяющихся городов с информацией о предприятиях общепита:
Исходная таблица задания №1
Необходимо данные по каждому городу перенести в одну строку на другом листе (таблица обрезана справа):
Часть результирующего списка задания №1
Решение копированием с листа на лист
Это решение значительно проще, чем с использованием массивов, но более медленное. При больших объемах информации обработка может длиться достаточно долго. Решение достигается путем присваивания значений ячеек из таблицы первого листа ячейкам второго листа.
Переменные:
- n1 – количество строк в исходной таблице;
- n2 – номер столбца текущей ячейки исходной таблицы, к которой обращается цикл;
- n3 – номер строки текущей ячейки на втором листе;
- n4 – номер столбца текущей ячейки на втором листе;
- i1 – счетчик цикла For… Next;
- gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.
Решение с использованием массивов
Циклы в массивах работают очень быстро, но решение с ними может быть сложнее, чем при простом присваивании значений одних ячеек другим. В этом примере для упрощения кода две процедуры записаны отдельно и в нужные моменты вызываются для исполнения.
Подпрограммы Kopirovanie и Vstavka используются в цикле For. Next процедуры Resheniye2 по два раза, поэтому их коды вынесены за пределы процедуры Resheniye2 и вызываются по мере необходимости.
Переменные:
- massiv1 – его элементам присваиваются значения ячеек исходной таблицы;
- massiv2 – одномерный массив, заполняемый данными из переменной txt1;
- massiv3 – двумерный массив, заполняемый данными из одномерного массива massiv2 и используемый для вставки очередной строки на второй лист;
- txt1 – сюда копируются через разделитель значения элементов массива massiv1, предназначенные для заполнения очередной строки на втором листе;
- n1 – количество строк в исходной таблице;
- n2 – количество столбцов в исходной таблице;
- n3 – номер текущей строки на втором листе;
- n4 – количество столбцов текущей строки на втором листе (соответствует количеству элементов массива massiv2);
- i1, i2, i3 – счетчики цикла For… Next;
- gorod – переменная с наименованием города, предназначенная для контроля за сменой текущего города, который обрабатывается циклом.
Переменные, использующиеся более чем в одной процедуре, объявлены как глобальные в разделе Declarations программного модуля.
6 комментариев для “VBA Excel. Копирование данных с одного листа на другой”
Классно! Авторам — уважение! Толково, без соплей, со знанием дела.
Можете подсказать синтаксис такой проблемы: таблица 10 строк, 8 столбцов, если первая ячейка не пустая, скопировать на другой лист этой книги, а лучше — в отдельную книгу всю строку таблицы. Потом то же самое со строкой ниже, и так до последней. Потом пустые строки надо скрыть.
Это сложно?
Заранее спасибо за ответ.
Привет, Илья!
Для диапазона A1:H10:
Здравствуйте, Евгений! Огромное Вам спасибо! Потраченное время и желание помочь дорогого стОит, это большая редкость в наше время, поверьте. Ваш макрос — не совсем то, что мне нужно (например, новую книгу открывать не нужно, она уже есть, нужно просто на неё (и нужный лист) сослаться). Месторасположение ячеек в книгах не совпадает, строки тоже (27-я строка первой книги вставляется в 6-ю второй, т.е., например D27 в E6). И самое главное — вторая книга заполняется с нарастающим итогом. Т.е с первой книги берутся данные, вносятся во вторую, потом первая заполняется по новой, эти данные вносятся во вторую, но уже ниже и т.д.
Но, в любом случае, огромное спасибо, Вы дали направление, куда двигаться, буду думать ):
Добрый день, Евгений!
Существует способ автоматической передачи (копирования) данных из одного файла эксель в другой методом =…
А метод автоматической передачи (копирования) цвета имеется?
Подскажите пожалуйста!
Источник
VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)
Вырезание, перемещение, копирование и вставка ячеек (диапазонов) в VBA Excel. Методы Cut, Copy и PasteSpecial объекта Range, метод Paste объекта Worksheet.
Метод Range.Cut
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен (перемещен) вырезанный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект вырезается в буфер обмена. |
Для вставки на рабочий лист диапазона ячеек, вырезанного в буфер обмена методом Range.Cut, следует использовать метод Worksheet.Paste.
Метод Range.Copy
Синтаксис
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон ячеек рабочего листа, в который будет вставлен скопированный объект Range (достаточно указать верхнюю левую ячейку диапазона). Если этот параметр опущен, объект копируется в буфер обмена. |
Метод Worksheet.Paste
Синтаксис
Метод Worksheet.Paste работает как с диапазонами ячеек, вырезанными в буфер обмена методом Range.Cut, так и скопированными в буфер обмена методом Range.Copy.
Параметры
Параметры | Описание |
---|---|
Destination | Необязательный параметр. Диапазон (ячейка), указывающий место вставки содержимого буфера обмена. Если этот параметр не указан, используется текущий выделенный объект. |
Link | Необязательный параметр. Булево значение, которое указывает, устанавливать ли ссылку на источник вставленных данных: True – устанавливать, False – не устанавливать (значение по умолчанию). |
В выражении с методом Worksheet.Paste можно указать только один из параметров: или Destination, или Link.
Для вставки из буфера обмена отдельных компонентов скопированных ячеек (значения, форматы, примечания и т.д.), а также для проведения транспонирования и вычислений, используйте метод Range.PasteSpecial (специальная вставка).
Примеры
Вырезание и вставка диапазона одной строкой (перемещение):
Вырезание ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Копирование и вставка диапазона одной строкой:
Копирование ячеек в буфер обмена и вставка методом ActiveSheet.Paste:
Копирование одной ячейки и вставка ее данных во все ячейки заданного диапазона:
43 комментария для “VBA Excel. Вырезание, копирование и вставка ячеек (диапазонов)”
Странно, что не рассмотрено копирование ячеек, которые Cells.
Например, следующая строка копирует ячейку A1 в B2
а эта делает тоже самое, но демонстрирует,
как можно добавить размер и смещение:
Здравствуйте!
Скажите, как можно копировать на Лист 1, а вставить на Лист 2 диапазон ячеек целиком, либо отсортированный по 1 признаку диапазон(например по какому-то определенному значению, скажем, числу «500» в одном столбце Листа 1)?
Привет, Максим!
Вот пример сортировки таблицы по значению 500 в первом столбце на «Лист6» и копирования диапазона с «Лист6» на «Лист4» :
Спасибо большое, только я, наверно, неправильно описал ситуацию.
Сперва из эталонной таблицы Лист 1 копируем весь список на существующий Лист4.
Затем, пропускаем шапку, и, начиная со строки7, уже на Лист4 ищем строку, у которой в столбце 5 стоит число 500.
Вырезаем эту строку и вставляем на позицию строки 7. т.е первая после шапки.
Ищем следующую строку — вырезаем, потом вставляем на позицию строки 7+1=8 и т.д.
В итоге оставим только те строки, у которых в столбце 5 стоит число «500», остальные удаляются строки.
(пробовал менять местами строки в предыдущем коде, ошибок нет, копирует, переходит на лист 4, но строки на нем не удаляет, циклы пошагово проходят, но ничего не изменяется.)
Источник