Vb and vba program settings что это за программа

Visual Basic и Системный Реестр Windows.

А теперь приступим к работе.

Запись значений с помощью оператора SaveSetting

Дважды щелкните на командной кнопке SaveSetting и в раскрывшемся окне введите следующий код:

Private Sub Command1_Click()
SaveSetting App.Title, «PortSettings», «Connect using», «COM1»
End Sub

***При выполнении нижеследующих действий объявите в разделе Declaration формы переменные CrtMsg As String, MySet As Variant

Private Sub Command2_Click()
MySet = GetSetting(App.Title, «PortSettings», «Connect using», CrtMsg)
Debug.Print MySet
End Sub

***Предварительно добавте следующий код к имеющемуся коду командной кнопки
SaveSetting:
SaveSetting App.Title, «PortSettings», «Data bits», «8»
SaveSetting App.Title, «PortSettings», «Parity», «None»
SaveSetting App.Title, «PortSettings», «Stop bits», «1»
SaveSetting App.Title, «PortSettings», «Flow control», «None»
Произведите операцию записи данных в Системный Реестр.

Private Sub Command3_Click()
Dim intSettings As Integer
MySet = GetAllSettings(App.Title, «PortSettings»)
For intSettings = LBound(MySet, 1) To UBound(MySet, 1)
Debug.Print MySet(intSettings, 0), MySet(intSettings, 1)
Next intSettings
End Sub

Connect using COM1
Bits per second 2400
Data bits 8
Parity None
Stop bits 1
Flow control None

Теперь расмотрим подробнее, что Вы написали в окне кода. Синтаксис оператора GetAllSetting следующий:

Удаление раздела параметров с помощью оператора DeleteSetting

Private Sub Command4_Click()
DeleteSetting App.Title,»PortSettings», «Flow control »
End Sub

Теперь расмотрим подробнее, что Вы написали в окне кода. Синтаксис оператора DeleteSetting следующий:

Если Вы захотите удалить сразу весь подраздел, а не некоторые параметры, то для этого используйте следующий синтаксис оператора DeleteSetting :

DeleteSetting VBKeyName, Section ;

А если Вы захотите убрать вообще все Ваши установки из Сиастемного Реестра, то воспользуйтесь следующим кодом:

Private Sub Command4_Click()
DeleteSetting App.Title
End Sub

***Внимание. Пользуйтесь оператором DeleteSetting очень осторожно!

Источник

Vb and vba program settings что это за программа

О себе
Словами
Фото!
Программирование
Visual Basic
Download
Trial Ware?
Plus
Справка по RegMon
Справка по FileMon

Записал я их уже в виде REG-файлов типа:

Если при применении MMControl для работы с Audio CD Вам понадобится быстро перейти в нужную позицию диска, почему бы Вам не воспользоваться функцией RGB 🙂 для этого. Примерный вариант кода:

With MMControl1
.DeviceType = «cdaudio» ‘Только раз
.Command = «open» ‘Только раз
.TimeFormat = mciFormatTmsf ‘Обязательно, но если нигде не менять
‘по коду, достаточно только один раз при открытии CD player’а
.Command = «pause» ‘Не всегда нужно, но желательно
.To = RGB(3, 2, 23) ‘3 дорожка 2 минута 23 секунда (поставьте свои)
.Wait = True ‘Не брезгуйте, а то с некоторыми приводами
‘(например Mitsumi) были глюки!
.Command = «seek»
.Command = «play»
End With

Теперь загляните в реестр с помощью какого-либо редактора и увидите гораздо более сложную структуру подключей. Если у Вас очень много параметров хранится в реестре, то можно их разместить более структурировано (во сказанул!), не сбивая все в одну кучу или, как в примере выше, создавать отдельные наборы параметров для разных версий вашей программы (такое практикуется многими программистами).

Кроме того, любые попытки записать или прочесть значение по умолчанию передачей пустой строки («») в качестве параметра Key обламываются с ошибкой №5. Неужто не обойдем? А то 🙂 Да просто нужно подставлять туда или vbNullChar или Chr$(0), что, собственно, одно и то же. Например:

‘Запись значения по умолчанию
Call SaveSetting(«CompanyName», «SoftwareName», vbNullChar, «Ver.1.5.7»)
.
‘Чтение значения по умолчанию
strVer = GetSetting(«CompanyName», «SoftwareName», vbNullChar)

Думаю, что Вы и сами уже догадались, но на всякий случай все-таки скажу: если Вы замените на vbNullChar еще и первый параметр этих 2-х методов, тогда Вы, естественно, сможете записывать и считывать значения Реестра непосредственно в разделе HKCU\Software\VB and VBA Program Settings. Ну, если это Вам, конечно, на какой-нибудь ляд нужно 🙂

Каждый VB контрол имеет большое число зачастую неиспользуемых свойств. У меня всегда был соблазн их применения в качестве переменных, констант и даже объектов внутри программ. Простой пример: при необходимости хранить графику, которая будет в процессе динамически выводиться на форму (меняющуюся иконку окна программы, указатель мыши и др.) имейте в виду, что хранилище для них обычно уже в избытке есть на форме. Простая кнопка (CommandButton) имеет 3 свойства типа Picture, в которые можно загрузить любую графику программно или на этапе конструирования. Если Вы не используете кнопку со стилем 1-Graphical, эти картинки нигде не отобразятся. Это избавит Вас от добавления на форму объектов типа Image, в которые обычно загоняют такую графику когда нежелательно использовать ImageList. Дополнительный плюс, что графику можно привязать к конкретному управляющему элементу, если это нужно по коду, например для отображения особого указателя курсора мыши при перетаскивании над этим элементом. Или например такой код:

Private Sub cmdStates_Click(Index As Integer)
Set Me.Picture = cmdStates(Index).Picture
Set Me.Icon = cmdStates(Index).DownPicture
Set picPresident.Picture = cmdStates(Index).DisabledPicture
Me.Caption = «Государство » & cmdStates(Index).Caption & _
IIf(cmdStates(Index).UseMaskColor, _
» (член НАТО)», » (не входит в НАТО)»)
End Sub

Dim i As Long
Private Sub cmdDefault_Click()
For i = Settings.LBound To Settings.UBound
Settings(i).Value = Settings(i).WhatsThisHelpID
Next
End Sub

Private Sub Form_Load()
For i = Settings.LBound To Settings.UBound
Settings(i).Value = GetSetting(«Myprog», «Settings», _
Settings(i).Tag, Settings(i).WhatsThisHelpID)
Next
End Sub

Private Sub Form_Unload(Cancel As Integer)
For i = Settings.LBound To Settings.UBound
Call SaveSetting(«Myprog», «Settings», _
Settings(i).Tag, Settings(i).Value)
Next
End Sub

Для работы этого кода при создании массива Settings в таг каждого чекбокса записываем соответствующее имя параметра в реестре, а в свойство WhatsThisHelpID (Вы его когда-нибудь используете? ежели да, то замените его, например, на MaskColor :)) запишите значение по умолчанию для данной настройки. Кнопка CmdDefault предназначена для сброса всех настроек в значение по умолчанию.

Ускоряем VB программу с помощью ASM-а

Да, не очень быстры программы на Бейсике и тут даже оптимизация кода и активное использование Win32API не очень порой помогают. Жаль, что нельзя, как например это делается в Дельфи, внедрять ассемблер непосредственно в код вашей программы. Но, как выясняется, есть способ использовать ASM-код с VB уже в готовом откомпилированном виде (в машинных кодах). Суть этой методы такова: откомпилированный ASM-код Вы или сохраняется в ресурсе программы, или записывается как константу в виде строки шестнадцатеричных символов. После запуска программы этот код загружается в память (во втором случае нужно еще и пребразовать строку с кодом в байтовый массив). Теперь с помощью API-функции CallWindowProc этот код приводится в действие. Мудрено? Но эффект просто поразительный! Некоторые вещи можно ускорить таким методом в сотни раз.
А чтобы Вы могли это прочувствовать, предлагаю Вам изучить и опробовать три демо-программы в исходниках, которые мне повезло найти в сети.
Первая программа самая простая из троицы. Это удобный 64-разрядный Hex/Dec/Bin конвертер. Именно в этой программе показан метод загрузки машинного кода из пользовательского ресурса. Вторая демонстрирует, как внедрение ASM (длина машинного кода всего 94 байта(!)) ускоряет операцию шифрования файлов функцией XOR в сотни раз по сранению с чистым VB. А третья вообще вызывает одни восторги. Огромное количество графических эффектов и преобразований она производит так быстро, как, мне кажется, не всякая настоящая рисовалка может это делать. Кроме того в программе есть несложные (уже не на ассемблере, а на WinAPI) реализации диалоговых окон отрытия и сохранения файлов, а также диалога выбора цвета. Есть также функция отмены и вариант работы с палитрами. В общем смотрите и наслаждайтесь 🙂

Функция InStrB не только для поиска текста

Private Sub cmdTestForEXIF_Click()

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

Несмотря на то, что внутренний набор функций для работы со строками в VB весьма широк, все равно в некоторых случаях разборки текста его Вам может оказаться недостаточно. Это касается, например, поиска определенного текста по сложной маске, проверки введенных пользователем данных на соответствие некоторому шаблону и др. Вот именно в такой ситуации Вас выручит использование Регулярных выражений, реализованных в объекте Regexp. Regexp не является внутренним объектом VB, но он давно уже реализован во всех последних версиях WSH. И грех будет этим не воспользоваться. Надо сказать, что если Вы раньше не работали с Регулярными выражениями, то MSDN-овская справка, их описывающая, может Вам показаться просто китайской (точнее Английской:-) грамотой. Кроме того, как выяснилось, она содержит откровенные ошибки и просто пропуски (посмотрите, например, что там есть про свойство Multiline). Пытался я найти русифицированный вариант этой доки, но ничего реального не нашел. Так, отдельные фрагменты только. Ну вот и решил я (блин, ну придет же такое в мою глупую башку!) сделать свой перевод. И сделал. Естественно, при переводе подправил там все, что смог. В результате получилась компактная, но при этом IMHO полноценная справка по Регулярным выражениям, причем это не только описание всех методов и свойств объекта RegExp с примерами их использования, но плюс еще и вводные статьи, достаточно подробно объясняющие общие идеи применения Регулярных выражений. Я не думаю, что все было сделано мною идеально (хотя, почему бы и нет :-)), посему принимаются любые замечания. Буду исправлять, чесслово.

Перед проверкой примеров в VB IDE не забудьте в свойствах проекта сослаться на объект RegExp. Для этого в Project >> References подключите ссылку на «Microsoft VBScript Regular Expressions 5.5» (номер версии может быть и ниже если установлена более старая версия WSH). Вроде бы все просто, но вот у VB5 почему-то с этим есть какие-то проблемы, поэтому там будет проще отрыть в Блокноте файл проекта (.VBP) и в его начале добавить следующую строку:

Этого будет вполне достаточно.

Я, конечно, понимаю, что пока инфы не густо, но начало положено и продолжение следует. А, главное, что ссылка на «Visual Basic» теперь работает 🙂

Источник

Visual Basic и Системный Реестр Windows (исходники)

А теперь приступим к работе.

Запись значений с помощью оператора SaveSetting

Дважды щелкните на командной кнопке SaveSetting и в раскрывшемся окне введите следующий код:

Private Sub Command1_Click()
SaveSetting App.Title, «PortSettings», «Connect using», «COM1»
End Sub

***Если Вы правильно выполнили все что написано, но ничего не увидели, не волнуйтесь. Нажмите клавишу F5 (Refresh) и перед вами появится искомая запись.

Чтение значений с помощью функции GetSetting()

***При выполнении нижеследующих действий объявите в разделе Declaration формы переменные CrtMsg As String, MySet As Variant

Private Sub Command2_Click()
MySet = GetSetting(App.Title, «PortSettings», «Connect using», CrtMsg)
Debug.Print MySet
End Sub

Чтение значений с помощью функции GetAllSettings()

***Предварительно добавте следующий код к имеющемуся коду командной кнопки
SaveSetting:
SaveSetting App.Title, «PortSettings», «Data bits», «8»
SaveSetting App.Title, «PortSettings», «Parity», «None»
SaveSetting App.Title, «PortSettings», «Stop bits», «1»
SaveSetting App.Title, «PortSettings», «Flow control», «None»
Произведите операцию записи данных в Системный Реестр.

Private Sub Command3_Click()
Dim intSettings As Integer
MySet = GetAllSettings(App.Title, «PortSettings»)
For intSettings = LBound(MySet, 1) To UBound(MySet, 1)
Debug.Print MySet(intSettings, 0), MySet(intSettings, 1)
Next intSettings
End Sub

Connect using COM1
Bits per second 2400
Data bits 8
Parity None
Stop bits 1
Flow control None

Теперь расмотрим подробнее, что Вы написали в окне кода. Синтаксис оператора GetAllSetting следующий:

Остальные операторы помогают обработать массив значений и получить информацию в удобном виде.

Удаление раздела параметров с помощью оператора DeleteSetting

Private Sub Command4_Click()
DeleteSetting App.Title,»PortSettings», «Flow control «
End Sub

Теперь расмотрим подробнее, что Вы написали в окне кода. Синтаксис оператора DeleteSetting следующий:

Если Вы захотите удалить сразу весь подраздел, а не некоторые параметры, то для этого используйте следующий синтаксис оператора DeleteSetting :

DeleteSetting VBKeyName, Section ;

А если Вы захотите убрать вообще все Ваши установки из Сиастемного Реестра, то воспользуйтесь следующим кодом:

Private Sub Command4_Click()
DeleteSetting App.Title
End Sub

***Внимание. Пользуйтесь оператором DeleteSetting очень осторожно!

Источник

Автоматизация рутины в Microsoft Excel при помощи VBA

В этом посте я расскажу, что такое VBA и как с ним работать в Microsoft Excel 2007/2010 (для более старых версий изменяется лишь интерфейс — код, скорее всего, будет таким же) для автоматизации различной рутины.

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

VBA (Visual Basic for Applications) — это упрощенная версия Visual Basic, встроенная в множество продуктов линейки Microsoft Office. Она позволяет писать программы прямо в файле конкретного документа. Вам не требуется устанавливать различные IDE — всё, включая отладчик, уже есть в Excel.

Еще при помощи Visual Studio Tools for Office можно писать макросы на C# и также встраивать их. Спасибо, FireStorm.

Сразу скажу — писать на других языках (C++/Delphi/PHP) также возможно, но требуется научится читать, изменять и писать файлы офиса — встраивать в документы не получится. А интерфейсы Microsoft работают через COM. Чтобы вы поняли весь ужас, вот Hello World с использованием COM.

Поэтому, увы, будем учить Visual Basic.

Чуть-чуть подготовки и постановка задачи

Итак, поехали. Открываем Excel.

Для начала давайте добавим в Ribbon панель «Разработчик». В ней находятся кнопки, текстовые поля и пр. элементы для конструирования форм.

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программаVb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Теперь давайте подумаем, на каком примере мы будем изучать VBA. Недавно мне потребовалось красиво оформить прайс-лист, выглядевший, как таблица. Идём в гугл, набираем «прайс-лист» и качаем любой, который оформлен примерно так (не сочтите за рекламу, пожалуйста):

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

То есть требуется, чтобы было как минимум две группы, по которым можно объединить товары (в нашем случае это будут Тип и Производитель — в таком порядке). Для того, чтобы предложенный мною алгоритм работал корректно, отсортируйте товары так, чтобы товары из одной группы стояли подряд (сначала по Типу, потом по Производителю).

Результат, которого хотим добиться, выглядит примерно так:

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Разумеется, если смотреть прайс только на компьютере, то можно добавить фильтры и будет гораздо удобнее искать нужный товар. Однако мы хотим научится кодить и задача вполне подходящая, не так ли?

Кодим

Для начала требуется создать кнопку, при нажатии на которую будет вызываться наша програма. Кнопки находятся в панели «Разработчик» и появляются по кнопке «Вставить». Вам нужен компонент формы «Кнопка». Нажали, поставили на любое место в листе. Далее, если не появилось окно назначения макроса, надо нажать правой кнопкой и выбрать пункт «Назначить макрос». Назовём его FormatPrice. Важно, чтобы перед именем макроса ничего не было — иначе он создастся в отдельном модуле, а не в пространстве имен книги. В этому случае вам будет недоступно быстрое обращение к выделенному листу. Нажимаем кнопку «Новый».

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программаVb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

И вот мы в среде разработки VB. Также её можно вызвать из контекстного меню командой «Исходный текст»/«View code».

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программаVb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Перед вами окно с заглушкой процедуры. Можете его развернуть. Код должен выглядеть примерно так:

Напишем Hello World:

Sub FormatPrice()
MsgBox «Hello World!»
End Sub

И запустим либо щелкнув по кнопке (предварительно сняв с неё выделение), либо клавишей F5 прямо из редактора.

Тут, пожалуй, следует отвлечься на небольшой ликбез по поводу синтаксиса VB. Кто его знает — может смело пропустить этот раздел до конца. Основное отличие Visual Basic от Pascal/C/Java в том, что команды разделяются не ;, а переносом строки или двоеточием (:), если очень хочется написать несколько команд в одну строку. Чтобы понять основные правила синтаксиса, приведу абстрактный код.

Примеры синтаксиса

Dim res As sTRING ‘ Регистр в VB не важен. Впрочем, редактор Вас поправит
Dim i As Integer
‘ Цикл всегда состоит из нескольких строк
For i = 1 To 10
res = res + CStr(i) ‘ Конвертация чего угодно в String
If i = 5 Then Exit For
Next i

Dim x As Double
x = Val( «1.234» ) ‘ Парсинг чисел
x = x + 10
MsgBox x

On Error GoTo Err ‘ При ошибке перейти к метке Err
x = 5 / 0
MsgBox «OK!»
GoTo ne

ne:
On Error GoTo 0 ‘ Отключаем обработку ошибок

‘ Циклы бывает, какие захотите
Do While True
Exit Do

Loop ‘While True
Do ‘Until False
Exit Do
Loop Until False
‘ А вот при вызове функций, от которых хотим получить значение, скобки нужны.
‘ Val также умеет возвращать Integer
Select Case LengthSqr(Len( «abc» ), Val( «4» ))
Case 24
MsgBox «0»
Case 25
MsgBox «1»
Case 26
MsgBox «2»
End Select

Грабли-1. При копировании кода из IDE (в английском Excel) есь текст конвертируется в 1252 Latin-1. Поэтому, если хотите сохранить русские комментарии — надо сохранить крокозябры как Latin-1, а потом открыть в 1251.

Грабли-2. Т.к. VB позволяет использовать необъявленные переменные, я всегда в начале кода (перед всеми процедурами) ставлю строчку Option Explicit. Эта директива запрещает интерпретатору заводить переменные самостоятельно.

Грабли-3. Глобальные переменные можно объявлять только до первой функции/процедуры. Локальные — в любом месте процедуры/функции.

Еще немного дополнительных функций, которые могут пригодится: InPos, Mid, Trim, LBound, UBound. Также ответы на все вопросы по поводу работы функций/их параметров можно получить в MSDN.

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

Кодим много и под Excel

В этой части мы уже начнём кодить нечто, что умеет работать с нашими листами в Excel. Для начала создадим отдельный лист с именем result (лист с данными назовём data). Теперь, наверное, нужно этот лист очистить от того, что на нём есть. Также мы «выделим» лист с данными, чтобы каждый раз не писать длинное обращение к массиву с листами.

Sub FormatPrice()
Sheets( «result» ).Cells.Clear
Sheets( «data» ).Activate
End Sub

Работа с диапазонами ячеек

Вся работа в Excel VBA производится с диапазонами ячеек. Они создаются функцией Range и возвращают объект типа Range. У него есть всё необходимое для работы с данными и/или оформлением. Кстати сказать, свойство Cells листа — это тоже Range.

Примеры работы с Range

Sheets( «result» ).Activate
Dim r As Range
Set r = Range( «A1» )
r.Value = «123»
Set r = Range( «A3,A5» )
r.Font.Color = vbRed
r.Value = «456»
Set r = Range( «A6:A7» )
r.Value = «=A1+A3»

Теперь давайте поймем алгоритм работы нашего кода. Итак, у каждой строчки листа data, начиная со второй, есть некоторые данные, которые нас не интересуют (ID, название и цена) и есть две вложенные группы, к которым она принадлежит (тип и производитель). Более того, эти строки отсортированы. Пока мы забудем про пропуски перед началом новой группы — так будет проще. Я предлагаю такой алгоритм:

Для упрощения работы рекомендую определить следующие функции-сокращения:

Function GetCol(Col As Integer ) As String
GetCol = Chr(Asc( «A» ) + Col)
End Function

Далее определим глобальную переменную «текущая строчка»: Dim CurRow As Integer. В начале процедуры её следует сделать равной единице. Еще нам потребуется переменная-«текущая строка в data», массив с именами групп текущей предыдущей строк. Потом можно написать цикл «пока первая ячейка в строке непуста».

Глобальные переменные

Option Explicit ‘ про эту строчку я уже рассказывал
Dim CurRow As Integer
Const GroupsCount As Integer = 2
Const DataCount As Integer = 3

FormatPrice

Sub FormatPrice()
Dim I As Integer ‘ строка в data
CurRow = 1
Dim Groups(1 To GroupsCount) As String
Dim PrGroups(1 To GroupsCount) As String

Теперь надо заполнить массив Groups:

На месте многоточия

И создать заголовки:

На месте многоточия в предыдущем куске

For I2 = 1 To GroupsCount
If Groups(I2) <> PrGroups(I2) Then
Dim I3 As Integer
For I3 = I2 To GroupsCount
AddHeader I3, Groups(I3)
Next I3
Exit For
End If
Next I2

Не забудем про процедуру AddHeader:

Перед FormatPrice

Теперь надо перенести всякую информацию в result

Подогнать столбцы по ширине и выбрать лист result для показа результата

После цикла в конце FormatPrice

Sheets( «Result» ).Activate
Columns.AutoFit

Всё. Можно любоваться первой версией.

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Некрасиво, но похоже. Давайте разбираться с форматированием. Сначала изменим процедуру AddHeader:

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Осталось только сделать границы. Тут уже нам требуется работать со всеми объединёнными ячейками, иначе бордюр будет только у одной:

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Поэтому чуть-чуть меняем код с добавлением стиля границ:

Select Case Ty
Case 1 ‘ Тип
.Font.Bold = True
.Font.Size = 16
.Borders(xlTop).Weight = xlThick
Case 2 ‘ Производитель
.Font.Size = 12
.Borders(xlTop).Weight = xlMedium
End Select
.Borders(xlBottom).Weight = xlMedium ‘ По убыванию: xlThick, xlMedium, xlThin, xlHairline
End With
CurRow = CurRow + 1
End Sub

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

Осталось лишь добится пропусков перед началом новой группы. Это легко:

В начале FormatPrice

Dim I As Integer ‘ строка в data
CurRow = 0 ‘ чтобы не было пропуска в самом начале
Dim Groups(1 To GroupsCount) As String

В цикле расстановки заголовков

If Groups(I2) <> PrGroups(I2) Then
CurRow = CurRow + 1
Dim I3 As Integer

Vb and vba program settings что это за программа. Смотреть фото Vb and vba program settings что это за программа. Смотреть картинку Vb and vba program settings что это за программа. Картинка про Vb and vba program settings что это за программа. Фото Vb and vba program settings что это за программа

В точности то, что и хотели.

Надеюсь, что эта статья помогла вам немного освоится с программированием для Excel на VBA. Домашнее задание — добавить заголовки «ID, Название, Цена» в результат. Подсказка: CurRow = 0 CurRow = 1.

Файл можно скачать тут (min.us) или тут (Dropbox). Не забудьте разрешить исполнение макросов. Если кто-нибудь подскажет человеческих файлохостинг, залью туда.

Спасибо за внимание.

Буду рад конструктивной критике в комментариях.

UPD: Перезалил пример на Dropbox и min.us.

UPD2: На самом деле, при вызове процедуры с одним параметром скобки можно поставить. Либо использовать конструкцию Call Foo(«bar», 1, 2, 3) — тут скобки нужны постоянно.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *