Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Как применить функцию ОКРВВЕРХ.ТОЧН в VBA?
 
Здравствуйте!
Потребовалось из формул перейти на макрос и столкнулся с непониманием как в VBA использовать данную функцию.
Подскажите пожалуйста. Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Заполнить таблицу определенными случайными числами с определенными условиями
 
Здравствуйте!
Не знаю как правильно объяснить задачу. Попытаюсь)
В столбце С указываются исходные значения которые необходимы для дальнейшей работы - среднее значение, количество отсчётов и допустимый разброс значений
В столбце E необходима такая формула, чтобы при протягивании её вниз она заполнилась случайными значениями, но с ограничениями определенными в столбце С.
В столбце Н - контрольное значение, рассчитанное как среднее значение величин, заполненных в столбце Е

Пример что необходимо - в приложенном файле
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Получение данных из отчёта FastReport средствами VBA
 
Здравствуйте уважаемые форумчане!

Сторонней программой готовится отчёт в 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
 
Здравствуйте уважаемые форумчане!
Вопрос такой.
Сторонней программой через шаблон .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
 
Здравствуйте уважаемые форумчане!
Мой вопрос не относится непосредственно к Excel.

А вопрос такой. При открывании через проводник файлов MS Office Excel и Word расположенных на сетевых дисках лежащих вне локальной сети возникает сообщение-предупреждение от Windows (см. скриншот).

Что необходимо сделать чтобы оно не появлялось каждый раз. Сетевые диски подключены в системе и имеют букву диска. Логин/пароль сохранены.
Надоело каждый раз видеть его и нажимать на кнопку Ок.

Спасибо

Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Получить возможные комбинации написания номера, содержащего неизвестное количество пробелов
 
Здравствуйте уважаемые форумчане!

Есть сайт ФГИС АРШИН, где по заводскому номеру прибора можно найти сведения о поверке. Т.к. при внесении записи поверяющая организация может указать номер содержащий пробел(ы) возникает сложность с поиском таких номеров.
Необходимо перебрать возможные варианты таких номеров. Далее по составленному списку будут формироваться запросы к ФГИС, но это уже другая история :D

Вручную я понимаю как это сделать, но если номер содержит более 2 пробелов, то голова в ручном режиме закипает :(  

В файле-примере в столбце А приведен исходный вид номера. В столбце В - какие варианты возможны для исходного номера.

Подскажите пожалуйста в каком направлении двигаться?
Как можно это сделать?


Спасибо!
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Изменение иконки приложения Excel на панели задач средствами WinAPI
 
Здравствуйте уважаемые форумчане!

Есть такое желание - сменить иконку приложения 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 в зависимости от ширины(длины) текста
 
Здравствуйте.
Элемент ListBox заполняю присваиванием предварительно созданным массивом.
Код
ListBox1.List=aR
Данные каждый раз разные, в колонках разный текст. Если для одних колонок можно вручную подобрать нужную ширину, то для других необходимо ширину подстраивать в зависимости от длины текста в ней.
Что сейчас сделано: в процессе подготовки массива определяется самый длинный элемент через функцию Len(). И кодом меняется ширина столбца рассчитанная таким образом: Размер шрифта Х Количество символов Х 0,0282. Результат получается в сантиметрах. Его и указываю для параметра ColumnsWidth с указанием 'cm'.
Правильно ли так делать или есть более изящный способ?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Ошибка при получение данных с сайта через API запросы - множественные запросы
 
Здравствуйте уважаемые форумчане!
Возникла потребность получения данных с одного сайта. Не знаю как это правильно называется, вроде парсинг)
"Покурив" руководство пользователя этого сайта и погуглив, накропал макрос, которые извлекает данные. Но если данных много, то сайт начинает ругаться на множественные запросы и соответственно не отдает нужные данные.  Если делать задержку методом Application.Wait то получение данных растягивается на N-ое время, и то не гарантирует что получится. И кириллицу тоже не хочет воспринимать(
Скрытый текст
Файл-пример прилагаю
Изменено: Artem1977 - 27.10.2022 10:33:44
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Изменить или убрать заголовок приложения
 
Здравствуйте. Как убрать или сделать свой заголовок у приложения? (обведено на картинке)
Если делаю Application.Caption=" ", то исчезает только правая часть, и остается показывать "Книга1 -"
Как сделать чтобы там был только мой текст, или его вообще не было?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Как скрыть Excel до полной прогрузки книги, а потом опять показать его
 
Здравствуйте.
В проекте использую свою, пользовательскую, ленту Ribbon, стандартную ленту полностью скрываю через редактор Ribbon.
Но при запуске книги стандартная лента появляется в процессе загрузки, а потом спустя некоторое время убирается и появляется уже моя.
Причем на разных компьютерах - разное поведение. Где-то это сразу происходит, а где-то 'подвисает' на несколько секунд. Как я понял зависит это от быстродействия компьютера.
В процедуру Workbook_Open вставлял Application.Visible = False/True. Все равно временно показывает стандартную ленту.
Как побороть это?
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Зависает Excel при установленной защите листа
 
Здравствуйте уважаемые форумчане.
Столкнулся с непонятной мне проблеме при работе в Microsoft Office 2010.
Устанавливаю защиту листа. Разрешаю следующее:
- выделение заблокированных ячеек
- выделение незаблокированных ячеек
- форматирование ячеек
- форматирование строк
- форматирование столбцов
- вставку гиперссылок.
При нажатии на кнопку выделения всех ячеек происходит зависание Excel с невозможностью дальнейшее работы до перезапуска приложения.
Опытным путем определил что это происходит если разрешаю вставку гиперссылок.
Проверил это же в Office 2016. Там происходит небольшое подтормаживание при этом действии, но программа не виснет и продолжает работать.  

Как с этим бороться???
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Обращение к имени переменной из строки типа string. Чтение и запись. Использование класса
 
Здравствуйте уважаемые форумчане.
Мне нужны переменные к которым бы я мог обратиться через текстовую строку, например в циклах так:  "Параметр" & i
Как я понял это можно сделать если создать переменные в модуле класса.

Создаю переменные через класс. В модуле класса Class1 пишу следующее:
Скрытый текст

В общий модуль Module1 пишу следующее:
Скрытый текст


В похожей теме для обращения по имени в виде строки предлагали добавить в модуль класса следующее:
Скрытый текст

тогда к переменной можно будет обратиться по имени в виде строки, т.е. так: Debug.Print Товар.Value("Знач_1")
Но при этом получается что когда вводим Товар. вываливается три варианта: мои переменные (Знач_1 и Знач_2) и переменная Value, т.е.:
Товар.Знач_1
Товар.Знач_2
Товар.Value

Вопросы:
Не понял что нужно добавить чтобы и присваивать можно было через имя в виде строки, т.е. работала бы конструкция типа Товар.Value("Знач_1")=666
Можно сделать так чтобы это Value не появлялось в списке выбора?

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Присвоение переменным значений из диспетчера имен
 
Здравствуйте уважаемые форумчане.

В целях хранения настроек пользовательской формы хочу использовать диспетчер имен - добавлять туда скрытно данные и считывать их оттуда при загрузке и использовании пользовательской формы(может и не правильно это, но это не предмет обсуждения).
Добавление идет так:
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 перед загрузкой формы
 
Здравствуйте уважаемые форумчане. Прошу помощи

Не обновляется панель Ribbon перед загрузкой пользовательской формы в модальном режиме. Обновление происходит после выгрузки пользовательской формы.
Можно сделать чтобы обновление происходило или смириться с этим?

Если пользовательская форма была загружена в немодальном режиме, то обновление ленты происходит перед загрузкой пользовательской формы. Но при этом становится доступным нажатия на нехорошие кнопки - Закрыть Книгу через крестик или через меню Файл. Т.е. хотелось чтобы форма загружалась в модальном режиме.

Файл прилагается.

Подробное объяснение:
Скрытый текст


Спасибо
Изменено: Artem1977 - 26.02.2022 05:33:45 (добавлен текст)
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Вычислить выражение заданное строкой String
 
Здравствуйте

Как можно вычислить выражение, если оно задано в виде строки 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. Разделение строки кода с созданием массива на две строки. Ошибка
 
Здравствуйте.
Заполняю массив таким способом:
Код
Dim aR() as Variant
a=[{1, 2, 3, 4, 5; 11, 22, 33, 44, 55; 111, 222, 333, 444, 555}]

Значений много и строка получается очень длинной.
Попытался сделать перенос строки используя символ переноса строки - пробел и нижнее подчёркивание.
Код
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. Как выполнить кодом?
 
Здравствуйте уважаемые форумчане.
Вопрос такой.
Имеется пользовательская форма, на которой размещены два фрейма. В каждом фрейме размещены два текстбокса. В процедурах TextBox_Exit для каждого текстбокса написан код, который должен выполняться при выходе из него.
При переходе между текстбоксами, принадлежащих одному фрейму, обработка события Exit происходит так, как и должно быть.
Однако при переходе между текстбоксами, принадлежащих разным фреймам, обработка события Exit не выполняется, а происходит только при закрытии формы(в данном случае)
Как в этом случае организовать такую обработку, чтобы Exit срабатывал?
Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Combobox. Не видно часть текста
 
Здравствуйте.
При использовании свойства ComboBox.TextAlign = 3 - fmTextAlignRight текст располагается в  ComboBox прижатым к правой стороне, однако часть текста оказывается скрытым за вертикальной полосой прокрутки. Можно это как то исправить? О каком параметре для этого я не знаю? Спасибо

P.s. Да, понимаю, что можно использовать левое расположение текста, что можно увеличить до необходимой ширины поле ComboBox.
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Отформатировать число в текстбоксе
 
Здравствуйте!

Не могу сообразить как отформатировать число в текстбокс чтобы было следующее:
Если число не имеет дробной части, то и не показывать её
Если число имеет дробную часть, но количество знаков после неё не превышает 9, то показывать столько знаков, сколько есть.
Если в дробной части количество знаков превышает 9, то ограничить вывод знаков после запятой 9.
Пример:
Что имеем                 Что должно быть
100                                        100
0,567                                     0,567
0,5679643578884328       0,567964359

Если использовать так: format(textbox1,"#0.########0"), то отсутствующие числа заполняются нулями, т.е. например должно быть 100 а выводится 100,000000000
И не было экспоненциального представления.

Спасибо
Изменено: Artem1977 - 05.04.2019 16:54:00
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Иногда не срабатывает макрос при обработке событий KeyPress
 
Доброго времени суток, уважаемые форумчане!

При обработке событий KeyPress для TextBox иногда не срабатывает макрос.
Т.е. если в коде написано например:

If InStr(1,TextBox1.text,",") Then KeyAscii=0 (если текстбокс содержит запятую, то отменить ввод)

То в большинстве случаев код корректно отрабатывается, но бывает когда он пропускает это и позволяет вводить "до посинения" (прямо мистика какая-то)

С чем это связано, что необходимо добавить в код?

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
При объявлении локальных переменных в процедурах обработки событий ругается на дублирование их
 
Здравствуйте! Столкнулся с такой ошибкой. При объявлении одинаковых переменных в разных событиях при работе с Текстбоксом ругается на дублирование. Т.е. нельзя ввести код наподобие:

Код
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
 
Здравствуйте уважаемые форумчане!

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

Код
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 но с другим расширением, т.е. не сопоставленного в системе
 
Доброго времени суток!

Для пущей секретности хочу изменить у книг Excel, где расположены данные, расширение на другое. Которое будет не сопоставлено в системе ни с какой программой. Как кодом VBA открыть такой файл? Если так:
Код
Shell "c:\Program Files\Microsoft Office\Office14\excel.exe d:\БД.aaa"
то ругается, что расширение отличается и просит подтвердить открытие.
Как сделать чтобы это подтверждение не запрашивалось? А если этот файл еще и запаролен, то как тогда быть?
Наверное перед открытием можно вносить запись в реестр а после закрытия удалять, но это наверное не будет работать если ограничены права пользователя администратором? Как быть?

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
UserForm и открытие других книг
 
Доброго времени суток!

Помогите разобраться вот с каким вопросом.
Имеется книга Excel. В ней необходимо загрузить UserForm в модальном режиме, т.е. чтобы пользователь не мог никуда "тыкать" пока не закроет эту форму. Из этой формы(назовём её главной) пользователь будет открывать другие формы(вспомогательные), тоже в модальном режиме, выполнять в них действия и возвращаться к главной форме. Как сделать чтобы при этом можно было открыть другую книгу Excel и она отображалась?, ведь модальность формы не даёт открыть другую книгу. И как сделать чтобы в процессе работы вспомогательных форм обеспечить открытие книг(эти формы работают с данными из этих книг) в скрытом режиме(т.е. чтобы пользователь не видил, что формой открывается какая-то книга)
Напрашивается вариант открытие форм в немодальном режиме, но при этом у пользователя будет возможность "тыкать" там где не надо :) , а этого охота избежать

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Передача текста из Excel в Word с сохранением форматирования текста
 
Здравствуйте!

Из листа Эксель в Word передаю данные:
Код
wd.Paragraphs(1).Range.Text = Sheets("Лист1").Range("A1")
Но в этой ячейке у меня отформатированный текст - расставлены степени у чисел(Формат-Шрифт ячеек-Надстрочный)
Соответственно при передаче форматирование теряется. Как это можно исправить?

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Функция форматирующая текст оставляет текст в ячейке пустым
 
Здравствуйте Форумчане!

Написал функцию которая форматирует текст, переводя в указанном месте текст в верхний регистр. Но после выполнения функции текст в ячейке остаётся пустым, хотя в процессе выполнения видно как он вносится и форматируется. Почему так, что не учёл?

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Обращение к программно созданным контролам
 
Доброго времени суток, уважаемые форумчане! Прошу помощи.

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

Теперь нужно обработать эти чекбоксы, т.е. нужно как то в цикле пройтись по всем чекбоксам, и в зависимости от свойства .Value и .Caption выполнить определенные действия(алгоритм пока обдумывается).

Подскажите пожалуйста как это организовать, можно ли как то упростить код?

Спасибо

p.s. файл весит 160 кб. не даёт загрузить. упаковка тоже не помогает. может просто код выложить?
Изменено: Artem1977 - 10.11.2017 07:39:25
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Совмещение пользовательской функции и условного форматирования
 
Доброго времени суток, форумчане!

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

Что-то типа такого:

Код
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
Описание пользовательской функции
 
Доброго времени форумчане!

Поиском ответа на свой вопрос не нашел, поэтому спрашиваю.
Создал свою функцию, зарегистрировал её, добавил для неё описание(нашёл на форуме как это сделать).
Всё ок, всё работает. Но терзают смутные сомнения :)

Сама функция:

Код
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


Смущает то, что в значениях указываемых в табличке конечное значение разное(используется же рандомайзер  :D ) ну и результат в ячейке отличается от того что было в табличке(обведено красным в скриншоте).
В стандартной функции СЛУЧМЕЖДУ() там указывается просто "переменное".
Можно ли и в своей функции так сделать?

Спасибо
Microsoft Office 2010 64-bit, Windows 10 Professional 64-bit
Страницы: 1 2 След.
Наверх