как включить ускоренную многопоточную x64 работу vba кода?, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
20.02.2025 11:28:18
после установки x64 офиса - формулы полностью нагружают все 100% потоки процессора и справа снизу в строке состояния пишет количество нагруженных процессоров но сам vba код работает только в однопоточном режиме, загружая процессор на 5-15%
есть ли какие-то опции по включению всех потоков в vba? бывают ли вообще многопоточные компиляторы в программировании?
Изменено: - 20.02.2025 11:37:01
объединить текст (из разных ячеек в одну) с сохранением цвета (форматирования) текста, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
19.02.2025 07:48:27
как объединить несколько ячеек в одну с сохранением всех цветов? кто-то прорабатывал такую процедуру?
тут есть два момента: 1. обрабатывать нужно посимвольно, т.к. в исходных ячейках может быть несколько цветов текста внутри каждой ячейки, т.е. цвет текста нельзя считывать со всей ячейки 2. этот код имеет максимальную длину 255:
т.е. посимвольно удлинять результирующую строку и тут же менять цвет в этом же цикле сработает только до длины 255
одно решение есть , но страдает от ошибки переполнения 255 и не учитывает разный цвет внутри исходных ячеек
Код
Sub Tester()
With ActiveSheet
AddValue .Range("A1"), "Hello", vbRed
AddValue .Range("A1"), "Hello", vbGreen
AddValue .Range("A1"), "Hello", vbBlue
End With
End Sub
Sub AddValue(rngVal As Range, val, theColor As Long)
Const SEP As String = " "
Dim firstChar As Long, extra As Long
firstChar = 1 + Len(rngVal.Value)
extra = IIf(firstChar = 1, 0, 1)
With rngVal
.Characters(firstChar).Text = IIf(Len(rngVal.Value) > 0, SEP, "") & val
.Characters(firstChar + extra, Len(val)).Font.Color = theColor
End With
End Sub
ещё одно из решений есть , но страдает от ошибки переполнения 255 Сцепляет с сохранением форматирования выделенные строки и помещает результат справа от выделения. Ячейка куда записывается результат сначала затирается
Код
Sub RunConcat()
ConcatenatewithFormat Selection, ThisWorkbook.ActiveSheet.Cells(Selection.Row, Selection.Column + Selection.Columns.Count)
End Sub
Sub ConcatenateWithFormat(InputRange As Range, OutPutRange As Range)
Dim i As Integer, q As Variant
Dim sText As String, c As String, A As Variant
Dim oChars As Characters, n As Integer
OutPutRange.Clear: n = 0
For Each A In InputRange
sText = A.Text
For i = 1 To Len(sText)
Set oChars = A.Characters(i, 1)
Set q = OutPutRange.Characters(i + n, 1)
q.Caption = oChars.Caption
With oChars
q.Font.Bold = .Font.Bold
q.Font.Name = .Font.Name
'q.Font.Color = .Font.Color
q.Font.ColorIndex = .Font.ColorIndex
q.Font.FontStyle = .Font.FontStyle
q.Font.OutlineFont = .Font.OutlineFont
q.Font.Size = .Font.Size
q.Font.Strikethrough = .Font.Strikethrough
q.Font.Subscript = .Font.Subscript
q.Font.Superscript = .Font.Superscript
q.Font.Underline = .Font.Underline
End With
Next i
n = n + Len(sText)
Next A
End Sub
пока что думаю алгоритм такой: v1 1. сначала выгрузить сырое сцепленное Value в результирующую ячейку 2. пройтись по исходным ячейкам и изменение цвета текста записать в словарь или коллекцию в виде [номер символа, индекс нового цвета] 3. покрасить итоговый сырой результат на основе этого словаря или коллекции 4. если нужно сохранить не только цвет, но и форматирование - то писать кодировку вида Font_Size_Bold_Underline_italic_Color, например Arial_12_NoBold_UL_Noit_FFFF00, хотя в данном случае возможно проще будет сделать на многомерном массиве, чтобы не сплитать и не расшифровывать эту кодовую строку форматирования
v2 а можно так: 1. сцепить сырой текст из всех исходников в результат 2. покрасить текст функцией выше, заквотив в ней две строки - 1. предочистка результирующей ячейки и 2. посимвольное впечатывание символа в результирующую ячейку v2 успешно отрабатывает на длине более 255
таким образом можно переделать пару строк в ConcatenateWithFormat и получить процедуру, которая успешно отработает и на разных цветах и на длине более 255, вдобавок можно добавить кастомный сепаратор между значениями исходных ячеек и фильтр по ячейкам
смежные темы:
Изменено: - 19.02.2025 09:42:04
Как открыть рабочий стол?, vba, winapi, CLSID, win7, Shell.windows
Пользователь
Сообщений: Регистрация: 30.12.2012
01.08.2024 04:09:30
Как открыть рабочий стол? (vba, winapi, win7) по какому адресу он находится?
в идеале бы получить CLSID в реестре прописан "Desktop" ::{00021400-0000-0000-C000-000000000046}, но он никуда не ведёт "file:///C:/Users/Admin/Desktop" открывает папку с рабочим столом (на картинке слева) а нужно именно виндовый рабочий стол с уникальной иконкой (на картинке справа)
Изменено: - 01.08.2024 04:24:11
как автоматически проставить табуляцию или отступы в vba коде?, онлайн или офлайн
Пользователь
Сообщений: Регистрация: 30.12.2012
05.12.2023 09:46:48
как автоматически проставить табуляцию или отступы в vba коде? есть ли такая кнопка в самом VBA в экселе? если нету, то есть ли онлайн сервисы куда можно вставить сырой код и забрать код с отступами?
есть такой код:
Код
Sub TabTest()
If i = 1 Then
j = 2
End If
End Sub
нужно сделать из него такой:
Код
Sub TabTest()
If i = 1 Then
j = 2
End If
End Sub
-- вручную в каждой строке Tab и Shift+Tab не предлагать
Изменено: - 05.12.2023 09:50:26
поиск по таблице, формулами
Пользователь
Сообщений: Регистрация: 30.12.2012
18.08.2023 07:43:05
вот есть такая табличка нужно найти названия ящиков для каждого фрукта решение есть одно, но может есть и другие
Изменено: - 18.08.2023 07:43:39
сохранение склеенной длинной строки через ADODB.Stream, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
17.05.2023 06:37:19
загружаю файл в string потом делю на массив строк обрабатываю каждую строку склеиваю txt = txt & s сохраняю через ADODB.Stream
и вот именно на txt = txt & s идёт накопительная задержка если txt уже длинная (более 10000 строк), то к ней долго клеится новая строка
а через FSO.OpenTextFile ForAppending сохранять неудобно, т.к. поддерживает очень мало кодировок
вот таймер по каждому склеиванию + общая длина переменной txt: в последнем столбце видно как падает скорость склеивания симв/сек
Цитата
timer
Δ timer
len txt
Δ len
Δ len / Δ timer
0,164
0,164
30826
30826
187 963
0,373
0,209
63112
32286
154 490
0,648
0,275
102291
39179
142 267
0,984
0,336
137951
35660
106 151
1,476
0,492
182898
44947
91 321
2,113
0,637
227332
44434
69 786
2,959
0,846
271972
44640
52 784
4,369
1,41
327410
55438
39 313
6,16
1,791
380373
52963
29 571
8,244
2,084
432141
51768
24 841
10,406
2,162
494479
62338
28 832
12,849
2,443
549227
54748
22 407
15,439
2,59
590227
41000
15 831
18,22
2,781
627428
37201
13 376
вопрос: 1. есть ли у ADODB.Stream функция дозаписи в имеющийся файл? 2. если нету, то как правильно клеить длинные строки? проверять на длину txt и при превышении условных 200 000 использовать новую чистую string txt[2] txt[3] , а потом склеить txt[1] txt[2] txt[3] перед сохранением в файл ?
Изменено: - 17.05.2023 07:27:05
Excel - метод прогресс панель задач - есть ли?, progress indicator taskbar, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
08.04.2022 08:21:17
Есть ли у Excel метод "прогресс" на панели задач, как у любого приложения? Даже у видеоплеера есть, и он на иконке показывает сколько фильма прошло Класс WindowsFormsExtensions содержит два метода – SetTaskbarProgress и SetTaskbarProgressState. Вызов первого метода позволяет указать процент выполнения текущей задачи. Метод SetTaskbarProgressState позволяет задать текущее состояние прогресс-бара.
Могу ли я через vba подать сигнал в Excel о прогрессе? Что-то типа
Код
for i=1 to 100
Application.Progress(i)
next i
Чтобы он на своей иконке Excel отображал прогресс, как это делает почти любое другое приложение?
Изменено: - 08.04.2022 08:22:32
как получить список окон с панели задач?, vba, hwnd WinAPI
Пользователь
Сообщений: Регистрация: 30.12.2012
28.03.2022 19:53:54
Как получить список окон проводника в том порядке, в котором они открыты на панели задач? (слева направо) Или при наведении мышкой если много окон, то выскакивает список тоже с таким же порядком (сверху вниз)
ShellWindows и дерево hwnd хоть и дают разные по сортировке списки, но ни в одном из них этот панель-задачный порядок не соблюдается. Пока удалось узнать только класс выпадающего списка из панели задач TaskListThumbnailWnd или может в другом месте в системе хранится этот порядок окон проводника, но где?
Shell_TrayWnd - ReBarWindow32 - MSTaskSwWClass - MSTaskListWClass - где есть TaskBar API или объект "панель задач" ? есть ещё и четвёртая сортировка - ALT+Tab - TaskSwitcherWnd
Снимаю параметры окон проводника: из 30 окон - 25 нормальные, но 5 "застарелые" и выдают ShellWindows .Left = -32000 .Top = -32000, т.е. значение ненормальное После того, как вручную мышкой переключаюсь на окно и после этого беру значения заново - всё норм. Не знаю как "застареть" окно вручную, чтобы повторить такую ошибку, но пока что 5 застарелых окон есть
Вопрос: Как через vba обновить или активировать окно проводника, чтобы снять правильные параметры? Пробовал это, но не помогло:
Помогите подправить код для того, чтобы он заработал в x64 офисе
нужно изменить dwExtraInfo на LongPtr и подправить размерность GENERALINPUT?
Код
Const VK_H = 72, VK_E = 69, VK_L = 76, VK_O = 79, KEYEVENTF_KEYUP = &H2, INPUT_MOUSE = 0, INPUT_KEYBOARD = 1, INPUT_HARDWARE = 2
Type MOUSEINPUT: dx As Long: dy As Long: mouseData As Long: dwFlags As Long: time As Long: dwExtraInfo As Long: End Type
Type KEYBDINPUT: wVk As Integer: wScan As Integer: dwFlags As Long: time As Long: dwExtraInfo As Long: End Type
Type HARDWAREINPUT: uMsg As Long: wParamL As Integer: wParamH As Integer: End Type
Type GENERALINPUT: dwType As Long: xi(0 To 23) As Byte: End Type
Declare PtrSafe Function SendInput Lib "user32.dll" (ByVal nInputs As Long, pInputs As GENERALINPUT, ByVal cbSize As Long) As Long
Declare PtrSafe Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Sub go1()
AppActivate "Блокнот"
SendKey VK_H: SendKey VK_E: SendKey VK_L: SendKey VK_L: SendKey VK_O
End Sub
Sub SendKey(bKey As Byte)
Dim GInput(0 To 1) As GENERALINPUT
Dim KInput As KEYBDINPUT
KInput.wVk = bKey
KInput.dwFlags = 0
GInput(0).dwType = INPUT_KEYBOARD
CopyMemory GInput(0).xi(0), KInput, Len(KInput)
KInput.wVk = bKey
KInput.dwFlags = KEYEVENTF_KEYUP
GInput(1).dwType = INPUT_KEYBOARD
CopyMemory GInput(1).xi(0), KInput, Len(KInput)
Call SendInput(2, GInput(0), Len(GInput(0)))
End Sub
Изменено: - 26.03.2020 14:40:23
Ввод пароля Безопасность Windows, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
25.03.2020 07:54:48
Подскажите, как ввести логин пароль ? Через сендки как то не круто или это единственный вариант?
Изменено: - 25.03.2020 09:50:30
как обнулить XMLHTTP от кешированных значений?
Пользователь
Сообщений: Регистрация: 30.12.2012
19.03.2020 00:40:28
Как обнулить XMLHTTP от кешированных значений ? Пробовал 5 разных способов, не помог ни один, всё равно приносит старое значение респонса с юкоза
Код
set obj = Nothing
max-age=0
no-cache, no-store, must-revalidate
"If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"
?hash=rnd
Как вы обнуляете кеш? или просто не используете XMLHTTP ?
И заодно, через сколько минут кеш сбрасывается? через 30 минут?
Изменено: - 19.03.2020 11:23:25
Найти строку текста (RegExp)
Пользователь
Сообщений: Регистрация: 30.12.2012
16.03.2020 15:28:44
есть строка текста
Код
asd1qwd1er345568678345111
Как применить d1*345 через RegExp, чтобы получить "d1er345", а не "d1qwd1er345" ?
Это "d1.+?345" выдаёт "d1qwd1er345", как ограничить с последнего вхождения d1 ? Что то типа "(d1)(не(d1)).+?345"
Изменено: - 16.03.2020 15:35:51
Касперский блокирует интернет для Excel, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
20.09.2019 14:33:14
Касперский блокирует интернет для Excel.
Отключаешь защиту - макрос работает. После перезагрузки тоже работает, но через время всё равно блочит. Пока 3 решения: - перезагрузка - отключить защиту - отключить сетевой экран Закидывал Excel.exe в доверенные, в сетевом экране принудительно разрешал ему интернет - ничего не помогает. Как лечить?
Как вернуть иконки из панели инструментов Excel 2010 ?, для Excel 2013-2016
Пользователь
Сообщений: Регистрация: 30.12.2012
26.03.2019 13:08:59
Как вернуть иконки из панели инструментов Excel 2010 ? Не могу привыкнуть к новым плоским, старые были приятнее. Это же просто иконки, должен быть способ выдрать их из 2010 и скормить их в 2013-2016
Изменено: - 27.03.2019 07:55:41
Возникла проблема перенаправления, vba, как лечить?
Пользователь
Сообщений: Регистрация: 30.12.2012
26.03.2019 06:47:21
"возникла проблема перенаправления" возникает во время Microsoft.XMLHTTP.send через время, когда жму на Debug + F8, выскакивает "Неопознанная ошибка" макрос приходится перезапускать с нуля ответ - возникает в случае не рабочей страницы, т.е. это ошибка не по вине Excel
Изменено: - 26.03.2019 09:02:27
Несовпадение значений при выгрузке из массива, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
31.03.2018 19:18:46
При загрузке ячеек в массив и выгрузке - наблюдается несовпадение значений. Есть более точный макрос, в котором эти несовпадения учтены?
Как отключить макросы при вторичном открытии книги?
Пользователь
Сообщений: Регистрация: 30.12.2012
31.03.2018 04:36:39
Excel 2016, Параметры макросов стоят "Отключить все макросы с уведомлением" При первом открытии любой книги выскакивает сверху сообщение, при втором открытии и последующих - макросы включены без уведомления! Если переименовываю книгу, то окошко опять всплывает. Даже переключал на "отключить все макросы без уведомления", перезапускаю Excel, открываю книгу и в ней макросы работают. Вопрос: Почему так происходит и где это отключить? (нужно, чтобы всегда было уведомление.)
Изменено: - 31.03.2018 05:04:17
Как починить соотношение сторон у картинки в комментариях?
Пользователь
Сообщений: Регистрация: 30.12.2012
13.10.2017 15:43:12
Здравствуйте. В двух ячейках две одинаковых картинки. Но высота первой 1651.5, а высота второй 74.25 Если высоту первой напрямую задать 74.25, то они станут выглядеть одинаково.
Вопрос1: Почему внутри файла одна картинка image1.jpeg, а на листе две разных картинки? Вопрос2: Если обе эти картинки берут данные из одного источника, то можно ли обнулить высоту и ширину (т.е. взять родную высоту ширину из оригинального файла источника)? Или может быть какое-то "Scale свойство" нарушено и при задании правильного значения первая картинка станет отображаться нормально с оригинальным соотношением сторон?
Или по другому: Как узнать высоту и ширину вставленной картинки-файла, к которой обращается комментарий?
xls прикреплён
Изменено: - 13.10.2017 16:45:51
Как удалить комментарий с картинкой?, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
13.10.2017 04:27:28
Здравствуйте. Как удалить только комментарии с .UserPicture, а остальные не трогать ?
IE скачать файл, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
19.08.2017 07:21:20
Здравствуйте. Подскажите метод для скачивания файла через CreateObject("InternetExplorer.Application")
Например - ПКМ по картинке - Сохранить изображение как - ПКМ по ссылке на файл - Сохранить объект как
Изменено: - 19.08.2017 07:25:43
ИЛИ в СУММПРОИЗВ, формулы
Пользователь
Сообщений: Регистрация: 30.12.2012
24.04.2017 07:51:09
Здравствуйте. Знак произведения "*" в формуле СУММПРОИЗВ является функцией "И" Как можно добавить "ИЛИ" в СУММПРОИЗВ ?
Например: Нужно посчитать И("год";Или("Зима";"2000")) формулой СУММПРОИЗВ
красный - исходные данные синий - вспомогательные СУММПРОИЗВ (по сути, не нужные) желтый - тут нужная формула (в примере формула считает неправильно) оранжевый - решение на формулах И,ИЛИ (как шпаргалка)
Изменено: - 24.04.2017 07:53:08
изменить горячую клавишу перехода между листами, VBA
Пользователь
Сообщений: Регистрация: 30.12.2012
23.11.2016 17:10:24
хочу изменить Ctrl+PGDN Ctrl+PGUP на Ctrl+TAB Ctrl+Shift+TAB
при использовании этого кода переход происходит только один раз, а на второй раз выскакивает ошибка
Код
Sub auto_open()
Application.OnKey "^{TAB}", "Переход1" 'Ctrl+TAB 'следующий лист
Application.OnKey "^+{TAB}", "Переход2" 'Ctrl+Shift+TAB 'прошлый лист
End Sub
Sub Переход1()
Application.ScreenUpdating = False
On Error Resume Next
Application.OnKey "^{TAB}", ActiveSheet.Next.Select 'Ctrl+TAB 'следующий лист
Application.ScreenUpdating = True
End Sub
Sub Переход2()
Application.ScreenUpdating = False
On Error Resume Next
Application.OnKey "^+{TAB}", ActiveSheet.Previous.Select 'Ctrl+Shift+TAB 'прошлый лист
Application.ScreenUpdating = True
End Sub
что нужно подправить?
VBA AdvancedFilter Unique:=True (уникальные фильтром), диапазон выборки не имеет имени или имеет неправильное имя поля - ошибка 1004
Пользователь
Сообщений: Регистрация: 30.12.2012
23.11.2016 10:54:09
при попытке выявить уникальные значения из списка через фильтр выдает ошибку диапазон выборки не имеет имени или имеет неправильное имя поля - ошибка 1004
оказалось, что это происходит из-за смены значения в первой ячейке столбца, куда выгружаются уникальные т.е. для исправления ошибки нужно очистить столбик, в который выгружаются уникальные значения вопроса как такового нет, он уже решен, но на форуме конкретно такой проблемы не нашел, пока решал этот вопрос. может плохо искал
прикреплен пример test1 работает test2 не работает
test1
Код
Sub test1()
[A1:A10].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[D1], Unique:=True
End Sub
test2
Код
Sub test2()
[D1:D10].ClearContents
[A1:A10].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[D1], Unique:=True
[D1] = "111"
[A1:A10].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[D1], Unique:=True
End Sub
Изменено: - 23.11.2016 10:59:32
посчитать количество вопросов на листе, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
30.04.2015 13:18:13
Здравствуйте! подскажите, можно ли через .CountIf посчитать количество вопросов?
правильный ответ в данном примере "3", а выдаёт "10"
Изменено: - 30.04.2015 13:18:44
Обнуление разных переменных, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
07.04.2015 18:49:26
Здравствуйте! подскажите, где почитать про обнуление переменных? что-то типа таблички
Код
Erase a 'массив
Set a = Nothing 'object, range
a = VbNullString '$
a = "" '$
a = Empty '&
a = 0 '&
какие из них универсальные? например из этого списка "a = Empty" работает и для & и для $
Изменено: - 07.04.2015 19:31:23
количество строк несвязанного диапазона, vba union() rows.count
Пользователь
Сообщений: Регистрация: 30.12.2012
05.04.2015 17:23:48
подскажите, как посчитать количество строк? должно быть 3
Код
Sub test()
Set t1 = Union([a1:c1], [a3:d4])
t2 = t1.Rows.Count
t1.Select
End Sub
Работа с PDF средствами Excel. Решения, Макросы Excel для работы с PDF
Пользователь
Сообщений: Регистрация: 30.12.2012
22.01.2015 21:22:15
Здесь выложены несколько простеньких макросов для работы с PDF из Excel Как ни странно, но из Excel можно получить доступ к PDF. Причём сделать это на двух разных языках - IAC(AcroExch) и JavaScript третий, самый полный доступ к PDF можно получить только через *.api плагины, выход на которые не доступен с VBA
один и тот же результат можно получить четырьмя разными способами:
После этих познаний такие темы решаются в одну строку:
Код
jso.getField("Name").Value = "text"
1. К сообщению прикреплен только xls файл с кодом 2. По ссылке есть полный комплект , зеркало (xls, pdf файлы для тестирования, SDK и другая документация) (152 Мб. из них 150 Мб Документация, 2 Мб рабочие файлы)
Макросы: Info Информация о PDF файле (Debug.print) BM Создание закладки в файле (Настроено на merge.pdf) BMPage Куда переходит закладка (Debug.print Настроено на merge.pdf) TreeBookmarks Создание дерева закладок (Настроено на merge.pdf -> tree.pdf) BookmarkNames Перебор имён всех закладок (Debug.print Настроено на merge.pdf) Экспорт Экспорт информации о закладках на лист (Настроено на tree.pdf) mergePDF Объединить файлы PDF в одной папке (Настроено на папку Join) mergePDF_BM Объединить файлы PDF в одной папке и создать закладки (Настроено на папку Join) ListMenuItems Изъять названия пунктов меню на лист PDF2TXT Вариант 1 (adobe.pdf -> adobe.txt) PDF2TXT_2 Вариант 2 (adobe.pdf -> adobe2.txt) jsodoc Тестовый файл. много разных команд. Рекомендуется запускать в пошаговом F8 режиме (создает jso.pdf и jso.txt)
Файл AcquireMenuItemNames.pdf выполняет ту же функцию, что и ListMenuItems, но делает это более наглядно в самом pdf и возможно выдаёт больше значений из меню
В первый раз все макросы рекомендуется запускать по порядку. Либо для запуска одного конкретного макроса нужно уточнить файл, к которому обращается макрос.
Изменено: - 15.07.2025 06:56:53
как отключить MsgBox, vba
Пользователь
Сообщений: Регистрация: 30.12.2012
14.01.2015 13:35:57
Здравствуйте!
как отключить показ всех MsgBox в макросе? Application.DisplayAlerts = False не отключает или если отключить нельзя, то как послать команду нажатия кнопки ОК например ? чтобы не беспокоили, когда это нужно, а макрос спокойно работал
Изменено: - 14.01.2015 13:36:44
On error отследить цикл
Пользователь
Сообщений: Регистрация: 30.12.2012
14.01.2015 12:45:08
Здравствуйте! что нужно изменить в коде, чтобы при ошибке он писал в debug.print i и продолжил работу чтобы отследить ошибочные номера цикла
Код
Sub test()
txt = "123abc123"
For i = 1 To Len(txt)
y = Сложение(Mid(txt, i, 1))
on error debug.Print i
Next
End Sub
Function Сложение(x$) As Long
Сложение = x + 1
End Function