Vba excel вставить как число

Преобразование текста в число с помощью кода VBA Excel. Массовое преобразование чисел из текстового формата в числовой в заданном диапазоне.

Преобразование текста в число

Преобразование чисел, записанных как текст, в числовой формат осуществляется в VBA Excel с помощью функций преобразования типов данных. Числа в текстовом формате могут быть получены из:

  • ячеек рабочего листа с текстовым форматом;
  • элементов управления формы (TextBox, ListBox, ComboBox);
  • строковых переменных;
  • выражений, возвращающих число в виде текста;
  • текстового поля функции InputBox.

В большинстве случаев VBA Excel сам распознает текст как число без всяких преобразований:

Sub Primer1()

    Debug.Print 23.1254 * 5.2  ‘Результат: 120,25208

    Debug.Print «23,1254» * «5,2» ‘Результат: 120,25208

    Debug.Print TypeName(«23,1254») ‘Результат: String

    Debug.Print TypeName(CDbl(«23,1254»)) ‘Результат: Double

End Sub

Обратите внимание на разделитель дробной части.

Преобразование смешанной строки

Преобразование в число строки, в начале которой имеются цифры, а далее идут другие символы, осуществляется в VBA Excel с помощью функции Val. Из других символов распознается только точка (.) в качестве разделителя дробной части.

Sub Primer2()

    Debug.Print Val(«021.36abcde»)  ‘Результат: 21,36

    Debug.Print Format(Val(«021.36abcde»), «000.0»)  ‘Результат: 021,4

End Sub

Массовое преобразование чисел

Иногда требуется массовое преобразование чисел из текстового формата в числовой в заданном диапазоне рабочего листа.

Пример преобразования диапазона ячеек с текстовым форматом в общий формат и значений ячеек из строки в число на примере объекта Selection:

Sub Primer3()

Dim MyCell As Range

    Selection.NumberFormat = «General»

        For Each MyCell In Selection

            If IsNumeric(MyCell) Then MyCell = MyCell * 1

        Next

End Sub

Сначала выбранному диапазону присваивается общий формат ("General"). Но текстовые значения в ячейках еще не преобразовались в числа. Обходим циклом все ячейки диапазона, и, если текстовое значение ячейки можно интерпретировать как число, умножаем это значение на единицу. После этого текст будет преобразован в число.


Numeric values are defined by data types like integer or byte. These data types are used for optimizing the processing and memory allocation in Excel. In this guide, we’re going to show you how to convert string into number in Excel VBA.

Download Workbook

Data types in VBA

Like in some other programming languages, VBA uses data types to identify what variables it can store and how they are stored. Most of the data types in VBA define numeric values. Here is a brief list of numeric data types:

Data type Storage Range
Byte 1 byte 0 to 255
Integer 2 bytes -32,768 to 32,767
Long 4 bytes -2,147,483,648 to 2,147,483,647
Single 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double 8 bytes -1.79769313486231E308 to-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
LongLong 8 bytes

-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Valid on 64-bit platforms only.

Currency 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 with no decimal point;
+/-7.9228162514264337593543950335 with 28 places to the right of the decimal

Since there are many numeric data types, there are many functions to convert a string into number in Excel VBA.

Functions to a convert string into number in Excel VBA

All conversion functions use the same syntax: Each requires a single string argument to convert into a number. For example:

Each function returns an error If the string argument either is not a numeric or is outside the range of the data type being converted.

CInt(«A») returns a type mismatch error, because the «A» is not a numeric value.

CByte(«1250») returns an overflow exception.

Function Return type Example
CByte Byte CByte(«65.75») returns 66
CCur Currency CCur(«$256,000.50») returns 256000.5
CDbl Double CDbl(128.239856 * 4.8 * 0.04) returns 24.622052352
CDec Decimal CDec(«15000000.5678») returns 15000000.5678
CInt Integer CInt(«1234.56») returns 1235
CLng Long CLng(«1,500,000.88») returns 15000001
CLngLng LongLong CLngLng(«1,250,500,000.88») returns 1250500001
CSng Single CSng(«5.67854») returns 5.67854

Bonus: Use IsNumeric function to verify value

To avoid type mismatch errors, you can use the IsNumeric function to check if the expression is numeric or not. The function returns Boolean value based on the expression. TRUE if the expression is numeric, FALSE otherwise.

Here is a sample function that can check the data first, and convert the it into an integer if it is numeric. If the argument is not a valid number, the function returns 0.

Function ConvertInt(arg As String) As Integer
 If IsNumeric(arg) Then ConvertInt = CInt(arg)
End Function
 

NURLAN

Пользователь

Сообщений: 4
Регистрация: 01.01.1970

Здравствуйте уважаемые коллеги.  Помогите, пожалуйста, решить следующий вопрос:  
В таблице имеются числовые значения, представленные в текстовом виде. Эти данные необходимо   преобразовать в числовой формат.  

     Cells(1, 1).Select  
Selection.NumberFormat = «0.00»  

  Указанный код макроса меняет формат ячеек, но при дальнейшем использовании этих данных в свободной таблицы, расчет значений не производиться так как сами значения не преобразованы в числовой формат.    
Например: после выполнения выше указанного макроса, пока не нажмешь на преобразованную ячейку двойным кликом, данные не преобразовываются.

 

GIG_ant

Пользователь

Сообщений: 3102
Регистрация: 24.12.2012

Если хотите именно макросом, сделайте так:  

  With Cells(1, 1)  
.NumberFormat = «0.00»  
.value=.value*1  
End With

 

vigor

Пользователь

Сообщений: 172
Регистрация: 23.12.2012

Если без макроса, то вставляем 1 в ячейку, копируем, а потом спецвставкой, з параметром умножить и вся любовь.Очень полезная штука

 

NURLAN

Пользователь

Сообщений: 4
Регистрация: 01.01.1970

{quote}{login=GIG_ant}{date=01.07.2011 04:59}{thema=}{post}  

  With Cells(1, 1)  
.NumberFormat = «0.00»  
.value=.value*1  
End With  

    Помогло! Как теперь сделать если не одну ячейку, а почти весь столбец.  
например:  

  Range(Cells(2, col), Cells(lLastRow, col)).Select  
‘col — определенный столбец  
‘lLastRow- последняя заполненная ячейка  

  {/post}{/quote}

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

Если без цикла, то спец.вставкой:  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = «0.00»  
.Value = .Value  
End With

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Доброго дня всем!  
Извините, за непрошеное ввмешательство, но мне єто тоже интересно.  
Если, например,  на базе вашего кода я пишу пользовательськую функцию  

  Function Число()  
Dim objCell As Object  
For Each objCell In objRange  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = «0.00»  
.Value = .Value  
End With  
 End If  
Next  
End Function  

  Выдает ошибку значение.  
Что я не так сделал?  
С ув. Муля!

 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

For Each objCell In objRange  
objRange — что это такое?

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Это вообще не функция. Обзовите ее sub. Функция должна возвращать значение.

Я сам — дурнее всякого примера! …

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Ну обозвал  
Sub Число()  
Dim objCell As Object  
For Each objCell In objRange  
With Range(Cells(2, col), Cells(iLastRow, col))  
.Copy  
.PasteSpecial Paste:=xlPasteValues  
.NumberFormat = «0.00»  
.Value = .Value  
End With  
 End If  
Next  
End Sub  

  Все равно не работает.  
Ругается на строке End If  

  С ув. Муля!

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

{quote}{login=RAN}{date=02.07.2011 12:59}{thema=}{post}For Each objCell In objRange  
objRange — что это такое?{/post}{/quote}  
Я так понимаю что єто обект  
С ув. Муля!, который мне надо преобразовать в число

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

>> Все равно не работает.  
Правильно не работает. У Вас там куча необъявленых переменных к-рым не присвоено никаких значений, End If без If и вообще все это бессмыслица. Попробуйте так:  
Sub Число()  
   Dim c As Range, iLastRow&, col&  
   col = 2: iLastRow = 100  
   For Each c In Range(Cells(2, col), Cells(iLastRow, col))  
       c.Copy  
       c.PasteSpecial Paste:=xlPasteValues  
       c.NumberFormat = «0.00»  
       c.Value = c.Value  
   Next  
End Sub

Я сам — дурнее всякого примера! …

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Ув. KukLP!  
К сожалению не работает и ваш макрос.  
А вообще, то меня интересует пользоваиельськая функция на эту тему.

 

ran

Пользователь

Сообщений: 7091
Регистрация: 21.12.2012

A каким образом не работает макрос KukLP?  
Т.е. что, по вашему он должен делать, и как вы его запускаете?  
И что значит пользовательская функция на эту тему?

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

Прочитал сообщение Мули, посмотрел на код Сергея — с кодом всё в порядке. Не поленился проверить — <STRONG>работает</STRONG>. Муля, Вы в следующий раз пишите лучше так: «У МЕНЯ не работает» с указанием ЧТО именно не сработало: не запустился макрос, вместо чисел написал в ячейки нецензурное слово, выдал ошибку и выключил компьютер… <BR>Скорее всего Вы его просто не запустили.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

{quote}{login=Юрий М}{date=02.07.2011 04:09}{thema=}{post}Скорее всего Вы его просто не запустили.{/post}{/quote}:-)  
Муля, выложите кусок таблицы, где не работает(правила). Может все проще. Тот перебор, что у Вас — самый неэффективный метод. Глядишь и функцию поможем сделать. А так как Вы, надергать строк из разных макросов, не понимая что они значат…  
Пользуйтесь, пока выходные, планетянам скучно:-)

Я сам — дурнее всякого примера! …

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Хлопцы! Простите меня дурака, п-та!!!  
Я то своейдурной головой, думал что он должен,например, слово «один», превращать в цифру «1». А он оказывается текстовый форматЮ меняет на числовой.

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

Мда… Про сумму прописью знаем, а сумму из прописи…:-)

Я сам — дурнее всякого примера! …

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#18

02.07.2011 18:40:03

{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда… Про сумму прописью знаем, а сумму из прописи…:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться «туда», значит есть и оттуда.

Спасибо

 

nerv

Пользователь

Сообщений: 3071
Регистрация: 22.12.2012

{quote}{login=Муля}{date=02.07.2011 01:24}{thema=}{post}Ну обозвал  
Sub Число()  
Dim objCell As Object  
For Each objCell In objRange{/post}{/quote}стиль объявления переменных прям как мой ^_^    
Как в школе учили)

 

KuklP

Пользователь

Сообщений: 14868
Регистрация: 21.12.2012

E-mail и реквизиты в профиле.

{quote}{login=R Dmitry}{date=02.07.2011 06:40}{thema=Re: }{post}{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда… Про сумму прописью знаем, а сумму из прописи…:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться «туда», значит есть и оттуда.{/post}{/quote}Да я не о том. Не проще ли набрать число, чем текст с последующим преобразованием его в число. Как-то в жизни не встречалось.

Я сам — дурнее всякого примера! …

 

R Dmitry

Пользователь

Сообщений: 3103
Регистрация: 22.12.2012

Excel,MSSQL,Oracle,Qlik

#21

02.07.2011 21:24:57

{quote}{login=KukLP}{date=02.07.2011 09:03}{thema=Re: Re: }{post}{quote}{login=R Dmitry}{date=02.07.2011 06:40}{thema=Re: }{post}{quote}{login=KukLP}{date=02.07.2011 05:06}{thema=}{post}Мда… Про сумму прописью знаем, а сумму из прописи…:-){/post}{/quote}  
Сергей привет, если задаться целью  сделать такой код, то его сделать можно.  
если есть логика , как говориться «туда», значит есть и оттуда.{/post}{/quote}Да я не о том. Не проще ли набрать число, чем текст с последующим преобразованием его в число. Как-то в жизни не встречалось.{/post}{/quote}  

  Ну не знаю как у Муля, но в жизни все может  быть, иногда в различных «экспортах» из различных программ встречается и не такое :)  

  хотя такого честно не встречал ни разу :)

Спасибо

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Самый простой пример, где это пригодится.  
У ведомости начисления зарплаты месяц словом, а вот у сводной — желательно цифрами.  
У всевозможных отчетах. В одном месте месяц словом, а в другоя цифрами. Анализ деятельности и так далее.  
Но если такая трансформация очень сложная, то не надо надрываться. Придумаю че нитьдр.  

  С ув. Муля!

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

я вижу это как-то так…  

  внимание — заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

Муля

Пользователь

Сообщений: 307
Регистрация: 05.07.2010

Здраствуйте ПЛАНЕТЯНЕ!  
Ув. ikki! Великолепная штука. А если бы с милионами и назваными вами проверками, было бы гениальною  
Большое спасибо!!!  
гениально

 

Юрий М

Модератор

Сообщений: 60575
Регистрация: 14.09.2012

Контакты см. в профиле

{quote}{login=Муля}{date=02.07.2011 10:50}{thema=}{post}Самый простой пример, где это пригодится. У ведомости начисления зарплаты месяц словом, а вот у сводной — желательно цифрами. <…> В одном месте месяц словом, а в другоя цифрами.{/post}{/quote}  
Просто нужно нормально вводить данные: месяц в виде ДАТЫ, а отображать его в нужном виде уже форматированием. Тогда не потребуются вот такие выкрутасы. Лечите причину, а не следствие.

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

{quote}{login=ikki}{date=03.07.2011 12:02}{thema=было скучно :)}{post}я вижу это как-то так…  

  внимание — заготовка, чисто для примеру. ограничено целыми числами от 1 до 999999 и нет проверок на ошибки.{/post}{/quote}  
Добавил миллионы и миллиарды на базе файла Александра (ikki), проверку на ошибки не делал

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

{quote}{login=Муля}{date=03.07.2011 12:18}{thema=}{post}Здраствуйте ПЛАНЕТЯНЕ!  
Ув. ikki! Великолепная штука. А если бы с милионами и назваными вами проверками, было бы гениальною  
Большое спасибо!!!  
гениально{/post}{/quote}  

  ну вот Вам и домашнее задание — доработать макрос :)  

  если более серьёзно — то всё-таки не вижу я в такой задаче практического смысла.  
а для «от нечего делать» — предполагаемая реализация довольно муторная (например, надо корректно обрабатывать варианты, когда есть миллины, но нет тысяч; кроме того, надо отслеживать «уровни» чисел-строк — т.е. чтобы макрос понимал, что «пятьсот пять» — это правильно, а «пять пятьсот» — неправильно…)  

  короче — ну её нафиг, такую задачку.  
сорри.

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

ikki

Пользователь

Сообщений: 9709
Регистрация: 22.12.2012

{quote}{login=MCH}{date=03.07.2011 12:53}{thema=Re: было скучно :)}{post}  
Добавил миллионы и миллиарды на базе файла Александра (ikki), проверку на ошибки не делал{/post}{/quote}  

  вот как…    
отличный вариант  
честно говоря, про рекурсию я забыл начисто :(

фрилансер Excel, VBA — контакты в профиле
«Совершенствоваться не обязательно. Выживание — дело добровольное.» Э.Деминг

 

MCH

Пользователь

Сообщений: 3875
Регистрация: 22.12.2012

Чуток сократил код: UDF — пропись2число2()

 

Guest

Гость

#30

03.07.2011 14:03:32

{quote}{login=MCH}{date=03.07.2011 01:16}{thema=}{post}Чуток сократил код: UDF — пропись2число2(){/post}{/quote}  
Можно (нужно) еще добавить Option Compare Text

Иногда при написании макросов необходимо производить вычисления или сравнения числовых значений, которые вносятся в поля «TextBox».  Существует небольшая проблемка при работе с этими данными – информация из поля «TextBox» воспринимается программой как текстовая и, соответственно, в расчетах не может использоваться.

Для решения денной проблемы в VBA можно использовать функцию  VAL(), которая переводит в численный формат данных. VAL  — это функция конвертирующая текстовые значения аргумента в целые числовые или числовые значения с плавающей запятой. Следует отметить что функция Val при преобразовании десятичных дробей в число может распознать только точку, то есть, если вы напишете десятичную дробь через запятую, то функция распознает только первую (целую)часть дроби, остальной текст после запятой функция не воспримет. Например: VAL(«10,8»)= 10

Рассмотрим пример кода с данной функцией (VAL) и без нее:

Существует форма для внесения данных, в которой в два поля «TextBox1» и «TextBox1»  вносятся числа, которые сравниваются нажатием кнопки «Сравнить»(CommandButton1) и суммируются нажатием кнопки «Сумма» (CommandButton2).форма для заполнения exccel VBA

    Если на нажатие кнопки сравнения «Сравнить»(CommandButton1) использовать код:

    1. Private Sub CommandButton1_Click()
    2. Dim i, b As String
    3. i = TextBox1.Value
    4. b = TextBox2.Value
    5. If i < b = True Then MsgBox («Второе число больше «)
    6. If i > b = True Then MsgBox («Первое число больше «)
    7. End Sub

    А на нажатие кнопки суммы «Сумма» (CommandButton2) применить код:

    1. Private Sub CommandButton2_Click()
    2. Dim i, b, d As String
    3. i = UserForm1.TextBox1.Value
    4. b = UserForm1.TextBox2.Value
    5. d = i + b
    6. TextBox3.Value = d End Sub

    Сравнение значений будет выполняться верно, но расчеты суммы будут неверными:сравнение чисел макрос VBAСумма чисел макрос VBA

    Применим функцию VAL () в этих кодах:

      1-й код (Сравнение двух чисел)

      1. Private Sub CommandButton1_Click()
      2. Dim i, b As String
      3. i = Val(UserForm1.TextBox1.Value)
      4. b = Val(UserForm1.TextBox2.Value)
      5. If i < b = True Then MsgBox («Второе число больше «)
      6. If i > b = True Then MsgBox («Первое число больше «)
      7. End Sub

      2-й код (Сумма двух чисел)

      1. Private Sub CommandButton2_Click()
      2. Dim i, b, d As String
      3. i = Val(UserForm1.TextBox1.Value)
      4. b = Val(UserForm1.TextBox2.Value)
      5. d = i + b
      6. TextBox3.Value = d End Sub

      С таким кодом кнопки формы UserForm1 работают корректно, как показано на скриншоте далее.Верная сумма в VBA

      Скачать файл с макросом суммы и сравнения двух чисел.

      Skip to content

      На чтение 3 мин. Просмотров 3.6k.

      Что делает макрос: При импорте данных из других источников, в ячейках могут оказаться значения числа, отформатированные как текст. Решение этой проблемы не в ваших силах, потому что независимо от того, что вы делаете, вы не можете отформатировать число в этих ячейках в числовые, валютные или процентные форматы. Вы также можете увидеть смарт-тег на клетки, что говорит вам ячейка отформатирована как текст.

      Это достаточно легко исправить вручную, нажав на кнопку Текст по столбцам на вкладке Данные. Нет необходимости проходить через все шаги в этом мастере; просто нажмите на кнопку Готово, чтобы применить исправление.

      Опять же, это довольно простое действие. Проблема, однако, заключается в том, что Excel не позволяет выполнять преобразования текста в столбцы фиксируя на несколько колонок. Вы должны применить это исправив одну колонку за один раз. Этот макрос может помочь вам.

      Содержание

      1. Как макрос работает
      2. Код макроса
      3. Как этот код работает
      4. Как использовать

      Как макрос работает

      В этом макросе, мы используем две переменные объекта Range, чтобы пройти через наш целевой диапазон. Оператор For Each активирует каждую ячейку в целевом диапазоне.
      Каждый раз, когда активируется ячейка, мы просто сбрасываем значение ячейки. Это фактически то же самое, что и преобразования команды «Текст по столбцам».

      Код макроса

      Sub PreobrazovatTekstVChislo()
      'Шаг 1: Объявляем переменные
      Dim MyRange As Range
      Dim MyCell As Range
      'Шаг 2: Сохраните книгу прежде, чем изменить ячейки?
      Select Case MsgBox("Перед изменением ячеек. " & _
      "Сохранить книгу?", vbYesNoCancel)
      Case Is = vbYes
      ThisWorkbook.Save
      Case Is = vbCancel
      Exit Sub
      End Select
      'Шаг 3:Определяем целевой диапазон
      Set MyRange = Selection
      'Шаг 4: запускаем цикл по диапазону
      For Each MyCell In MyRange
      'Шаг 5: Возврат в исходное значение ячейки
      If Not IsEmpty(MyCell) Then
      MyCell.Value = MyCell.Value
      End If
      'Шаг 6: Получаем следующую ячейку в диапазоне
      Next MyCell
      End Sub
      

      Как этот код работает

      1. Шаг 1 объявляет две переменные объекта Range.
      2. При выполнении макроса, он уничтожает стек отката.
      3. Шаг 3 заполняет переменную MyRange с целевым диапазоном.
      4. Шаг 4 начинает цикл через каждую ячейку в целевом диапазоне, активизируя каждую ячейку, через которую мы проходим.
      5. После того, как ячейка активируется, макрос использует функцию IsEmpty, чтобы убедиться, что ячейка не пуста. Мы делаем это, чтобы немного сэкономить на производительности,
        пропуская пустые ячейки. Затем мы просто преобразуем ячейки к ее собственному значению. Это устраняет любое несоответствие форматирования.
      6. Шаг 6 повторяет цикл, чтобы получить следующую ячейку. После просмотра всех ячеек в целевом диапазоне макрос заканчивается.

      Как использовать

      Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:

      1. Активируйте редактор Visual Basic, нажав ALT + F11 на клавиатуре.
      2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
      3. Выберите Insert➜Module.
      4. Введите или вставьте код.

      Понравилась статья? Поделить с друзьями:
    • Vba excel вставить кавычки в формулу
    • Vba excel вставить изображение
    • Vba excel вставить диапазон ячеек
    • Vba excel вставить дату в ячейку
    • Vba excel вставить график