Вырезание, перемещение, копирование и вставка ячеек (диапазонов) в 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») |
На чтение 3 мин. Просмотров 51.7k.
Итог: Изучите 3 различных способа копирования и вставки ячеек или диапазонов в Excel с помощью макросов VBA. Это серия из трех частей, также вы сможете скачать файл, содержащий код.
Уровень мастерства: Начинающий
Копировать и вставить: наиболее распространенное действие Excel
Копирование и вставка, вероятно, является одним из самых
распространенных действий в Excel. Это также одна из самых распространенных
задач, которые мы автоматизируем при написании макросов.
Есть несколько различных способов выполнить эту задачу, и устройство записи макросов не всегда дает вам наиболее эффективный код VBA.
В следующих трех видео я объясняю:
- Самый эффективный метод для простого копирования
и вставки в VBA. - Самый простой способ вставить значения.
- Как использовать метод PasteSpecial для других
типов вставок.
Видео № 1: Простой метод «Копировать-вставить»
Видео лучше всего просматривать в полноэкранном HD.
Sub Примеры_копирования_диапазона() 'Используйте метод Range.Copy для простого копирования / вставки 'Метод Range.Copy - копирование и вставка с 1 строкой Range("A1").Copy Range("C1") Range("A1:A3").Copy Range("D1:D3") Range("A1:A3").Copy Range("D1") 'Range.Copy с одного листа на другой Worksheets("Лист1").Range("A1").Copy Worksheets("Лист2").Range("A1") 'Range.Copy с одного файла (на другой Workbooks("План.xlsx").Worksheets("Лист1").Range("A1").Copy _ Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1") End Sub
Видео № 2: Простой способ вставить значения
Sub Копируем_только_значения() 'Установите значения ячеек равными другим, чтобы вставить значения 'Устанавливает равенство одного диапазона другому Range("C1").Value = Range("A1").Value Range("D1:D3").Value = Range("A1:A3").Value 'Равенство значений между листами Worksheets("Лист1").Range("A1").Value = Worksheets("Лист2").Range("A1").Value 'Равенство значений между книгами Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1").Value = _ Workbooks("План.xlsx").Worksheets("Лист1").Range("A1").Value End Sub
Видео № 3: Метод PasteSpecial
Sub Копируем_с_помощью_специальной_вставки() 'Используйте метод Range.PasteSpecial для выбора типа вставки 'Копируем и вставляем через СпецВставку Range("A1").Copy Range("A5").PasteSpecial Paste:=xlPasteFormats 'Используем спецвставку между листами Worksheets("Лист1").Range("A2").Copy Worksheets("Лист2").Range("A2").PasteSpecial Paste:=xlPasteFormulas 'Используем спецвставку между файлами Workbooks("План.xlsx").Worksheets("Лист1").Range("A3").Copy Workbooks("Факт.xlsx").Worksheets("Лист1").Range("A1").PasteSpecial Paste:=xlPasteFormats 'Убираем "бегающих муравьёв" после копирования (очищаем буфер обмена) Application.CutCopyMode = False End Sub
Вставить данные ниже последней заполненной строки
Один из самых распространенных вопросов, которые я получаю о копировании и вставке с помощью VBA: «Как мне вставить данные в конец таблицы? «
Сначала нужно найти последнюю заполненную строку данных, а затем скопировать и вставить ниже неё.
Переходите по ссылке, чтобы научиться 3 способам поиска последней заполненной ячейки
Всем привет ребят. Хотел бы узнать, может у кого есть данный макрос: Нужен макрос на копирование значений выделенных (например другим цветом) ячеек на другой лист/worksheet. То есть у меня есть лист на котором подсчитан результат в одной ячейке, я бы хотел выделить эту ячейку например желтым цветом и нажать кнопку макроса чтобы значение этой ячейки было скопировано до другого excel файла. Заранее спасибо Изменено: Юрий М — 04.01.2023 13:03:49 |
|
макрос, который копирует хрен знает что хрен знает куда? так?? Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Предлагаю название для данной темы: «Макрос на копирование выделенных ячеек на новый лист». Прикрепляю файл |
|
Ігор Гончаренко Пользователь Сообщений: 13746 |
#6 04.01.2023 14:49:21 скопируйте этот
в стандартный модуль выделите лиапазон Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
How to copy and paste data using a Macro in Excel. I’ll show you multiple ways to do this, including across worksheets and workbooks.
Sections:
Simple Copy/Paste
Copy Entire Range
Copy between Worksheets
Copy between Workbooks
Notes
Simple Copy/Paste
Range("A1").Copy Range("B1")
This copies cell A1 to cell B1.
Range(«A1»).Copy is the part that copies the cell.
Range(«B1») is the cell where the data will be copied.
This is a simple one line piece of code and it’s very easy to use.
Notice that there is a space between these two parts of the code.
Copy Entire Range
Range("A1:A5").Copy Range("B1:B5")
Range(«A1:A5»).Copy is the part that copies the range.
Range(«B1:B5») is the range where the data will be copied.
You can also write it like this:
Range("A1:A5").Copy Range("B1")
Notice that the range to where you will copy the data has only a reference to cell B1.
You only have to reference the very first cell to which the range will be copied and the entire range will copy in the cells below there.
NOTE: if you do it like this, you may end up overwriting data and Excel will not give you a warning about this; the data will simply be filled down as far as it needs to go to copy the first range.
Copy between Worksheets
Sheets("Sheet1").Range("A1").Copy Sheets("Sheet2").Range("B1")
This follows the same pattern as the above examples except that we need to tell the macro from which sheet we want to get the data and to which sheet we want to copy the data.
Sheets(«Sheet1»). is placed in front of the first range and that means to get the data from Sheet1, which is the name of a worksheet in the workbook.
Sheets(«Sheet2»). is placed in front of the range to which we want to copy the data and Sheet2 is the name of the worksheet where the data will be copied.
Copy between Workbooks
Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet1").Range("A1").Copy Workbooks("Copy and Paste Data using Macro VBA in Excel.xlsm").Sheets("Sheet3").Range("A1")
Here, we follow the above examples and, this time, add a reference to the workbooks from which we want to get the data and to which we want to place the data.
Workbooks(«Copy and Paste Data using Macro VBA in Excel.xlsm»). is the code that says in which workbook we want to place the data. Copy and Paste Data using Macro VBA in Excel.xlsm is the name of the workbook. In this example I used this for both parts, the workbook from which the data comes and where it goes. This allows you to run this macro within a single workbook and still show you how it works. In a real-world example, the first part contains the name of the workbook where you get the data from and the second contains the name of the workbook where you want to place the data.
Read this tutorial to copy values from another workbook, even if it’s closed.
Notes
All examples in the attached workbook have been commented out. Simply remove the single quote from the line of code you want to test and then run the macro.
Download the attached file to get these examples in Excel.
Similar Content on TeachExcel
Activate or Navigate to a Worksheet using Macros VBA in Excel
Tutorial: Make a particular worksheet visible using a macro in Excel.
This is called activating a wo…
Get the Name of a Worksheet in Macros VBA in Excel
Tutorial: How to get the name of a worksheet in Excel using VBA and Macros and also how to store tha…
Get the Last Row using VBA in Excel
Tutorial:
(file used in the video above)
How to find the last row of data using a Macro/VBA in Exce…
Remove Dashed Lines from Copy Paste VBA in Excel
Tutorial: How to remove the flashing dashes from a copy/paste range using VBA in Excel; this removes…
Copy one range and paste in another range
Tutorial: Below is a macro, just copy and paste it into a module in your workbook and go from there…
Guide to Combine and Consolidate Data in Excel
Tutorial: Guide to combining and consolidating data in Excel. This includes consolidating data from …
Subscribe for Weekly Tutorials
BONUS: subscribe now to download our Top Tutorials Ebook!
0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
|
1 |
|
27.11.2017, 10:34. Показов 32428. Ответов 18
Здравствуйте господа программисты! Столкнулся с непосильной задачей. Знания в написании макросов на уровне новичка, да и то, в большей степени по примерам, так что прошу помощи. Буду благодарен за любые советы. И так, есть некий (см. вложение) в котором на первом листе заполняются данные каждый день. Хотелось бы чтобы данные с первого листа копировались на второй лист по условию: а именно на первом листе в 1ом столбце числа. Нужно копировать данные на второй лист по числам. Если второе число не вводится то по умолчанию считаем, что копирование происходит с введенного числа до конца заполненных ячеек. Копировать необходимо только с 3 по 7 столбец Листа1. С последующей выгрузкой на отправку на почту с названием которое берется с ячейки R1 лист1. Внутри два макроса. Помогите довести макрос до ума…
0 |
2632 / 1637 / 745 Регистрация: 23.03.2015 Сообщений: 5,143 |
|
27.11.2017, 14:36 |
2 |
DEN_ZH,
0 |
0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
|
27.11.2017, 14:46 [ТС] |
3 |
На втором листе должно получится столбцы первого листа с 3го по 7ой. определенной даты
0 |
0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
|
27.11.2017, 15:01 [ТС] |
4 |
в примере есть макрос. который я нарыл в сети, но не знаю как приспособить его под свою задачу. Макрос почта работает как полагается. Идеальный вариант бы их объеденить. И первую часть с разъяснением. так как пока далек от детального понимания
0 |
Narimanych 2632 / 1637 / 745 Регистрация: 23.03.2015 Сообщений: 5,143 |
||||
27.11.2017, 16:08 |
5 |
|||
DEN_ZH, Попробуйте
0 |
0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
|
27.11.2017, 16:21 [ТС] |
6 |
да по копированию это то что надо, в плане столбцов. Но копирует полностью массив, а необходимо чтоб копировал только массив определенного числа. Иначе говоря должен в столбце А найти необходимое число. Положем оно находится на 15ой строке. Значит верхнюю точку массива должен присвоить не Cells(3, 3) а Cells(15, 3), далее найти наше число +1 ниже. И поставить ограничение нижнего угла массива Cells(28, 7). А если нашего числа+1 нет, то ограничится пустой ячейкой.
0 |
2632 / 1637 / 745 Регистрация: 23.03.2015 Сообщений: 5,143 |
|
27.11.2017, 16:42 |
7 |
да по копированию это то что надо, в плане столбцов. Но копирует полностью массив, а необходимо чтоб копировал только массив определенного Я же просил … показать на втором листе….
да по копированию это то что надо, в плане столбцов. Но копирует полностью массив, а необходимо чтоб копировал только массив определенного числа. Иначе говоря должен в столбце А найти необходимое число. Положем оно находится на 15ой строке. Значит верхнюю точку массива должен присвоить не Cells(3, 3) а Cells(15, 3), далее найти наше число +1 ниже. И поставить ограничение нижнего угла массива Cells(28, 7). А если нашего числа+1 нет, то ограничится пустой ячейкой. — Необходимо выделить значения определенной даты…- подтвердите, правильно ли я понял? Добавлено через 3 минуты
0 |
0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
|
28.11.2017, 05:45 [ТС] |
8 |
Да правильно. Необходимо чтобы бралось определенное число. Если вбиваю 27.11.2017 то брался массив с11:g41
0 |
0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
|
28.11.2017, 05:46 [ТС] |
9 |
обновленный файл
0 |
DEN_ZH 0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
||||||||
28.11.2017, 09:35 [ТС] |
10 |
|||||||
Макрос как я понимаю должен быть что то подобие этого:
Единственные поправки в том, что во-первых: If Cells(i, 1) = «27.11.2017» Then второе: макрос копирует не значения а формулы, а надо чтоб копировал формат ячейки и данные Добавлено через 1 час 34 минуты
Не могу додумать как же вставить ввод числа (как пример dat1 = CDate(InputBox(«Введите начало периода»))), пробывал вставлять строку, и тогда начинается нескончаемый цикл с вводом числа. иначе с=говоря строка уходит в цикл И не могу додумать как же все же на втором листе получить не формулы а значения в скопированных ячейках… Добавлено через 3 минуты
0 |
2632 / 1637 / 745 Регистрация: 23.03.2015 Сообщений: 5,143 |
|
28.11.2017, 23:05 |
11 |
DEN_ZH, Посмотрите прикрепленный файл… Если что не понятно, пишите. P.S. Простите за задержку, на работе -аврал.
0 |
DEN_ZH 0 / 0 / 0 Регистрация: 03.10.2017 Сообщений: 12 |
||||
29.11.2017, 06:14 [ТС] |
12 |
|||
Все просто замечательно, по этой задаче. Даже через форму сделано — это просто супер, но мы же простых путей не ищем. С кодом вроде все понятно так же. Но вот теперь еще другой вопрос: а если усложнить задачу таким образом, чтоб лист два был не физичиский лист, а переменный (иначе говоря виртуальный — как буфер обмена) чтоб происходило бы открытие нового файла, куда вставлялось бы, все то что скопировано и уходило по почте. (это вторая часть изночального соощения) мой код подобной работы выглядит так:
0 |
0 / 0 / 0 Регистрация: 04.02.2019 Сообщений: 14 |
|
15.02.2019, 11:31 |
13 |
Добрый день. Не стал создавать отдельную тему, т.к моя проблема очень похожа на описанную здесь, но более сложная. У меня есть Книга с 3 листами. Лист «СВОД» заполняется каждый день. Мне надо, чтоб в зависимости от того, какой поставщик указан (столбец С), данные копировались на соответствующий лист. Важно!!! 1) В листах поставщиков («RP» & «LK») данные не должны перезаписывать предыдущие уже существующие, а должны добавляться ниже. Как я вижу должен работать макрос. Я заполняю Лист «СВОД». Затем вызываю макрос, указываю дату (Лист «СВОД» колонка В). Соответствующие данные копируются на свои листы. Очень прошу мне помочь с макросом в решении моей проблемы. Спасибо! P.S почему мне не подходит вариант это все сделать через формулы и ссылки. Потому что ежедневно добавляется до 100 новых строк. Учитывая такое количество формул — работа Книги будет очень медленной! Поэтому и нужно это все сделать через макрос.
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
16.02.2019, 01:28 |
14 |
Фильтры смотрю знакомы — почему бы не использовать их для этой задачи? Зачем плодить сущности?
0 |
0 / 0 / 0 Регистрация: 04.02.2019 Сообщений: 14 |
|
17.02.2019, 11:06 |
15 |
Зачем задавать риторические вопросы, упиваясь своим превосходством? Фильтры возможно и знакомы, но человеку, совершенно не разбирающемуся в VBA — это совсем темный лес. Поэтому приходится просить помощи у людей разбирающихся, а не читать язвительные комментарии.
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
17.02.2019, 16:45 |
16 |
Так если есть задача посмотреть всё что относится к «RP» — выбираете в фильтре «RP» и смотрите. И обучаете как использовать фильтр того, кто задал Вам задачу растащить это всё по листам.
0 |
0 / 0 / 0 Регистрация: 04.02.2019 Сообщений: 14 |
|
17.02.2019, 17:27 |
17 |
Уважаемый Hugo121, Если бы все так было просто, я не стал тратить свое и чужое время на переписку.
0 |
6875 / 2807 / 533 Регистрация: 19.10.2012 Сообщений: 8,562 |
|
17.02.2019, 18:03 |
18 |
1. Сам конечно не поймёт, ну разве что по отношению к текущей дате можно высчитать. Но можете указать нужную дату в инпутбоксе например, или присобачить любой календарь, универсальнее его взять с форума.
для упрощения процесса лучше вынести наверх 5. В целом всё не особо сложно, но мне например непонятно зачем это всё вообще нужно? Почему нельзя просто дополнять один лист, там ведь более миллиона строк? И этим упростить всем (и главное себе) жизнь? Всё, больше никаких глупых рекомендаций
0 |
0 / 0 / 0 Регистрация: 04.02.2019 Сообщений: 14 |
|
25.02.2019, 12:41 |
19 |
Вот помогли сделать рабочий вариант решения моей проблемы (копирование по условию)
0 |
IT_Exp Эксперт 87844 / 49110 / 22898 Регистрация: 17.06.2006 Сообщений: 92,604 |
25.02.2019, 12:41 |
19 |
Bottom line: Learn 3 different ways to copy and paste cells or ranges in Excel with VBA Macros. This is a 3-part video series and you can also download the file that contains the code.
Skill level: Beginner
Copy & Paste: The Most Common Excel Action
Copy and paste is probably one of the most common actions you take in Excel. It’s also one of the most common tasks we automate when writing macros.
There are a few different ways to accomplish this task, and the macro recorder doesn’t always give you the most efficient VBA code.
In the following three videos I explain:
- The most efficient method for a simple copy and paste in VBA.
- The easiest way to paste values.
- How to use the PasteSpecial method for other paste types.
You can download the file I use in these videos below. The code is also available at the bottom of the page.
Video #1: The Simple Copy Paste Method
You can watch the playlist that includes all 3 videos at the top of this page.
Video #2: An Easy Way to Paste Values
Video #3: The PasteSpecial Method Explained
VBA Code for the Copy & Paste Methods
Download the workbook that contains the code.
'3 Methods to Copy & Paste with VBA
'Source: https://www.excelcampus.com/vba/copy-paste-cells-vba-macros/
'Author: Jon Acampora
Sub Range_Copy_Examples()
'Use the Range.Copy method for a simple copy/paste
'The Range.Copy Method - Copy & Paste with 1 line
Range("A1").Copy Range("C1")
Range("A1:A3").Copy Range("D1:D3")
Range("A1:A3").Copy Range("D1")
'Range.Copy to other worksheets
Worksheets("Sheet1").Range("A1").Copy Worksheets("Sheet2").Range("A1")
'Range.Copy to other workbooks
Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy _
Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1")
End Sub
Sub Paste_Values_Examples()
'Set the cells' values equal to another to paste values
'Set a cell's value equal to another cell's value
Range("C1").Value = Range("A1").Value
Range("D1:D3").Value = Range("A1:A3").Value
'Set values between worksheets
Worksheets("Sheet2").Range("A1").Value = Worksheets("Sheet1").Range("A1").Value
'Set values between workbooks
Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").Value = _
Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Value
End Sub
Sub PasteSpecial_Examples()
'Use the Range.PasteSpecial method for other paste types
'Copy and PasteSpecial a Range
Range("A1").Copy
Range("A3").PasteSpecial Paste:=xlPasteFormats
'Copy and PasteSpecial a between worksheets
Worksheets("Sheet1").Range("A2").Copy
Worksheets("Sheet2").Range("A2").PasteSpecial Paste:=xlPasteFormulas
'Copy and PasteSpecial between workbooks
Workbooks("Book1.xlsx").Worksheets("Sheet1").Range("A1").Copy
Workbooks("Book2.xlsx").Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteFormats
'Disable marching ants around copied range
Application.CutCopyMode = False
End Sub
Paste Data Below the Last Used Row
One of the most common questions I get about copying and pasting with VBA is, how do I paste to the bottom of a range that is constantly changing? I first want to find the last row of data, then copy & paste below it.
To answer this question, I created a free training video on how to paste data below the last used row in a sheet with VBA. Can I send you the video? Please click the image below to get the video.
Free Training on Macros & VBA
The 3 videos above are from my VBA Pro Course. If you want to learn more about macros and VBA then checkout my free 3-part video training series.
I will also send you info on the VBA Pro Course, that will take you from beginner to expert. Click the link below to get instant access.
Free Training on Macros & VBA
Please leave a comment below with any questions. Thanks!
In excel, I am trying to copy text from one cell to another cell in another sheet. The source cell contains formatted text (bold,underlined,different colors). But when I copy the text using VBA to the other cell, the formatting is lost.
I know it is because excel is copying only the text value. Is there a way we can read the HTML text (rather than plain text) from a cell?
I have googled this and did not get any answers. I know that if we use copy and paste methods, we can copy the formatting.
E.g.
Range("F10").Select
Selection.Copy
Range("I10").Select
ActiveSheet.Paste
But I want to do it without a copy and paste since my destination is a merged cell and not identically sized as my source cell. Is there an option available in excel VBA to do this?
EDIT:
I was able to solve it with the following code.
Range("I11").Value = Range("I10").Value
For i = 1 To Range("I10").Characters.Count
Range("I11").Characters(i, 1).Font.Bold = Range("I10").Characters(i, 1).Font.Bold
Range("I11").Characters(i, 1).Font.Color = Range("I10").Characters(i, 1).Font.Color
Range("I11").Characters(i, 1).Font.Italic = Range("I10").Characters(i, 1).Font.Italic
Range("I11").Characters(i, 1).Font.Underline = Range("I10").Characters(i, 1).Font.Underline
Range("I11").Characters(i, 1).Font.FontStyle = Range("I10").Characters(i, 1).Font.FontStyle
Next i