Home / VBA / VBA Calculate (Cell, Range, Row, & Workbook)
By default, in Excel, whenever you change a cell value Excel recalculates all the cells that have a calculation dependency on that cell. But when you are using VBA, you have an option to change it to the manual, just like we do in Excel.
Using VBA Calculate Method
You can change the calculation to the manual before you start a code, just like the following.
Application.Calculation = xlManual
When you run this code, it changes the calculation to manual.
And at the end of the code, you can use the following line of code to switch to the automatic.
Application.Calculation = xlAutomatic
You can use calculation in the following way.
Sub myMacro()
Application.Calculation = xlManual
'your code goes here
Application.Calculation = xlAutomatic
End Sub
Calculate Now (All the Open Workbooks)
If you simply want to re-calculate all the open workbooks, you can use the “Calculate” method just like below.
Calculate
Use Calculate Method for a Sheet
Using the following way, you can re-calculate all the calculations for all the
ActiveSheet.Calculate
Sheets("Sheet1").Calculate
The first line of code re-calculates for the active sheet and the second line does it for the “Sheet1” but you can change the sheet if you want.
Calculate for a Range or a Single Cell
In the same way, you can re-calculate all the calculations for a particular range or a single cell, just like the following.
Sheets("Sheet1").Range("A1:A10").Calculate
Sheets("Sheet1").Range("A1").Calculate
На чтение 4 мин. Просмотров 33.1k.
Итог: ознакомьтесь с 3 советами по написанию и созданию формул в макросах VBA с помощью этой статьи и видео.
Уровень мастерства: Средний
Автоматизировать написание формул
Написание формул может быть одной из самых трудоемких частей
вашей еженедельной или ежемесячной задачи Excel. Если вы работаете над
автоматизацией этого процесса с помощью макроса, вы можете попросить VBA
написать формулу и ввести ее в ячейки.
Поначалу написание формул в VBA может быть немного сложнее,
поэтому вот три совета, которые помогут сэкономить время и упростить процесс.
Совет № 1: Свойство Formula
Свойство Formula является членом объекта Range в VBA. Мы можем использовать его для установки / создания формулы для отдельной ячейки или диапазона ячеек.
Есть несколько требований к значению формулы, которые мы устанавливаем с помощью свойства Formula:
- Формула представляет собой строку текста, заключенную в кавычки. Значение формулы должно начинаться и заканчиваться кавычками.
- Строка формулы должна начинаться со знака равенства = после первой кавычки.
Вот простой пример формулы в макросе.
Sub Formula_Property() ' Формула представляет собой строку текста, заключенную в кавычки ' Начинается со знака = Range("B10").Formula = "=SUM(B4:B9)" End Sub
Свойство Formula также можно использовать для чтения существующей формулы в ячейке.
Совет № 2: Используйте Macro Recorder
Если ваши формулы более сложные или содержат специальные
символы, их будет сложнее написать в VBA. К счастью, мы можем использовать
рекордер макросов, чтобы создать код для нас.
Вот шаги по созданию кода свойства формулы с помощью средства записи макросов.
- Включите средство записи макросов (вкладка «Разработчик»> «Запись макроса»)
- Введите формулу или отредактируйте существующую формулу.
- Нажмите Enter, чтобы ввести формулу.
- Код создается в макросе.
Если ваша формула содержит кавычки или символы амперсанда, макрос записи будет учитывать это. Он создает все подстроки и правильно упаковывает все в кавычки. Вот пример.
Sub Macro10() ' Используйте средство записи макросов для создания кода для сложных формул с ' специальны символы и относительные ссылки ActiveCell.FormulaR1C1 = "=""Total Sales: "" & TEXT(R[-5]C,""$#,###"")" End Sub
Совет № 3: Нотация формулы стиля R1C1
Если вы используете средство записи макросов для формул, вы
заметите, что он создает код со свойством FormulaR1C1.
Нотация стиля R1C1 позволяет нам создавать как относительные (A1), абсолютные ($A$1), так и смешанные ($A1, A$1) ссылки в нашем макрокоде.
R1C1 обозначает строки и столбцы.
Относительные ссылки
Для относительных ссылок мы указываем количество строк и
столбцов, которые мы хотим сместить от ячейки, в которой находится формула.
Количество строк и столбцов указывается в квадратных скобках.
Следующее создаст ссылку на ячейку, которая на 3 строки выше
и на 2 строки справа от ячейки, содержащей формулу.
Отрицательные числа идут вверх по строкам и столбцам слева.
Положительные числа идут вниз по строкам и столбцам справа.
Абсолютные ссылки
Мы также можем использовать нотацию R1C1 для абсолютных ссылок. Обычно это выглядит как $A$2.
Для абсолютных ссылок мы НЕ используем квадратные скобки. Следующее создаст прямую ссылку на ячейку $A$2, строка 2, столбец 1
При создании смешанных ссылок относительный номер строки или
столбца будет зависеть от того, в какой ячейке находится формула.
Проще всего использовать макро-рекордер, чтобы понять это.
Свойство FormulaR1C1 и свойство формулы
Свойство FormulaR1C1 считывает нотацию R1C1 и создает
правильные ссылки в ячейках. Если вы используете обычное свойство Formula с
нотацией R1C1, то VBA попытается вставить эти буквы в формулу, что, вероятно,
приведет к ошибке формулы.
Поэтому используйте свойство Formula, если ваш код содержит
ссылки на ячейки ($ A $ 1), свойство FormulaR1C1, когда вам нужны относительные
ссылки, которые применяются к нескольким ячейкам или зависят от того, где
введена формула.
Если ваша электронная таблица изменяется в зависимости от
условий вне вашего контроля, таких как новые столбцы или строки данных,
импортируемые из источника данных, то относительные ссылки и нотация стиля
R1C1, вероятно, будут наилучшими.
Я надеюсь, что эти советы помогут. Пожалуйста, оставьте
комментарий ниже с вопросами или предложениями.
-6 / 2 / 0 Регистрация: 26.09.2014 Сообщений: 274 |
|
1 |
|
Excel 28.06.2019, 16:04. Показов 11167. Ответов 7
Здравствуйте. Есть файл там основная формула: 10+ЕСЛИ(F100=$ALR$100;0;(AMB2506*2)-10)
0 |
pashulka 4131 / 2235 / 940 Регистрация: 01.12.2010 Сообщений: 4,624 |
||||||||
28.06.2019, 21:15 |
2 |
|||||||
Вашу формулу можно переписать так : Код =ЕСЛИ(F100=$ALR$100;10;AMB2506*2) А вычислить (без ввода в ячейку), можно например так :
или так (без формулы)
Разумеется, при 100т. строк имеет смысл не обращаться к об’ектам Range/Cells, а работать с массивом.
0 |
Erolim -6 / 2 / 0 Регистрация: 26.09.2014 Сообщений: 274 |
||||
28.06.2019, 23:16 [ТС] |
3 |
|||
pashulka, а вы можете помочь мне запихнуть все эти 100тыс строк формул в массив? я это делать не умею к сожалению. а тут
выскакивает какое то окошко, но в ячейку ничего не проставляется Добавлено через 5 минут Добавлено через 1 час 20 минут
0 |
3827 / 2254 / 751 Регистрация: 02.11.2012 Сообщений: 5,930 |
|
29.06.2019, 08:10 |
4 |
выскакивает какое то окошко, но в ячейку ничего не проставляется естественно, в коде так и написано. читаем справку про MsgBox.
файл примера если надо я пришлю вам Цепляйте маленький пример (строк 10) сюда.
0 |
-6 / 2 / 0 Регистрация: 26.09.2014 Сообщений: 274 |
|
29.06.2019, 11:10 [ТС] |
5 |
Vlad999, чуть больше чем 10 строк. внутри файла макросы Test0 и Test1. Сначала нажать Test0, потом Test1 и далее нажимать только Test1. увидите результат, по такому принципу должен работать и массив, сначала вычисляя диапазон AMB100:BYM2499, а потом AMB2506:BYM4905. Ну в общем по последовательности макроса Test1, только формулы заменить массивом.
0 |
-6 / 2 / 0 Регистрация: 26.09.2014 Сообщений: 274 |
|
04.07.2019, 21:02 [ТС] |
6 |
Здравствуйте. не ужели никто помочь не может?
0 |
КостяФедореев Часто онлайн 790 / 529 / 237 Регистрация: 09.01.2017 Сообщений: 1,820 |
||||
05.07.2019, 01:33 |
7 |
|||
Erolim, конкретно для этой формулы и именно для столбца «АМВ100» так:
0 |
-6 / 2 / 0 Регистрация: 26.09.2014 Сообщений: 274 |
|
05.07.2019, 02:46 [ТС] |
8 |
мне не надо вставлять формулу в ячейку, мне нужно уже готовое вычисление вставлять. Добавлено через 1 час 9 минут
0 |
VBA Range Calculate — Explained with Examples
We calculate the particular range using VBA. Calculate method in Excel help us to calculate all opened workbooks, specific workbooks, specific worksheets, Ranges, columns or rows. This method will be useful when your Excel Calculation method is set to manual mode. or if you have many formulas in the workbook and want to refresh or recalculate a particular range you can use Range.Calculate method.
VBA Range Calculate – Syntax
You can use the calculate method of the range to calculate any range.
Range(“YourRange”).Calculate
VBA Range Calculate – Examples
Here is the simple example to calculate a specific Range. This example will calculate Range “A2:D10” using VBA.
Sub VBA_Calculate_Range() Range("A2:D10").Calculate End Sub
VBA Range Calculate – Instructions
Please follow the below step by step instructions to execute the above mentioned VBA macros or codes:
- Open an Excel Workbook from your start menu or type Excel in your run command
- Enter some formula at B2 as “=D2” and enter some value at D2. Now you can see the D2 value at B2.
- Set the caluclation mode to manual to test this macro
- Change the value at D2, now you can see that B2 value is not change even you have made changes at D2
- Press Alt+F11 to Open VBA Editor or you can goto Developer Table from Excel Ribbon and click on the Visual Basic Command to launch the VBA Editor
- Insert a Module from Insert Menu of VBA
- Copy the above code (for Calculating a Range using VBA) and Paste in the code window(VBA Editor)
- Save the file as Macro Enabled Workbook (i.e; .xlsm file format)
- Press ‘F5′ to run it or Keep Pressing ‘F8′ to debug the code line by line.
Now you can observe that the value at B2 is changed as per D2.
Calculate the Columns using VBA
Here is the simple example to calculate a specific Columns. This example will calculate the columns “A to D” using VBA.
Sub VBA_Calculate_Columns() Columns("A:D").Calculate 'Or Range("A:D").Calculate End Sub
Calculate the Rows using VBA
Here is the simple example to calculate a specific rows using VBA. This example will calculate the Rows”1 to 20″ using VBA.
Sub VBA_Calculate_Rows() Rows("1:20").Calculate End Sub
A Powerful & Multi-purpose Templates for project management. Now seamlessly manage your projects, tasks, meetings, presentations, teams, customers, stakeholders and time. This page describes all the amazing new features and options that come with our premium templates.
Save Up to 85% LIMITED TIME OFFER
All-in-One Pack
120+ Project Management Templates
Essential Pack
50+ Project Management Templates
Excel Pack
50+ Excel PM Templates
PowerPoint Pack
50+ Excel PM Templates
MS Word Pack
25+ Word PM Templates
Ultimate Project Management Template
Ultimate Resource Management Template
Project Portfolio Management Templates
- VBA Range Calculate – Syntax
- VBA Range Calculate – Examples
- VBA Range Calculate – Instructions
- Calculate the Columns using VBA
- Calculate the Rows using VBA
VBA Reference
Effortlessly
Manage Your Projects
120+ Project Management Templates
Seamlessly manage your projects with our powerful & multi-purpose templates for project management.
120+ PM Templates Includes:
Effectively Manage Your
Projects and Resources
ANALYSISTABS.COM provides free and premium project management tools, templates and dashboards for effectively managing the projects and analyzing the data.
We’re a crew of professionals expertise in Excel VBA, Business Analysis, Project Management. We’re Sharing our map to Project success with innovative tools, templates, tutorials and tips.
Project Management
Excel VBA
Download Free Excel 2007, 2010, 2013 Add-in for Creating Innovative Dashboards, Tools for Data Mining, Analysis, Visualization. Learn VBA for MS Excel, Word, PowerPoint, Access, Outlook to develop applications for retail, insurance, banking, finance, telecom, healthcare domains.
Page load link
3 Realtime VBA Projects
with Source Code!
Go to Top
In this Article
- Formulas in VBA
- Macro Recorder and Cell Formulas
- VBA FormulaR1C1 Property
- Absolute References
- Relative References
- Mixed References
- VBA Formula Property
- VBA Formula Tips
- Formula With Variable
- Formula Quotations
- Assign Cell Formula to String Variable
- Different Ways to Add Formulas to a Cell
- Refresh Formulas
This tutorial will teach you how to create cell formulas using VBA.
Formulas in VBA
Using VBA, you can write formulas directly to Ranges or Cells in Excel. It looks like this:
Sub Formula_Example()
'Assign a hard-coded formula to a single cell
Range("b3").Formula = "=b1+b2"
'Assign a flexible formula to a range of cells
Range("d1:d100").FormulaR1C1 = "=RC2+RC3"
End Sub
There are two Range properties you will need to know:
- .Formula – Creates an exact formula (hard-coded cell references). Good for adding a formula to a single cell.
- .FormulaR1C1 – Creates a flexible formula. Good for adding formulas to a range of cells where cell references should change.
For simple formulas, it’s fine to use the .Formula Property. However, for everything else, we recommend using the Macro Recorder…
Macro Recorder and Cell Formulas
The Macro Recorder is our go-to tool for writing cell formulas with VBA. You can simply:
- Start recording
- Type the formula (with relative / absolute references as needed) into the cell & press enter
- Stop recording
- Open VBA and review the formula, adapting as needed and copying+pasting the code where needed.
I find it’s much easier to enter a formula into a cell than to type the corresponding formula in VBA.
Notice a couple of things:
- The Macro Recorder will always use the .FormulaR1C1 property
- The Macro Recorder recognizes Absolute vs. Relative Cell References
VBA FormulaR1C1 Property
The FormulaR1C1 property uses R1C1-style cell referencing (as opposed to the standard A1-style you are accustomed to seeing in Excel).
Here are some examples:
Sub FormulaR1C1_Examples()
'Reference D5 (Absolute)
'=$D$5
Range("a1").FormulaR1C1 = "=R5C4"
'Reference D5 (Relative) from cell A1
'=D5
Range("a1").FormulaR1C1 = "=R[4]C[3]"
'Reference D5 (Absolute Row, Relative Column) from cell A1
'=D$5
Range("a1").FormulaR1C1 = "=R5C[3]"
'Reference D5 (Relative Row, Absolute Column) from cell A1
'=$D5
Range("a1").FormulaR1C1 = "=R[4]C4"
End Sub
Notice that the R1C1-style cell referencing allows you to set absolute or relative references.
Absolute References
In standard A1 notation an absolute reference looks like this: “=$C$2”. In R1C1 notation it looks like this: “=R2C3”.
To create an Absolute cell reference using R1C1-style type:
- R + Row number
- C + Column number
Example: R2C3 would represent cell $C$2 (C is the 3rd column).
'Reference D5 (Absolute)
'=$D$5
Range("a1").FormulaR1C1 = "=R5C4"
Relative References
Relative cell references are cell references that “move” when the formula is moved.
In standard A1 notation they look like this: “=C2”. In R1C1 notation, you use brackets [] to offset the cell reference from the current cell.
Example: Entering formula “=R[1]C[1]” in cell B3 would reference cell D4 (the cell 1 row below and 1 column to the right of the formula cell).
Use negative numbers to reference cells above or to the left of the current cell.
'Reference D5 (Relative) from cell A1
'=D5
Range("a1").FormulaR1C1 = "=R[4]C[3]"
Mixed References
Cell references can be partially relative and partially absolute. Example:
'Reference D5 (Relative Row, Absolute Column) from cell A1
'=$D5
Range("a1").FormulaR1C1 = "=R[4]C4"
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
VBA Formula Property
When setting formulas with the .Formula Property you will always use A1-style notation. You enter the formula just like you would in an Excel cell, except surrounded by quotations:
'Assign a hard-coded formula to a single cell
Range("b3").Formula = "=b1+b2"
VBA Formula Tips
Formula With Variable
When working with Formulas in VBA, it’s very common to want to use variables within the cell formulas. To use variables, you use & to combine the variables with the rest of the formula string. Example:
Sub Formula_Variable()
Dim colNum As Long
colNum = 4
Range("a1").FormulaR1C1 = "=R1C" & colNum & "+R2C" & colNum
End Sub
VBA Programming | Code Generator does work for you!
Formula Quotations
If you need to add a quotation (“) within a formula, enter the quotation twice (“”):
Sub Macro2()
Range("B3").FormulaR1C1 = "=TEXT(RC[-1],""mm/dd/yyyy"")"
End Sub
A single quotation (“) signifies to VBA the end of a string of text. Whereas a double quotation (“”) is treated like a quotation within the string of text.
Similarly, use 3 quotation marks (“””) to surround a string with a quotation mark (“)
MsgBox """Use 3 to surround a string with quotes"""
' This will print <"Use 3 to surround a string with quotes"> immediate window
Assign Cell Formula to String Variable
We can read the formula in a given cell or range and assign it to a string variable:
'Assign Cell Formula to Variable
Dim strFormula as String
strFormula = Range("B1").Formula
Different Ways to Add Formulas to a Cell
Here are a few more examples for how to assign a formula to a cell:
- Directly Assign Formula
- Define a String Variable Containing the Formula
- Use Variables to Create Formula
Sub MoreFormulaExamples ()
' Alternate ways to add SUM formula
' to cell B1
'
Dim strFormula as String
Dim cell as Range
dim fromRow as long, toRow as long
Set cell = Range("B1")
' Directly assigning a String
cell.Formula = "=SUM(A1:A10)"
' Storing string to a variable
' and assigning to "Formula" property
strFormula = "=SUM(A1:A10)"
cell.Formula = strFormula
' Using variables to build a string
' and assigning it to "Formula" property
fromRow = 1
toRow = 10
strFormula = "=SUM(A" & fromValue & ":A" & toValue & ")
cell.Formula = strFormula
End Sub
Refresh Formulas
As a reminder, to refresh formulas, you can use the Calculate command:
Calculate
To refresh single formula, range, or entire worksheet use .Calculate instead:
Sheets("Sheet1").Range("a1:a10").Calculate
It is possible to use Excel’s ready-to-use formulas through VBA programming. These are properties that can be used with Range or Cells.
VBA Formula
Formula adds predefined Excel formulas to the worksheet. These formulas should be written in English even if you have a language pack installed.
Range("F2").Formula = "=SUM(B2:C7)"
Range("F3").Formula = "=SUM($B$2:$C$7)"
Do not worry if the language of your Excel is not English because, as in the example, it will do the translation to the spreadsheet automatically.
Multiple formulas
You can insert multiple formulas at the same time using the Formula property. To do this, simply define a Range object that is larger than a single cell, and the predefined formula will be «dragged» across the range.
«Dragging» manually:
«Dragging» by VBA:
Range("D2:D7").Formula = "=SUM(B2:C2)"
Another way to perform the same action would be using FillDown method.
Range("D2").Formula = "=SUM(B2:C2)"
Range("D2:D7").FillDown
VBA FormulaLocal
FormulaLocal adds predefined Excel formulas to the worksheet. These formulas, however, should be written in the local language of Excel (in the case of Brazil, in Portuguese).
Range("F2").FormulaLocal = "=SOMA(B2:C7)"
Just as the Formula property, FormulaLocal can be used to make multiple formulas.
VBA FormulaR1C1
FormulaR1C1, as well as Formula and FormulaLocal, also adds pre-defined Excel formulas to the spreadsheet; however, the use of relative and absolute notations have different rules. The formula used must be written in English.
FormulaR1C1 is the way to use Excel’s ready-to-use formulas in VBA by easily integrating them into loops and counting variables.
In the notations:
- R refers to rows, in the case of vertical displacement
- C refers to columns, in the case of horizontal displacement
- N symbolizes an integer that indicates how much must be shifted in number of rows and/or columns
- Relative notation: Use as reference the Range that called it
The format of the relative formula is: R[N]C[N]:R[N]C[N].
Range("F2").FormulaR1C1 = "=SUM(R[0]C[-4]:R[5]C[-3])" 'Equals the bottom row
Range("F2").FormulaR1C1 = "=SUM(RC[-4]:R[5]C[-3])"
When N is omitted, the value 0 is assumed.
In the example, RC[-4]:R[5]C[-3] results in «B2: C7». These cells are obtained by: receding 4 columns to the left RC[-4] from Range(«F2») to obtain «B2»; and 5 lines down and 3 columns to the left R[5]C[-3] from Range(«F2») to obtain «C7».
- Absolute notation: Use the start of the spreadsheet as a reference
The format of the relative formula is: RNCN:RNCN.
Range("F2").FormulaR1C1 = "=SUM(R2C2:R7C3)" 'Results in "$B$2:$C$7"
N negative can only be used in relative notation.
The two notations (relative and absolute) can be merged.
Range("F2").FormulaR1C1 = "=SUM(RC[-4]:R7C3)" 'Results in "B2:$C$7"
VBA WorksheetFunction
Excel formulas can also be accessed by object WorksheetFunction methods.
Range("F2") = WorksheetFunction.Sum(Range("B2:C7"))
Excel formulas can also be accessed similarly to functions created in VBA.
The formulas present in the WorksheetFunction object are all in English.
One of the great advantages of accessing Excel formulas this way is to be able to use them more easily in the VBA environment.
MsgBox (WorksheetFunction.Sum(3, 4, 5))
Expense=4
MsgBox (WorksheetFunction.Sum(3, 4, 5,-Expense))
To list the available Excel formulas in this format, simply type WorksheetFunction. that automatically an option menu with all formulas will appear:
Consolidating Your Learning
Suggested Exercise
SuperExcelVBA.com is learning website. Examples might be simplified to improve reading and basic understanding. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. All Rights Reserved.
Excel ® is a registered trademark of the Microsoft Corporation.
© 2023 SuperExcelVBA | ABOUT
Здравствуйте уважаемые знатоки. Прикрепленные файлы
Изменено: Евгений Смирнов — 02.04.2021 10:54:57 |
|
Nordheim Пользователь Сообщений: 3154 |
Что понимается под именем ячейки? «Все гениальное просто, а все простое гениально!!!» |
Без имен книги и без ячейки Изменено: Евгений Смирнов — 02.04.2021 10:51:26 |
|
Nordheim Пользователь Сообщений: 3154 |
Если честно, не совсем понимаю, как это вы себе представляете, взять данные из ничего? «Все гениальное просто, а все простое гениально!!!» |
Почему из ничего в Имя мы записываем формулу и получаем результат. меня интересует можно ли как либо записать без использования имени формулу чтобы получить результат ее вычислений |
|
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
Nordheim, ага Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
Nordheim Пользователь Сообщений: 3154 |
#7 02.04.2021 11:23:28
В какое имя и какую формулу? Формула возвращает имя Книги(листа, ячейки), сама формула расчитывается на листе или в коде? Изменено: Nordheim — 02.04.2021 11:27:24 «Все гениальное просто, а все простое гениально!!!» |
||
Евгений Смирнов Пользователь Сообщений: 539 |
#8 02.04.2021 11:28:10
Вот как написать чтобы она расчиталась в коде VBA Изменено: Евгений Смирнов — 02.04.2021 11:34:44 |
||
sokol92 Пользователь Сообщений: 4445 |
#9 02.04.2021 11:49:16 Метод Application.Evaluate «понимает» формулы. На данном сайте есть много замечательных сообщений от Казанского на эту тему. В Вашем примере:
Изменено: sokol92 — 02.04.2021 13:30:08 Владимир |
||
Просмотрел сообщения от Казанского на тему.Метод Application.Evaluate но так и не могу запихнуть формулу в метод Evaluate. |
|
sokol92 Пользователь Сообщений: 4445 |
|
Mershik Пользователь Сообщений: 8277 |
#12 02.04.2021 14:46:57
наверное из-за этого Не бойтесь совершенства. Вам его не достичь. |
||
sokol92 Пользователь Сообщений: 4445 |
Mershik, у Вас формула из #9 для примера из #1 не работает? |
Ігор Гончаренко Пользователь Сообщений: 13746 |
#14 02.04.2021 14:53:31
как только сможете обьяснить что вам нужно, скорее всего найдутся люди, которые расскажут как это сделать Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
Mershik Пользователь Сообщений: 8277 |
#15 02.04.2021 15:46:24 sokol92, работает все — я имел ввиду автор же хочет не использовать
Не бойтесь совершенства. Вам его не достичь. |
||
Андрей_26 Пользователь Сообщений: 647 |
#16 02.04.2021 16:03:32
Можно! P.S. какой вопрос — такой ответ ) |
||
doober Пользователь Сообщений: 2204 |
#17 02.04.2021 16:07:14 Вангую.
<#0> |
||
sokol92 Пользователь Сообщений: 4445 |
#18 02.04.2021 16:19:48
Я понял следующим образом пример из #1: вычислить формулу, текст которой указан в ячейке C1, не корректируя имена книги (листа) и не меняя значения ячеек. Могу ошибаться в интерпретации, хотелось бы услышать мнение автора. Изменено: sokol92 — 02.04.2021 16:21:40 Владимир |
||
армянская народная мудрость гласит: Изменено: Ігор Гончаренко — 02.04.2021 17:07:49 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
Евгений Смирнов Пользователь Сообщений: 539 |
#20 02.04.2021 17:23:37
вычислить формулу, текст которой указан в ячейке C1, не используя имена(Names) книги и ячейки листа.
как записать чтобы в переменной Х записался результат вычисления формулы
Вероятно в качестве оператора нужен Evaluate |
||||||
sokol92 Пользователь Сообщений: 4445 |
#21 02.04.2021 17:49:39
А я вижу этот код. Обновите страницу. Владимир |
||
Что то с браузером в другом скопировал код из сообщения 9 вроде получилось sokol92 Я вроде бы так пробовал но у меня почему то не получалось. Надо еще попробовать на других формулах самому Изменено: Евгений Смирнов — 02.04.2021 18:14:30 |
|
sokol92 Пользователь Сообщений: 4445 |
Нужно иметь в виду, что при обращении к методу Evaluate адреса ячеек должны быть указаны с учетом текущего стиля ссылок (A1 или RC). В документации ошибка — упоминается исключительно стиль A1. |
Евгений Смирнов Пользователь Сообщений: 539 |
#24 02.04.2021 19:05:19 sokol92
Спасибо за разъяснение я пробовал ещё вчера так и у меня вылезала ошибка, поэтому подумал что неправильно что-то написал
а сейчас все посмотрел и хотел еще спросить почему лезет ошибка, а вы уже все объяснили. Оказывается стиль ссылок надо смотреть Спасибо огромное Изменено: Евгений Смирнов — 02.04.2021 19:11:10 |
||
sokol92 Пользователь Сообщений: 4445 |
#25 02.04.2021 20:13:06 Для того, чтобы не зависеть от текущего стиля ссылок и не запутаться в сложных формулах, Казанский разработал подход, который ниже проиллюстрирован на Вашем примере. Макрос будет работать при любом стиле ссылок (Application.Range всегда использует стиль A1).
При необходимости можно использовать и другие параметры свойства Range.Address Владимир |
||
Евгений Смирнов Пользователь Сообщений: 539 |
#26 03.04.2021 04:48:48 sokol92
Спасибо за пример.На досуге поразбираюсь. |