Здравствуйте! Потребовалось из формул перейти на макрос и столкнулся с непониманием как в VBA использовать данную функцию. Подскажите пожалуйста. Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Заполнить таблицу определенными случайными числами с определенными условиями
Пользователь
Сообщений: Регистрация: 28.02.2017
07.03.2025 04:43:19
Здравствуйте! Не знаю как правильно объяснить задачу. Попытаюсь) В столбце С указываются исходные значения которые необходимы для дальнейшей работы - среднее значение, количество отсчётов и допустимый разброс значений В столбце E необходима такая формула, чтобы при протягивании её вниз она заполнилась случайными значениями, но с ограничениями определенными в столбце С. В столбце Н - контрольное значение, рассчитанное как среднее значение величин, заполненных в столбце Е
Пример что необходимо - в приложенном файле
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Получение данных из отчёта FastReport средствами VBA
Пользователь
Сообщений: Регистрация: 28.02.2017
04.10.2023 07:19:57
Здравствуйте уважаемые форумчане!
Сторонней программой готовится отчёт в FastReport и сохраняется в файл ИмяФайла.fp3 (или .frx) В соответствии с требованиями нашей организации необходимо дополнить этот отчёт определенной информацией. Т.к. редактирование отчёта в FastReport достаточно трудоёмко, хочу сделать это в Excel. В самом FastReport есть возможность экспортировать данные в формат Excel или Html. Возможно ли средствами VBA осуществить импортирование данных из отчёта? Если это невозможно, то можно ли средствами VBA автоматизировать экспорт данных из FastReport в Excel (или Html)?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Удалить книгу, которая еще не сохранена, но обязательно будет сохранена. VBA Excel
Пользователь
Сообщений: Регистрация: 28.02.2017
31.07.2023 08:45:46
Здравствуйте уважаемые форумчане! Вопрос такой. Сторонней программой через шаблон .xlt генерируются отчеты в формате Excel. Сохранением и нумерацией файлов управляет также сторонняя программа. Имена файлов имеют вид типа бла-бла-бла_1.xls, бла-бла-бла_2.xls, бла-бла-бла_3.xls, бла-бла-бла_4.xls. В данном конкретном случае 4 отчета. При генерации четвертого (последнего) отчета я из отчетов _1, _2, _3 копирую данные на лист 4 отчета, т.о. собираю все данные на один лист. Могу сохранить данные в новую книгу, удалить отчеты с первого по третий так как они уже есть на диске.
А вот как сделать удаление 4 книги, которой еще нет на диске???
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Избавиться от предупреждения безопасности Windows
Пользователь
Сообщений: Регистрация: 28.02.2017
21.02.2023 08:09:21
Здравствуйте уважаемые форумчане! Мой вопрос не относится непосредственно к Excel.
А вопрос такой. При открывании через проводник файлов MS Office Excel и Word расположенных на сетевых дисках лежащих вне локальной сети возникает сообщение-предупреждение от Windows (см. скриншот).
Что необходимо сделать чтобы оно не появлялось каждый раз. Сетевые диски подключены в системе и имеют букву диска. Логин/пароль сохранены. Надоело каждый раз видеть его и нажимать на кнопку Ок.
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Получить возможные комбинации написания номера, содержащего неизвестное количество пробелов
Пользователь
Сообщений: Регистрация: 28.02.2017
17.02.2023 09:56:01
Здравствуйте уважаемые форумчане!
Есть сайт ФГИС АРШИН, где по заводскому номеру прибора можно найти сведения о поверке. Т.к. при внесении записи поверяющая организация может указать номер содержащий пробел(ы) возникает сложность с поиском таких номеров. Необходимо перебрать возможные варианты таких номеров. Далее по составленному списку будут формироваться запросы к ФГИС, но это уже другая история
Вручную я понимаю как это сделать, но если номер содержит более 2 пробелов, то голова в ручном режиме закипает
В файле-примере в столбце А приведен исходный вид номера. В столбце В - какие варианты возможны для исходного номера.
Подскажите пожалуйста в каком направлении двигаться? Как можно это сделать?
Спасибо!
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Изменение иконки приложения Excel на панели задач средствами WinAPI
Пользователь
Сообщений: Регистрация: 28.02.2017
25.11.2022 07:42:34
Здравствуйте уважаемые форумчане!
Есть такое желание - сменить иконку приложения Excel на панели задач Windows. Есть код который делает это средствами WinAPI в Windows 7(32 bit) Microsoft Office 2010(32 bit), но в Windows 10(64 bit) Microsoft Office 2010(32 bit) и Windows 10(64 bit) Microsoft Office 2010(64 bit) - не делает. Не выдаёт ошибки, а просто не делает.
С чем это связано и как осуществить задуманное?
В приложенном архиве файл Excel и иконка
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Подбор ширины Columns элемента ListBox в зависимости от ширины(длины) текста
Пользователь
Сообщений: Регистрация: 28.02.2017
05.11.2022 10:09:43
Здравствуйте. Элемент ListBox заполняю присваиванием предварительно созданным массивом.
Код
ListBox1.List=aR
Данные каждый раз разные, в колонках разный текст. Если для одних колонок можно вручную подобрать нужную ширину, то для других необходимо ширину подстраивать в зависимости от длины текста в ней. Что сейчас сделано: в процессе подготовки массива определяется самый длинный элемент через функцию Len(). И кодом меняется ширина столбца рассчитанная таким образом: Размер шрифта Х Количество символов Х 0,0282. Результат получается в сантиметрах. Его и указываю для параметра ColumnsWidth с указанием 'cm'. Правильно ли так делать или есть более изящный способ?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Ошибка при получение данных с сайта через API запросы - множественные запросы
Пользователь
Сообщений: Регистрация: 28.02.2017
27.10.2022 07:35:05
Здравствуйте уважаемые форумчане! Возникла потребность получения данных с одного сайта. Не знаю как это правильно называется, вроде парсинг) "Покурив" руководство пользователя этого сайта и погуглив, накропал макрос, которые извлекает данные. Но если данных много, то сайт начинает ругаться на множественные запросы и соответственно не отдает нужные данные. Если делать задержку методом Application.Wait то получение данных растягивается на N-ое время, и то не гарантирует что получится. И кириллицу тоже не хочет воспринимать(
Скрытый текст
Код
Sub Test()
Dim Result As String
Dim URL As String
Dim objHTTP 'As New MSXML2.XMLHTTP60
Dim Count As Long
Dim Results() As String
Dim Txt As String
Dim i As Long
Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Txt = "29345-05" ' 125 записей
' Txt = "28363-14" ' 4358 записей
' сначала определяю сколько вообще записей есть
URL = "https://fgis.gost.ru/fundmetrology/eapi/vri?search=" & Txt
objHTTP.Open "GET", URL, False
objHTTP.Send
Result = objHTTP.responseText
Count = CLng(Mid(Result, InStr(11, Result, ":") + 1, InStr(1, Result, ",""start") - (InStr(11, Result, ":") + 1)))
'Debug.Print "Количество найденных записей := " & Count
' переопределяю массив под записи
ReDim Results(1 To Count, 1 To 1)
DoEvents
Sheets(1).UsedRange.Clear
[A1] = Count
' в цикле заношу записи в массив
For i = 1 To Count
'Debug.Print "Запись № " & i
URL = "https://fgis.gost.ru/fundmetrology/eapi/vri?search=" & Txt & "&start=" & i - 1 & "&rows=1"
objHTTP.Open "GET", URL, False
objHTTP.Send
Results(i, 1) = objHTTP.responseText
'Application.Wait (Now + TimeValue("0:00:01"))
Next
' выгружаю результат на лист
[B2].Resize(UBound(Results), 1) = Results
End Sub
Файл-пример прилагаю
Изменено: - 27.10.2022 10:33:44
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Изменить или убрать заголовок приложения
Пользователь
Сообщений: Регистрация: 28.02.2017
18.10.2022 06:22:31
Здравствуйте. Как убрать или сделать свой заголовок у приложения? (обведено на картинке) Если делаю Application.Caption=" ", то исчезает только правая часть, и остается показывать "Книга1 -" Как сделать чтобы там был только мой текст, или его вообще не было?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Как скрыть Excel до полной прогрузки книги, а потом опять показать его
Пользователь
Сообщений: Регистрация: 28.02.2017
17.10.2022 12:53:00
Здравствуйте. В проекте использую свою, пользовательскую, ленту Ribbon, стандартную ленту полностью скрываю через редактор Ribbon. Но при запуске книги стандартная лента появляется в процессе загрузки, а потом спустя некоторое время убирается и появляется уже моя. Причем на разных компьютерах - разное поведение. Где-то это сразу происходит, а где-то 'подвисает' на несколько секунд. Как я понял зависит это от быстродействия компьютера. В процедуру Workbook_Open вставлял Application.Visible = False/True. Все равно временно показывает стандартную ленту. Как побороть это?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Зависает Excel при установленной защите листа
Пользователь
Сообщений: Регистрация: 28.02.2017
13.10.2022 08:09:09
Здравствуйте уважаемые форумчане. Столкнулся с непонятной мне проблеме при работе в Microsoft Office 2010. Устанавливаю защиту листа. Разрешаю следующее: - выделение заблокированных ячеек - выделение незаблокированных ячеек - форматирование ячеек - форматирование строк - форматирование столбцов - вставку гиперссылок. При нажатии на кнопку выделения всех ячеек происходит зависание Excel с невозможностью дальнейшее работы до перезапуска приложения. Опытным путем определил что это происходит если разрешаю вставку гиперссылок. Проверил это же в Office 2016. Там происходит небольшое подтормаживание при этом действии, но программа не виснет и продолжает работать. Как с этим бороться???
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Обращение к имени переменной из строки типа string. Чтение и запись. Использование класса
Пользователь
Сообщений: Регистрация: 28.02.2017
03.04.2022 12:01:41
Здравствуйте уважаемые форумчане. Мне нужны переменные к которым бы я мог обратиться через текстовую строку, например в циклах так: "Параметр" & i Как я понял это можно сделать если создать переменные в модуле класса.
Создаю переменные через класс. В модуле класса Class1 пишу следующее:
Скрытый текст
Код
Option Explicit
Private vЗнач_1 As Variant
Private vЗнач_2 As Variant
Public Property Get Знач_1() As Variant
Знач_1 = vЗнач_1
End Property
Public Property Get Знач_2() As Variant
Знач_2 = vЗнач_2
End Property
Public Property Let Знач_1(ByVal vValue As Variant)
vЗнач_1 = vValue
End Property
Public Property Let Знач_2(ByVal vValue As Variant)
vЗнач_2 = vValue
End Property
В общий модуль Module1 пишу следующее:
Скрытый текст
Код
Option Explicit
Public Товар As New Class1
Private Sub test()
Товар.Знач_1 = 666
Debug.Print Товар.Знач_1
End Sub
В для обращения по имени в виде строки предлагали добавить в модуль класса следующее:
Скрытый текст
Код
Property Get Value(x As String)
Value = CallByName(Me, x, VbGet)
End Property
тогда к переменной можно будет обратиться по имени в виде строки, т.е. так: Debug.Print Товар.Value("Знач_1") Но при этом получается что когда вводим Товар. вываливается три варианта: мои переменные (Знач_1 и Знач_2) и переменная Value, т.е.: Товар.Знач_1 Товар.Знач_2 Товар.Value
Вопросы: Не понял что нужно добавить чтобы и присваивать можно было через имя в виде строки, т.е. работала бы конструкция типа Товар.Value("Знач_1")=666 Можно сделать так чтобы это Value не появлялось в списке выбора?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Присвоение переменным значений из диспетчера имен
Пользователь
Сообщений: Регистрация: 28.02.2017
09.03.2022 17:08:25
Здравствуйте уважаемые форумчане.
В целях хранения настроек пользовательской формы хочу использовать диспетчер имен - добавлять туда скрытно данные и считывать их оттуда при загрузке и использовании пользовательской формы(может и не правильно это, но это не предмет обсуждения). Добавление идет так: Names.Add "string", "строка", True 'записываем строковое значение Names.Add "long", 1, True 'записываем целое число Names.Add "double", 1.2, True 'записываем дробное число Names.Add "boolean", True, True 'записываем булево значение
А вот считывать и присваивать их переменным уже засада. Например Txt=Names("string") присвоит значение ="строка", а не просто строка, lNum=Names("long") вернет =1, dNum=Names("double") вернет =1.2 и bNum=Names("boolean") вернет =TRUE, т.е. строковое значение. А мне нужно именно значение. Таким образом, чтобы присвоить эти значения переменным я их должен еще предварительно обработать.
Для переменной типа String: Txt = Names("string") Txt = Replace(Txt, "=", "") 'убираем знак равно Txt = CStr(Replace(Txt, """", "", 1, 2) ) 'убираем знаки кавычек и приводим к типу String.
Для переменной типа long: lNum = CLng(Replace(Names("long") , "=", "")) 'убираем знак равно и приводим к типу Long. Применение Clng не обязательно.
Для переменной типа Double: dNum= CDbl(Val(Replace(Names("double"), "=", ""))) 'убираем знак равно и приводим к типу Double. Применение CDbl не обязательно.
И для переменной типа Boolean: bNum= CBool(Replace(Names("boolean"), "=", "")) 'убираем знак равно и приводим к типу Boolean.
Нет ли другого, более простого способа?
В диспетчере имен есть столбец, название которого - Значение, и там вроде правильно указано значение параметра. Как к нему можно обратиться?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Не обновляется Ribbon перед загрузкой формы
Пользователь
Сообщений: Регистрация: 28.02.2017
26.02.2022 05:30:34
Здравствуйте уважаемые форумчане. Прошу помощи
Не обновляется панель Ribbon перед загрузкой пользовательской формы в модальном режиме. Обновление происходит после выгрузки пользовательской формы. Можно сделать чтобы обновление происходило или смириться с этим?
Если пользовательская форма была загружена в немодальном режиме, то обновление ленты происходит перед загрузкой пользовательской формы. Но при этом становится доступным нажатия на нехорошие кнопки - Закрыть Книгу через крестик или через меню Файл. Т.е. хотелось чтобы форма загружалась в модальном режиме.
Файл прилагается.
Подробное объяснение:
Скрытый текст
Файл отредактирован с помощью RibbonXMLEditor. В нем убраны все меню. На ленту добавлены две кнопки - Печать и Новый.
Объявлена глобальная переменная объекта ленты (Ribbon). Объявлена глобальная переменная признака включения кнопки. При загрузке если лист содержит данные то очищается. Признак включения кнопки устанавливается в False и обновляем Ribbon.
Кнопка Печать должна быть активна только если на листе есть данные. Кнопка Новый очищает лист и запускает пользовательскую форму.
На форме расположены две кнопки Пусто и Данные. При нажатии на Пусто устанавливаем признак включения кнопки в False, обновляем Ribbon и закрываем форму. При нажатии на Новый записываем в ячейку А1 текст, устанавливаем признак включения кнопки в True, обновляем Ribbon и закрываем форму.
Так вот. Если лист содержит данные, то при нажатии на кнопку Новый происходит очищение листа, признак включения кнопки устанавливается в False. Производим обновление Ribbon и запускаем форму. Т.е. кнопка Печать должна стать неактивной. А она остается активной до момента выгрузки пользовательской формы (хотя нажать на нее конечно не могу, форма то в модальном режиме).
Если форма в немодальном режиме, то работает корректно.
Спасибо
Изменено: - 26.02.2022 05:33:45(добавлен текст)
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Вычислить выражение заданное строкой String
Пользователь
Сообщений: Регистрация: 28.02.2017
19.02.2022 17:33:49
Здравствуйте
Как можно вычислить выражение, если оно задано в виде строки String
Если я делаю так, то всё считает:
Код
Sub test()
Dim iRow As Integer
Dim Txt As String
Txt = "5+1"
iRow = Application.Evaluate(Txt)
MsgBox iRow
End Sub
А вот так уже нет:
Код
Sub test()
Dim iRow As Integer
Dim Txt as String
iRow=5
Txt="iRow+1"
iRow = Application.Evaluate(Txt)
MsgBox iRow
End Sub
Можно всё-таки посчитать такое выражение?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
VBA. Разделение строки кода с созданием массива на две строки. Ошибка
Пользователь
Сообщений: Регистрация: 28.02.2017
29.01.2022 05:55:23
Здравствуйте. Заполняю массив таким способом:
Код
Dim aR() as Variant
a=[{1, 2, 3, 4, 5; 11, 22, 33, 44, 55; 111, 222, 333, 444, 555}]
Значений много и строка получается очень длинной. Попытался сделать перенос строки используя символ переноса строки - пробел и нижнее подчёркивание.
Но при этом возникает ошибка про конец строки. Как правильно сделать перенос строки? Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Событие Textbox_Exit. Как выполнить кодом?
Пользователь
Сообщений: Регистрация: 28.02.2017
20.01.2022 15:51:19
Здравствуйте уважаемые форумчане. Вопрос такой. Имеется пользовательская форма, на которой размещены два фрейма. В каждом фрейме размещены два текстбокса. В процедурах TextBox_Exit для каждого текстбокса написан код, который должен выполняться при выходе из него. При переходе между текстбоксами, принадлежащих одному фрейму, обработка события Exit происходит так, как и должно быть. Однако при переходе между текстбоксами, принадлежащих разным фреймам, обработка события Exit не выполняется, а происходит только при закрытии формы(в данном случае) Как в этом случае организовать такую обработку, чтобы Exit срабатывал? Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Combobox. Не видно часть текста
Пользователь
Сообщений: Регистрация: 28.02.2017
11.04.2019 11:36:14
Здравствуйте. При использовании свойства ComboBox.TextAlign = 3 - fmTextAlignRight текст располагается в ComboBox прижатым к правой стороне, однако часть текста оказывается скрытым за вертикальной полосой прокрутки. Можно это как то исправить? О каком параметре для этого я не знаю? Спасибо
P.s. Да, понимаю, что можно использовать левое расположение текста, что можно увеличить до необходимой ширины поле ComboBox.
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Отформатировать число в текстбоксе
Пользователь
Сообщений: Регистрация: 28.02.2017
05.04.2019 16:51:56
Здравствуйте!
Не могу сообразить как отформатировать число в текстбокс чтобы было следующее: Если число не имеет дробной части, то и не показывать её Если число имеет дробную часть, но количество знаков после неё не превышает 9, то показывать столько знаков, сколько есть. Если в дробной части количество знаков превышает 9, то ограничить вывод знаков после запятой 9. Пример: Что имеем Что должно быть 100 100 0,567 0,567 0,5679643578884328 0,567964359
Если использовать так: format(textbox1,"#0.########0"), то отсутствующие числа заполняются нулями, т.е. например должно быть 100 а выводится 100,000000000 И не было экспоненциального представления.
Спасибо
Изменено: - 05.04.2019 16:54:00
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Иногда не срабатывает макрос при обработке событий KeyPress
Пользователь
Сообщений: Регистрация: 28.02.2017
13.03.2018 15:49:49
Доброго времени суток, уважаемые форумчане!
При обработке событий KeyPress для TextBox иногда не срабатывает макрос. Т.е. если в коде написано например:
If InStr(1,TextBox1.text,",") Then KeyAscii=0 (если текстбокс содержит запятую, то отменить ввод)
То в большинстве случаев код корректно отрабатывается, но бывает когда он пропускает это и позволяет вводить "до посинения" (прямо мистика какая-то)
С чем это связано, что необходимо добавить в код?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
При объявлении локальных переменных в процедурах обработки событий ругается на дублирование их
Пользователь
Сообщений: Регистрация: 28.02.2017
02.03.2018 10:17:00
Здравствуйте! Столкнулся с такой ошибкой. При объявлении одинаковых переменных в разных событиях при работе с Текстбоксом ругается на дублирование. Т.е. нельзя ввести код наподобие:
Код
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim X As Object
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim X As Object
End Sub
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim X As Object
End Sub
Если я так сделаю, то в процедуре _MouseDown будет ругаться на дублирование. Почему так? В чём загвоздка? Просто принять как данность?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Сделать "промаргивание" текстбокса в событии KeyPress
Пользователь
Сообщений: Регистрация: 28.02.2017
01.03.2018 04:46:08
Здравствуйте уважаемые форумчане!
Делаю обработку событий нажатия клавиши в текстбоксе. Хочу сделать "промаргивание" текстбокса при вводе запрещенного символа, т.е. чтобы его фон изменился и обратно вернулся в стандартный. Попробовал так:
Код
Select Case KeyAscii
...
Case Else
Beep
TextBox1.BackColor = vbRed
Application.Wait (Now + TimeValue("00:00:01"))
TextBox1.BackColor = vbWhite
End Select
Но никакой реакции не происходит. Можно ли это сделать? Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Открытие файла Excel но с другим расширением, т.е. не сопоставленного в системе
Пользователь
Сообщений: Регистрация: 28.02.2017
29.12.2017 09:53:53
Доброго времени суток!
Для пущей секретности хочу изменить у книг Excel, где расположены данные, расширение на другое. Которое будет не сопоставлено в системе ни с какой программой. Как кодом VBA открыть такой файл? Если так:
то ругается, что расширение отличается и просит подтвердить открытие. Как сделать чтобы это подтверждение не запрашивалось? А если этот файл еще и запаролен, то как тогда быть? Наверное перед открытием можно вносить запись в реестр а после закрытия удалять, но это наверное не будет работать если ограничены права пользователя администратором? Как быть?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
UserForm и открытие других книг
Пользователь
Сообщений: Регистрация: 28.02.2017
28.12.2017 05:32:18
Доброго времени суток!
Помогите разобраться вот с каким вопросом. Имеется книга Excel. В ней необходимо загрузить UserForm в модальном режиме, т.е. чтобы пользователь не мог никуда "тыкать" пока не закроет эту форму. Из этой формы(назовём её главной) пользователь будет открывать другие формы(вспомогательные), тоже в модальном режиме, выполнять в них действия и возвращаться к главной форме. Как сделать чтобы при этом можно было открыть другую книгу Excel и она отображалась?, ведь модальность формы не даёт открыть другую книгу. И как сделать чтобы в процессе работы вспомогательных форм обеспечить открытие книг(эти формы работают с данными из этих книг) в скрытом режиме(т.е. чтобы пользователь не видил, что формой открывается какая-то книга) Напрашивается вариант открытие форм в немодальном режиме, но при этом у пользователя будет возможность "тыкать" там где не надо , а этого охота избежать
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Передача текста из Excel в Word с сохранением форматирования текста
Но в этой ячейке у меня отформатированный текст - расставлены степени у чисел(Формат-Шрифт ячеек-Надстрочный) Соответственно при передаче форматирование теряется. Как это можно исправить?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Функция форматирующая текст оставляет текст в ячейке пустым
Пользователь
Сообщений: Регистрация: 28.02.2017
10.11.2017 17:32:54
Здравствуйте Форумчане!
Написал функцию которая форматирует текст, переводя в указанном месте текст в верхний регистр. Но после выполнения функции текст в ячейке остаётся пустым, хотя в процессе выполнения видно как он вносится и форматируется. Почему так, что не учёл?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Обращение к программно созданным контролам
Пользователь
Сообщений: Регистрация: 28.02.2017
10.11.2017 06:15:25
Доброго времени суток, уважаемые форумчане! Прошу помощи.
На форму в зависимости от предварительного выбора необходимо программно добавить 2 фрейма и в них добавить необходимое количество чекбоксов. Почитав форум вроде бы разобрался как это сделать. Сделал такую форму. Вроде работает так, как задумывалась.
Теперь нужно обработать эти чекбоксы, т.е. нужно как то в цикле пройтись по всем чекбоксам, и в зависимости от свойства .Value и .Caption выполнить определенные действия(алгоритм пока обдумывается).
Подскажите пожалуйста как это организовать, можно ли как то упростить код?
Спасибо
p.s. файл весит 160 кб. не даёт загрузить. упаковка тоже не помогает. может просто код выложить?
Изменено: - 10.11.2017 07:39:25
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Совмещение пользовательской функции и условного форматирования
Пользователь
Сообщений: Регистрация: 28.02.2017
04.10.2017 04:09:32
Доброго времени суток, форумчане!
Как можно обратиться к свойству ячейки в которую вводится пользовательская функция, чтобы можно было менять цвет шрифта или заливки в зависимости от условий, которые прописаны в пользовательской функции. Чтобы это срабатывало не только при непосредственном вводе формулы в ячейку, но и при изменении аргументов функции, участвующих в вычислениях.
Что-то типа такого:
Код
Public Function c(a As Double, b As Double) As Double
c = a + b
If c < 0 Then
ячейка_куда_введена_формула.Interior.Color = vbRed
Else
ячейка_куда_введена_формула.Interior.Color = vbGreen
End If
End Function
Теперь если на листе книги я ввожу в какую-нибудь ячейку(например G8) свою пользовательскую функцию "=c(D2;R5)", то в зависимости от результата вычисления она должна быть залита красным или зелёным цветом. А также при пересчёте формулы(при изменении значений в ячейках D2 и(или) R5), тоже должно срабатывать условие и ячейка куда введена формула(G8) должна отработать этот пересчёт.
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Описание пользовательской функции
Пользователь
Сообщений: Регистрация: 28.02.2017
03.10.2017 06:12:03
Доброго времени форумчане!
Поиском ответа на свой вопрос не нашел, поэтому спрашиваю. Создал свою функцию, зарегистрировал её, добавил для неё описание(нашёл на форуме как это сделать). Всё ок, всё работает. Но терзают смутные сомнения
Сама функция:
Код
Public Function СЛУЧМЕЖДУСТАТ(Optional Нижн_граница As Double = 0, Optional Верх_граница As Double = 1) As Double
Application.Volatile False
Randomize
СЛУЧМЕЖДУСТАТ = (Верх_граница - Нижн_граница) * Rnd + Нижн_граница
End Function
Вот я добавляю её описание
Код
Public Sub RegisterFunction()
Application.MacroOptions "СЛУЧМЕЖДУСТАТ", Description:="Генерация случайного числа", Category:="Определенные пользователем", ArgumentDescriptions:=Array(" - наименьшее дробное число которое возвращает функция СЛУЧМЕЖДУСТАТ", " - наибольшее дробное число которое возвращает функция СЛУЧМЕЖДУСТАТ")
End Sub
Смущает то, что в значениях указываемых в табличке конечное значение разное(используется же рандомайзер ) ну и результат в ячейке отличается от того что было в табличке(обведено красным в скриншоте). В стандартной функции СЛУЧМЕЖДУ() там указывается просто "переменное". Можно ли и в своей функции так сделать?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit