В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Обращение к конкретной ячейке
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
- С помощью Range
- С помощью Cells
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Workbooks("Книга1.xls").Sheets("Лист1").Range("A3") ' Обратиться к ячейке A3 Workbooks("Книга1.xls").Sheets("Лист1").Cells(3, 1) ' Обратиться к ячейке в 3-й строке и 1-й колонке (A3)
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Range("A1") Cells(1, 1)
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
With Workbooks("Книга1").Sheets("Лист2") ' Вывести значение ячейки A1, которая находится на Листе2 MsgBox .Range("A1") ' Вывести значение ячейки B1, которая находится на Листе2 MsgBox .Range("B1") End With
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.
Application.ActiveCell ' полная запись ActiveCell ' краткая запись
Чтение значения из ячейки
Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.
Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
MsgBox Cells(1, 1) ' выведет 01.03.2018 MsgBox Cells(1, 1).Value ' выведет 01.03.2018 MsgBox Cells(1, 1).Value2 ' выведет 43160 MsgBox Cells(1, 1).Text ' выведет 01 марта 2018 г. Dim d As Date d = Cells(1, 1).Value2 ' числовое представление даты преобразуется в тип Date MsgBox d ' выведет 01.03.2018
Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
MsgBox Range("C1") ' выведет 123,4568 MsgBox Range("C1").Value ' выведет 123,4568 MsgBox Range("C1").Value2 ' выведет 123,456789 MsgBox Range("C1").Text ' выведет 123,457р. Dim c As Currency c = Range("C1").Value2 ' значение преобразуется в тип Currency MsgBox c ' выведет 123,4568 Dim d As Double d = Range("C1").Value2 ' значение преобразуется в тип Double MsgBox d ' выведет 123,456789
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.
Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.
Dim s As String Dim i As Integer s = Range("B1").Value2 ' успех i = Range("B1").Value2 ' ошибка
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Range("A1") = 123.45 Range("A1").Value = 123.45 Range("A1").Value2 = 123.45
Все три строки запишут в A1 одно и то же значение.
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
Cells(2, 1) = #3/1/2018# Cells(2, 1).Value = #3/1/2018# Cells(2, 1).Value2 = #3/1/2018#
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
Обращение к ячейке на листе Excel из кода VBA по адресу, индексу и имени. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке по адресу
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Range(«C5») Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Cells(5, 3) Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).Cells(5, «C») Workbooks(«Книга2.xlsm»).Sheets(«Лист2»).[C5] |
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
ActiveCell Range(«A1») Cells(1, 1) Cells(1, «A») [A1] |
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
‘по основному имени листа Лист2.Cells(2, 7) ‘по имени ярлыка Sheets(«Имя ярлыка»).Cells(3, 8) |
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.
Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):
Обращение к ячейке Range("A1:C3").Cells(5)
соответствует выражению Range("B2")
.
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range("Итого")
.
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Cells(2, 4).Value = 15 Cells(2, 4) = 15 Range(«A1») = «Этот текст записываем в ячейку» ActiveCell = 28 + 10*36 |
Вместе с числами и текстом можно использовать переменные. Примеры здесь и ниже приведены для активного листа. Для неактивных листов дополнительно необходимо указывать имя листа, как в разделе «Обращение к ячейке».
Чтение информации из ячейки
Считать информацию из ячейки в переменную можно также при помощи оператора присваивания «=»:
Sub Test() Dim a1 As Integer, a2 As Integer, a3 As Integer Range(«A3») = 6 Cells(2, 5) = 15 a1 = Range(«A3») a2 = Cells(2, 5) a3 = a1 * a2 MsgBox a3 End Sub |
Точно также можно обмениваться информацией между ячейками:
Cells(2, 2) = Range(«A4») |
Очистка значения ячейки
Очищается ячейка от значения с помощью метода ClearContents. Кроме того, можно присвоить ячейке значение нуля. пустой строки или Empty:
Cells(10, 2).ClearContents Range(«D23») = 0 ActiveCell = «» Cells(5, «D») = Empty |
Adding data to the worksheet is often done and it is essential to learn how to set variable to cell value in excel VBA. There can be instances when you want to add the same data to your worksheet. This task could easily be achieved with the help of Excel VBA variables. You can assign your cell values with variables. Let’s learn how to set variables to cell values in Excel VBA.
Declaring Variables in VBA
Before learning the assignment of variables, one needs to know what are variables and why they are used? Like any other programming language, VBA has variables. Variables are the containers to store data in them. There are some rules for storing data in them.
Rules for naming Variables
- The variable name cannot start with a number.
- While naming the variables you cannot have space between the names which means a space character (‘ ‘) is prohibited.
- The length of the variable name should be less than Two-hundred and fifty-five (255) characters.
Implicit and Explicit Declaration
In Excel VBA, variables can be classified into 2 categories implicit and explicit,
Implicit Declaration
The implicit declaration declares a variable of data type variant. When we create variables implicitly, we never mention the data type to be used. The VBA automatically considers that variable as of variant type.
Syntax: variable_name = assigned_value
The variant data type is of two types,
- Numeric Variant: The numeric variant data type is provided by VBA when the variable is assigned with a number. The bytes used are 16. It can take any value to Double.
- Text Variant: The text variant data type is provided by VBA when the variable is assigned with a text. The bytes used are 22. It’s always possible to take variable sizes of the string.
Explicit Declaration
The explicit declaration declares a variable of custom data type. One can always mention the data type of the variable being used at the time of declaration. The keyword used is ‘Dim’.
Syntax: Dim variable_name as data_type
variable_name = assigned_value
Opening VBA immediate Window
The excel immediate window can be compared with a terminal that displays the code output in any other programming language. We will use this immediate window to run our code in the macro itself and display the code output immediately. You can also use the immediate window for debugging and running multiple VBA macros at once.
Different Ways to Open Immediate Windows in VBA
Press Ctrl + G
Open your VBA, then use the Short cut Ctrl + G on your keyboard, and the immediate window will open at the bottom side of your VBA.
Using View Tab
Step 1: Go to the Developer Tab, under the code section, and click on Visual Basic.
Step 2: The VBA editor is open now.
Step 3: Go to View Tab, and click on Immediate Window.
Step 4: The Immediate Window appears.
Set Variable to Cell Value
After learning how to declare variables, and how to access the immediate window, you are ready to learn how to set variables to cell Values. Given the name of a student, ‘Arushi’. Write her Age and Aim in the worksheet by assigning variables in the VBA Macro.
Step 1: Go to the Developer Tab, under the code section, and click on Visual Basic.
Step 2: Your VBA editor is opened. Create a new Module. The name of the Sub created is geeks(). Declare an Age variable explicitly with custom data type as Integer. Assign the variable value as 19.
Step 3: Set the cell value by the variable name. Use =Range(cell).Value function to access any cell in the worksheet. Assign the Age variable to it. Run your macro.
Step 4: The value of cell C5 is set to 19.
Step 5: Repeat steps 2, 3, and 4 to set Aim for cell D5. Declare a variable name Aim explicitly with data type as Variant. Assign the variable value “CA”. Again, use the range function and set the cell value of D5 to the variable Aim.
Step 6: The value of cell D5 is set to “CA”.
Set Cell Value to Variable
We can also assign the cell values in the worksheet to the variables. Consider, the same data set as above but this time the age and aim of the student ‘Arushi’ are prefilled. Your task is to assign these values to the variables and print them in the immediate window.
Step 1: Go to the Developer Tab, under the code section, and click on Visual Basic.
Step 2: Declare the Age variable explicitly using the Dim keyword.
Step 3: Assign the Age variable with the value of cell ‘C5′. This can be achieved using =Range(cell).Value function. Print the Age variable in the immediate window using Debug.Print(variable) function.
Step 4: Click on the run button. The macro will run, and 19 is printed in the immediate window of the VBA.
Step 5: Repeat Steps 2, 3, and 4. Declare the Aim variable explicitly. The Range function assigns a cell value of D5 in the variable Aim. Print the Aim variable in the immediate window.
Step 6: Click on the run button, and “CA” is printed in the Immediate Window.
Содержание
- Чтение и запись значения ячейки в VBA
- Обращение к конкретной ячейке
- Чтение значения из ячейки
- Запись значения в ячейку
- VBA Excel. Ячейки (обращение, запись, чтение, очистка)
- Обращение к ячейке по адресу
- Обращение к ячейке по индексу
- Обращение к ячейке по имени
- Запись информации в ячейку
- VBA Excel. Переменная диапазона ячеек (As Range)
- Присвоение диапазона ячеек переменной
- Адресация ячеек в диапазоне
- Сводные таблицы Excel
- Использование конструкций with и End with для уменьшения объема кода
- Excel макрос присвоить переменной значение ячейки
Чтение и запись значения ячейки в VBA
В приложении Excel все данные как правило находятся в ячейках на листах, с которыми макросы работают как с базой данных. Поэтому, начинающему программисту VBA важно понимать как читать значения из ячейки Excel в переменные или массивы и, наоборот, записывать какие-либо значения на лист в ячейки.
Обращение к конкретной ячейке
Прежде чем читать или записывать значение в ячейке, нужно определиться с тем, как можно указать какая именно ячейка нам необходима.
Полный путь к ячейке A1 в Книге1 на Листе1 можно записать двумя вариантами:
- С помощью Range
- С помощью Cells
Пример 1: Обратиться к ячейке A3 находящейся в Книге1 на Листе1
Однако, как правило, полный путь редко используется, т.к. макрос работает с Книгой, в которой он записан и часто на активном листе. Поэтому путь к ячейке можно сократить и написать просто:
Пример 2: Обратиться к ячейке A1 в текущей книге на активном листе
Если всё же путь к книге или листу необходим, но не хочется его писать при каждом обращении к ячейкам, можно использовать конструкцию With End With. При этом, обращаясь к ячейкам, необходимо использовать в начале «.» (точку).
Пример 3: Обратиться к ячейке A1 и B1 в Книге1 на Листе2.
Так же, можно обратиться и к активной (выбранной в данный момент времени) ячейке.
Пример 4: Обратиться к активной ячейке на Листе3 текущей книги.
Чтение значения из ячейки
Есть 3 способа получения значения ячейки, каждый из которых имеет свои особенности:
- Value2 — базовое значение ячейки, т.е. как оно хранится в самом Excel-е. В связи с чем, например, дата будет прочтена как число от 1 до 2958466, а время будет прочитано как дробное число. Value2 — самый быстрый способ чтения значения, т.к. не происходит никаких преобразований.
- Value — значение ячейки, приведенное к типу ячейки. Если ячейка хранит дату, будет приведено к типу Date. Если ячейка отформатирована как валюта, будет преобразована к типу Currency (в связи с чем, знаки с 5-го и далее будут усечены).
- Text — визуальное отображение значения ячейки. Например, если ячейка, содержит дату в виде «число месяц прописью год», то Text (в отличие от Value и Value2) именно в таком виде и вернет значение. Использовать Text нужно осторожно, т.к., если, например, значение не входит в ячейку и отображается в виде «#####» то Text вернет вам не само значение, а эти самые «решетки».
По-умолчанию, если при обращении к ячейке не указывать способ чтения значения, то используется способ Value.
Пример 5: В ячейке A1 активного листа находится дата 01.03.2018. Для ячейки выбран формат «14 марта 2001 г.». Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
Пример 6: В ячейке С1 активного листа находится значение 123,456789. Для ячейки выбран формат «Денежный» с 3 десятичными знаками. Необходимо прочитать значение ячейки всеми перечисленными выше способами и отобразить в диалоговом окне.
При присвоении значения переменной или элементу массива, необходимо учитывать тип переменной. Например, если оператором Dim задан тип Integer, а в ячейке находится текст, при выполнении произойдет ошибка «Type mismatch». Как определить тип значения в ячейке, рассказано в следующей статье.
Пример 7: В ячейке B1 активного листа находится текст. Прочитать значение ячейки в переменную.
Таким образом, разница между Text, Value и Value2 в способе получения значения. Очевидно, что Value2 наиболее предпочтителен, но при преобразовании даты в текст (например, чтобы показать значение пользователю), нужно использовать функцию Format.
Запись значения в ячейку
Осуществить запись значения в ячейку можно 2 способами: с помощью Value и Value2. Использование Text для записи значения не возможно, т.к. это свойство только для чтения.
Пример 8: Записать в ячейку A1 активного листа значение 123,45
Все три строки запишут в A1 одно и то же значение.
Пример 9: Записать в ячейку A2 активного листа дату 1 марта 2018 года
В данном примере тоже запишется одно и то же значение в ячейку A2 активного листа.
Визуальное отображение значения на экране будет зависеть от того, какой формат ячейки выбран на листе.
Источник
VBA Excel. Ячейки (обращение, запись, чтение, очистка)
Обращение к ячейке на листе Excel из кода VBA по адресу, индексу и имени. Чтение информации из ячейки. Очистка значения ячейки. Метод ClearContents объекта Range.
Обращение к ячейке по адресу
Допустим, у нас есть два открытых файла: «Книга1» и «Книга2», причем, файл «Книга1» активен и в нем находится исполняемый код VBA.
В общем случае при обращении к ячейке неактивной рабочей книги «Книга2» из кода файла «Книга1» прописывается полный путь:
Удобнее обращаться к ячейке через свойство рабочего листа Cells(номер строки, номер столбца), так как вместо номеров строк и столбцов можно использовать переменные. Обратите внимание, что при обращении к любой рабочей книге, она должна быть открыта, иначе произойдет ошибка. Закрытую книгу перед обращением к ней необходимо открыть.
Теперь предположим, что у нас в активной книге «Книга1» активны «Лист1» и ячейка на нем «A1». Тогда обращение к ячейке «A1» можно записать следующим образом:
Точно также можно обращаться и к другим ячейкам активного рабочего листа, кроме обращения ActiveCell, так как активной может быть только одна ячейка, в нашем примере – это ячейка «A1».
Если мы обращаемся к ячейке на неактивном листе активной рабочей книги, тогда необходимо указать этот лист:
Имя ярлыка может совпадать с основным именем листа. Увидеть эти имена можно в окне редактора VBA в проводнике проекта. Без скобок отображается основное имя листа, в скобках – имя ярлыка.
Обращение к ячейке по индексу
К ячейке на рабочем листе можно обращаться по ее индексу (порядковому номеру), который считается по расположению ячейки на листе слева-направо и сверху-вниз.
Например, индекс ячеек в первой строке равен номеру столбца. Индекс ячеек во второй строке равен количеству ячеек в первой строке (которое равно общему количеству столбцов на листе, зависящему от версии Excel) плюс номер столбца. Индекс ячеек в третьей строке равен количеству ячеек в двух первых строках плюс номер столбца. И так далее.
Для примера, Cells(4) та же ячейка, что и Cells(1, 4). Используется такое обозначение редко, тем более, что у разных версий Excel может быть разным количество столбцов и строк на рабочем листе.
По индексу можно обращаться к ячейке не только на всем рабочем листе, но и в отдельном диапазоне. Нумерация ячеек осуществляется в пределах заданного диапазона по тому же правилу: слева-направо и сверху-вниз. Вот индексы ячеек диапазона Range(«A1:C3»):
Обращение к ячейке Range(«A1:C3»).Cells(5) соответствует выражению Range(«B2») .
Обращение к ячейке по имени
Если ячейке на рабочем листе Excel присвоено имя (Формулы –> Присвоить имя), то обращаться к ней можно по присвоенному имени.
Допустим одной из ячеек присвоено имя – «Итого», тогда обратиться к ней можно – Range(«Итого») .
Запись информации в ячейку
Содержание ячейки определяется ее свойством «Value», которое в VBA Excel является свойством по умолчанию и его можно явно не указывать. Записывается информация в ячейку при помощи оператора присваивания «=»:
Источник
VBA Excel. Переменная диапазона ячеек (As Range)
Присвоение диапазона ячеек объектной переменной в VBA Excel. Адресация ячеек в переменной диапазона и работа с ними. Определение размера диапазона. Примеры.
Присвоение диапазона ячеек переменной
Чтобы переменной присвоить диапазон ячеек, она должна быть объявлена как Variant, Object или Range:
Чтобы было понятнее, для чего переменная создана, объявляйте ее как Range.
Присваивается переменной диапазон ячеек с помощью оператора Set:
В выражении Range(Cells(3, 4), Cells(26, 18)) вместо чисел можно использовать переменные.
Для присвоения диапазона ячеек переменной можно использовать встроенное диалоговое окно Application.InputBox, которое позволяет выбрать диапазон на рабочем листе для дальнейшей работы с ним.
Адресация ячеек в диапазоне
К ячейкам присвоенного диапазона можно обращаться по их индексам, а также по индексам строк и столбцов, на пересечении которых они находятся.
Индексация ячеек в присвоенном диапазоне осуществляется слева направо и сверху вниз, например, для диапазона размерностью 5х5:
1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 |
Индексация строк и столбцов начинается с левой верхней ячейки. В диапазоне этого примера содержится 5 строк и 5 столбцов. На пересечении 2 строки и 4 столбца находится ячейка с индексом 9. Обратиться к ней можно так:
Источник
Сводные таблицы Excel
В популярных языках программирования переменная содержит одно значение. Чтобы присвоить значение 4 переменной х, можно использовать выражение х = 4. Рассмотрим отдельную ячейку в Excel. Существует много свойств, описывающих ячейку.
Ячейка может содержать числовое значение, для нее указывается размер и цвет шрифта, строки, столбца, определяется формула, примечание и т.п. В VBA можно создать «суперпеременную», которая будет содержать всю информацию о ячейке или даже целом объекте. Выражение х = Range(«A1») присваивает переменной х текущее значение ячейки A1. Для создания объектной переменной применяется ключевое слово Set.
Вы создали «суперпеременную», которая содержит все свойства ячейки.
Вместо использования переменной с одним значением можно работать с переменной, в которой предоставляется доступ к значениям многих свойств, связанных с этой переменной. Можете использовать выражение х.Formula , чтобы увидеть формулу в ячейке А1, или х.Font.colorlndex , чтобы определить цвет ячейки.
В примерах, приводимых в этом разделе, часто используется объектная переменная PT. Она применяется в тех случаях, когда определяется ссылка на сводную таблицу. Если, например, в коде содержится ссылка ActiveSheet.PivotTables(«PivotTable1») , можно воспользоваться переменной объекта РТ, чтобы уменьшить объем кода.
Использование конструкций with и End with для уменьшения объема кода
При работе со сводными таблицами приходится часто изменять значения их отдельных параметров. Ниже приводится пример кода (подробнее он объясняется далее), каждая строка которого изменяет значение параметра сводной таблицы.
При выполнении перечисленных выше строк кода интерпретатор VBA должен постоянно расшифровывать, что означает ссылка «РТ». Чтобы ускорить выполнение кода, укажите ссылку РТ один раз. Для каждой строки кода, которая начинается точкой, подразумевается ссылка на объект, указанный с помощью конструкции With. Блок кода завершается конструкцией End With.
Источник
Excel макрос присвоить переменной значение ячейки
Заранее извиняюсь за глупый вопрос. Подскажите, пожалуйста, как присвоить значение формулы переменной. Пример файла во вложении.
Заранее извиняюсь за глупый вопрос. Подскажите, пожалуйста, как присвоить значение формулы переменной. Пример файла во вложении.
Сообщение Добрый день.
Заранее извиняюсь за глупый вопрос. Подскажите, пожалуйста, как присвоить значение формулы переменной. Пример файла во вложении.
Заранее спасибо. Автор — TimosMN15
Дата добавления — 28.03.2015 в 23:23
krosav4ig | Дата: Воскресенье, 29.03.2015, 00:06 | Сообщение № 2 | ||||||||||
|
xlgrgrc Пользователь Сообщений: 3 |
Всем доброго времени суток. Ввожу первоначальные данные в Excel. (Прикрепленный документ Исходные данные). Нажимаю кнопку «выполнить». Данные вбиваются в 2 документа в соответствующие места, каждый сохраняется под своим именем в нужном месте, оригинал в своей папке. Так же 1 копия документа выделяется и копируется в Word, сохраняется куда нужно. Private Sub Ok_Click() Тоесть теперь у меня есть уже готовый документ Word (Постановление) и мне нужно прикрепленного документ «Исходные данные» вставить в ворд в определенные места Вместо XXX1 нужные данные. Вопросы. В школе хорошо кодил на бейсике (олимпиады) сейчас занимаюсь AutoIT (скрипты). Нужен совет. Либо ссылка на подробное описание лексики VBa. Заранее спасибо! |
xlgrgrc Пользователь Сообщений: 3 |
|
Sub Макрос1() ‘ Range(«A1»).Select — выбрать ячейку A1 Как теперь переключиться на Word? |
|
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
1. Не нужно Select: Range(«A1»).Copy Если переменной, то: Переменная=Range(«A1»).value <BR>2. У нас работает поиск: http://yandex.ru/sitesearch?text=%EE%F2%EA%F0%FB%F2%FC+%E4%EE%EA%F3%EC%E5%ED%F2+word&searchid=84804&web=0&lr=22 |
Так с переменной ппонял. Получилось. Ошибка была что копировал и получался пробел x = Лист 1.Cells(1, 1) в Лист1. Про поиск в курсе но задавал вопрос Excel в ворд. Прочитал много даже пример открытия чистого Word видел . Щас перечитаю ещё. ))) Спасибо что отозвался ))) |
|
xlgrgrc Пользователь Сообщений: 3 |
Решил задачу на примере вот этого http://www.planetaexcel.ru/forum.php?thread_id=19286 Юрий М — спасибо большое ) Очень благодарен. Вот код что получился в итоге — может кому пригодиться… Sub Макрос1() Dim sOM As String, sDocNum As String sOM = «G:. ШаблоныПостановление.doc» ‘sOM = Range(«B9»).Value End Sub Код берет из Excel данные ячеек и вставляет их в закладки в Word. Когда получилось оказалось всё проще чем думал. Если что то вот адрес страницы в контакте — http://vkontakte.ru/popov_sergey_vladimirovich |
У меня ещё вопрос возник. Итогом этого макроса является открытый документ Word. Ни как не получается его сохранить и закрыть или макроса Excel/ Пишу .Close закрывается Окно Excel откуда был запущен макрос. А как мне дать команду Ворду что бы он сохранился куда нужно и закрылся ? |
|
Hugo Пользователь Сообщений: 23249 |
Могу такую цитату предложить — вроде всё есть: Private Sub start_DblClick(Cancel As Integer) |
Ага спасибо ) Только что получилось, зашел как раз поделиться тоже ))) Sub Макрос1() xNp = Range(«B2»).Value sOM = «G:. ШаблоныПостановление.doc» xxData = xData & » № » & xNp dc1.SaveAs «G:. ШаблоныПостановление1.doc» dc1.Close Set dc1 = Nothing End Sub Принцип понял ) И ошибку понял ))) |
|
Юрий М Модератор Сообщений: 60570 Контакты см. в профиле |
В Word есть такая штука, как СЛИЯНИЕ. Может его задействовать? |
Да Юра читал про неё даже пробовал. Но на сколько я понял — слияние больше подходит для формирование документа из списка: рассылка поздравлений и т.д. где перебирается весь список в цикле и вставляется в нужные места. У меня же это делает 1 раз и трижды пересохраняется документ. Моя ошибка была с переменными. Щас не помню, но есть сообщение на этом форуме в котором расписана структура документа ворд и эксель. Я его читал раз 6 и только к вечеру понял как то реализовано на VBA … Вообщем, очень благодарен всем за помощь ) Форум что наде!!! |
|
Как это элементарно, но давно не рабоитала в Exce, многое забыла. Что бы мы делали без инета? Спасибо |
|
Guest Гость |
#13 12.12.2012 10:58:20 спасибо, большое. Инфо мне пригодилось |