Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: FAQ_VB/VBA (beta)  (Прочитано 24540 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« : 25-04-2006 02:01 » 

Q:
Как подсчитать сумму полей в столбце таблицы Access


A:
Сделай SQL-запрос
select sum(Поле1),sum(Поле2),sum(Поле3) from Таблица1
« Последнее редактирование: 25-04-2006 07:06 от RomCom » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 25-04-2006 05:18 » 

Q:
Добавление узлов в TreeView


A:
Код:
Dim parent, chld As Node

 With TreeView1.Nodes
   'добавлаем первый главный узел
   Set parent = .Add(, , , "Node1")
   'раскрываем Node1
   parent.Expanded = True
   'добавлаем подузел для Node1
   Set chld = .Add(parent, tvwChild, , "Node1_1")

   'добавлаем два подузла для Node1_1
   Call .Add(chld, tvwChild, , "Node1_1_1")
   Call .Add(chld, tvwChild, , "Node1_1_2")
 
   'добавлаем второй главный узел
   Call .Add(, , , "Node2") 
 End With
« Последнее редактирование: 06-12-2007 17:49 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 25-04-2006 05:23 » 

Q:
Преобразование TextBox1.Text в числовой тип


A:
Два варианта.
1) Val(TextBox1.Text) - выдает результат в любом случае. пытается "выжить" из строки число. например: Val("123 ш 9")  вернет 123.
2) Функции семейства "Type Conversion Functions":
CDbl, CByte, CCur, CDec, CInt, CLng, CSng - в случае не корректности строки вызывают Exception
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 25-04-2006 05:26 » 

Q:
Как запретить просмотр макроса VBA


A:
В VBA IDE, вызвать свойство проекта (Tools --> Project Properties...). На закладке "Protection" поставить галочку "Lock project for viewing" и устанавить пароль в поле "Password to view project properties".
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 25-04-2006 05:40 » 

Q:
Как в VB работать с com-портом?


A:
Через ActiveX объект MSCOMM32 (MSCOMM32.OCX).
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 25-04-2006 07:05 » 

Q:
Как сделать SQL-запрос к таблице Access в VBA


A:
Код:
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("select Поле1, sum(Поле2) from Таблица1 group by Поле1")
name = rs.Fields("Поле1").Value
sum = rs.Fields(1).Value
rs.Close

В итоге получим в name значение поля "Поле1", а в sum сумму по полю "Поле2".
« Последнее редактирование: 25-04-2006 07:09 от RomCom » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 25-04-2006 07:51 » 

Q:
В цикле дать возможность программе перерисовать окно, обработать нажатия клавиатуры или мыши


A:
В теле цикла необходимо вызвать функцию DoEvents
Код:
For i = 1 To 100
 'что делаем
 ....
 DoEvents
Next
« Последнее редактирование: 06-12-2007 17:50 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 25-04-2006 08:11 » 

Q:
Найти (заменить) в MSWord текст с определеным форматированием


A:
Приведенный ниже код ищет в документе текст с цветом шрифта "Изумрудный" и изменяет цвет шрифта на "белый", цвет фона на "фиолетовый"
Код:
 With Selection.Find
    .ClearFormatting   'очищаем формат поиска
    .Text = ""
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindContinue
    .Format = True
    .MatchCase = False
    .MatchWholeWord = False
    .MatchWildcards = False
    .MatchSoundsLike = False
    .MatchAllWordForms = False
    .Font.Color = wdColorSeaGreen 'цвет Изумрудный   
  While .Execute
    If .Found Then
        Selection.Font.Color = wdColorWhite ' белый
        Selection.Range.HighlightColorIndex = wdViolet 'фиолетовый
    End If
  Wend
 End With
« Последнее редактирование: 06-12-2007 17:51 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 28-04-2006 04:53 » 

Q:
Как в Excel узнать где кончается таблица, адрес последней ячейки?


A:
С помощью функции SpecialCells можно узнать адрес правой нижней ячейки
Код:
Dim rng As Range
Dim LastAdr, LastRow, LastColumn As Integer
Set rng = ActiveSheet.Cells.SpecialCells(xlLastCell)
LastAdr = rng.Address(RowAbsolute = True, ColumnAbsolute = True) ' Адрес правой нижней ячейки
LastColumn = rng.Column 'Номер правого столбца таблицы
LastRow = rng.Row 'Номер последней строки таблицы
« Последнее редактирование: 06-12-2007 17:51 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 28-04-2006 05:50 » 

Q:
Есть ли в VBA какая-нибудь стандартная функция для преобразования hex-числа в десятичное?
Есть функция val(), но она, к сожалению, некорректно работает с числами в диапазоне H8000 (дес. - 32768) - HFFFF (дес. - 65535): возвращает отрицательное значение.


A:
Функция Val() работает корректно. Отрицательные значения получаются из-за того что все числовые типы данных в VBA знаковые. "H8000" будет равняться "-32768" для 32 битного целого типа сознаком (Integer).
Что бы преобразовать строку из hex-числа в десятичное, достаточно просто присвоить значение строки переменной числового типа.
Код:
Dim b As Double, a As String
a = InputBox("Введите hex-число:")
b = "&H" & a
Debug.Print b
« Последнее редактирование: 01-05-2006 08:25 от RomCom » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 02-05-2006 02:57 » 

Q:
Мне надо сделать так что б в Excel при нажатие на любую ячейку из диапазона (например B2:V2), появлялось диалоговое окно, которое я создам на VBA.


A:
Необходимо обработать событие Worksheet_SelectionChange для листа:
Код:
Private Const startCol As Integer = 2 'начальный диапазон колонок (В)
Private Const endCol As Integer = 22 'конечный диапазон колонок (V)
Private Const startRow As Integer = 2 'начальный диапазон строк
Private Const endRow As Integer = 2 'конечный диапазон строк

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Column >= startCol And Target.Column <= endCol Then
  If Target.Row >= startRow And Target.Row <= endRow Then
   UserForm1.Show 'вызов диалогового окна
  End If
 End If
End Sub
« Последнее редактирование: 06-12-2007 17:52 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #11 : 02-05-2006 04:59 » new

Q:
У меня в Excel (Word) есть на форме textbox, value-значение которого например равно 100, как сохранить измененное значение textboxа, например я ввела 150 и надо чтоб при следующем запуске программы в textboxе было уже 150?


A:
Для хранения ползовательских данных есть специальная коллекция CustomDocumentProperties.
Приведенный ниже код сохраняет в этой коллекции текущую дату и время при открытии и показывает это значение при следующем открытии.
Код:
Private Sub Workbook_Open()
 If ThisWorkbook.CustomDocumentProperties.Count > 0 Then
   MsgBox "Last Open Date " & ThisWorkbook.CustomDocumentProperties(1).Value
   ThisWorkbook.CustomDocumentProperties(1).Value = Now
 Else
  Call ThisWorkbook.CustomDocumentProperties.Add("LastOpenDate", False, msoPropertyTypeDate, Now, False)
 End If
 ThisWorkbook.Save
End Sub
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 02-05-2006 05:35 » 

Q:
Как в Excel (Word) узнать количество дней (недель) прошедших с начала года, квартал и т.д.?


A:
Для этого существует функция DatePart(interval, date).
Код:
MsgBox DatePart("ww", Now) ' - покажет кол. прошедших недель с начала года

Другие полезные значения для параметра interval:
q - Получить номер квартала
y - Количество дней прошедших с начала года
w - День недели
ww - Количество недель прошедших с начала года
« Последнее редактирование: 06-12-2007 17:53 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #13 : 02-05-2006 05:50 » 

Q:
Как в Excel (Word) из строки поучить слова разделенные определенным символом (например пробелом)?


A:
Исползуйте функцию Split для разделения строки в массив (Array).
Следующий пример разделяет строку на слова:
Код:
wdA=Split(ActiveCell.Value, " ", , vbBinaryCompare)
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #14 : 02-05-2006 06:23 » 

Q:
Как узнать есть ли в числе запятая (целое оно или с дробной частью)?


A:
Самый простой способ:
x- число
Код:
 if x=round(x) then
  x - без запятой
 else
  x - с запятой
 end if
Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
RomCom
Опытный

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 02-05-2006 06:41 » 

Q:
Как в Excel (Word) из VBA читать данные из текстового файла?


A:
Для этого можно использовать стандартные для VB функции Open, Line, Close.
Пример чтения из файла:
Код:
Dim InputData
Open "file.txt" For Input As #1    ' Открываем файл для чтения
Do While Not EOF(1)    ' проверяем на конец файла.
    Line Input #1, InputData    ' Считываем строку.
    Debug.Print InputData    ' показываем строку в окне отладчика.
Loop
Close #1    ' Закрываем файл
« Последнее редактирование: 06-12-2007 17:53 от Алексей1153++ » Записан

R.O.M.C.O.M.: Robotic Operational Mathematics and Ceaseless Observation Machine
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines