Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
VBA Найти среднее значение элементов второго столбца матрицы найти среднее значение элементов 2-го столбца, максимальное значенне этих элементов и количество значений меньших 78. Вот что у меня получилось, но оно не работает чего-то, помогите пожалуйста Option Base 0 ' Опис змінних рівня модуля Dim Список(3, 2) As Variant, i As Integer Dim СписокВиводу(3) As Variant Private Sub CommandButton1_Click() 'процедура проведення обчислень з вибраними... https://www.cyberforum.ru/ vba/ thread713612.html Обращение к файлам rtf из VBA Word для копирования содержимого VBA
Кто знает каким образом можно копировать части rtf файла в ворд? Как пример кусочек кода: fname = "C:\НАКАЗ.rtf" Set doc2 = ActiveDocument ActiveDocument.Content.Text = "" Set doc1 = Documents(fname) 'здесь возникает ошибка -"неправильный тип файла" doc1.Open FileName:=fname s = doc1.Content.Text В дальнейшем нужно периодически обращаться к файлу rtf...
VBA Автосортировка по указаному номеру столбца Всем доброго времени суток. У меня возникла такая проблема. Не знаю как осуществить следующее. Есть файл эксель, там много столбцов. И есть ячейка. Если мы укажем в ячейке, к примеру 1, сортируется столбец А (по возрастанию), если - 4 , то D и так далее Может подскажет кто что и как делать? https://www.cyberforum.ru/ vba/ thread713490.html VBA Вставка относительных ссылок в формулу посредством переменных https://www.cyberforum.ru/ vba/ thread713425.html
Добрый день. я который раз возвращаюсь к одной загвоздке в своем макросе и никак не могу ее решить. помогите пожалуйста. есть вырезка из кода: k = ActiveCell.Offset(-9, -5).Address(0, 0, ReferenceStyle:=xlR1C1) s = ActiveCell.Offset(-9, -6).Address(0, 0, ReferenceStyle:=xlR1C1)
VBA Построение диаграммы. Создание нового тега и ошибка "type mismatch"
Здравствуйте! После запуска макроса выдает ошибку run-time error 13 type mismatch в этом месте кода: X1 = Range(Workbooks(MyName).Worksheets(MyDannie).Cells(iRowi + 7, iClmj + 3), Workbooks(MyName).Worksheets(MyDannie).Cells(iRow1, iClmj + 3)).Value Не могу разобраться в причине ее возникновения. Попытался уменьшить количество аргументов. Проблему не решило. Подскажите как исправить проблему....
VBA Поиск на листах и систематизация данных https://www.cyberforum.ru/ vba/ thread713297.html
На "Лист1" в 1 столбце находится список организаций в столбец 2 и 3 должны копироваться данные со 2 и 3 листа. На 2 и 3 Лист выгружаются данные из разных программ 1С и ИМУС нужно что бы макрос отыскивал на "Лист2" организацию например "Стройматериалы" брал данные из 2 столбца и записывал их на "Лист1" в 2 столбец напротив "Стройматериалы" далее находил "Стройматериалы" на "Лист3" копировал данные...
VBA Переключение языка ввода в зависимости от столбца Добрый день! Есть таблица из двух колонок. Как прописать макрос, который бы делал следующее?: 1. если курсор находится в первой колонке - язык ввода становится русским 2. если курсор находится во второй колонке - язык ввода становится английским https://www.cyberforum.ru/ vba/ thread713186.html VBA Получить метки дисков
Есть форма для выбора диска, на который нужно сохранить отчет Excel. Т.к. очень часто нужно сохранить отчет на флешку, возникла необходимость выводить в ComboBox не только букву диска, но и его метку (чтоб у неопытных пользователей не возникало трудностей при поиске нужного устройства). Все работает кроме вывода метки диска : Private Declare Function GetLogicalDriveStrings Lib "kernel32"...
VBA Проверка на число в InputBox вызывает ошибку https://www.cyberforum.ru/ vba/ thread713125.html
a = InputBox("a") Do While Not IsNumeric(a) MsgBox "Ошибка" a = InputBox("a") Loop b = InputBox("b") Do While Not IsNumeric(b) MsgBox "Ошибка" b = InputBox("b") Loop
VBA Реализовать оповещение, если в заданный промежуток времени от адресата нет письма https://www.cyberforum.ru/ vba/ thread713123.html
Как можно реализовать оповещение, если в заданный промежуток времени от адресата нет письма. К примеру есть адресаты с ящиками ввида: mail1@example.com mail2@example.com ......... mail100@example.com Если в заданный период времени, допустим, раз в сутки, от одного из адресатов нет письма, то приходило бы письмо/оповещение об этом.
VBA Передавать в макрос параметры в зависимости от выбранной ячейки
Суть такова: мне нужно привязать уже готовый макрос к нескольким ячейкам (макрос - на внешний запуск приложения) но при этом ещё сделать условие что если одна ячейка вызов проги с одним параметром, другая ячейка с другим параметром Сама программа на Delphi 7 надеюсь на вашу помощь)))
VBA Автоматический ввод пароля при открытии файла Excel Добрый день! По работе каждый день приходится сталкиватся с множеством Excel-файлов, на которых стоит один и тот же пароль. Все эти файлы имеют схожее название и представляют собой примерно следующее: "forex" + date, то есть forex211012, forex221012, forex271112. На всех стоит один и тот же пароль. Каждый раз ввод
Заблокирован
13.07.2014, 16:01 0

Авторские программы, библиотеки, надстройки и шаблоны - VBA - Ответ 6421522

13.07.2014, 16:01. Показов 253948. Ответов 254
Метки (Все метки)

Ответ

Реализация калькулятора на VBA

Похожий код я уже выкладывал в разделе VB6, правда он там гдето затерялся
так вот теперь решил адаптировать под VBA
Сам код мне нужен был, только для того чтоб научиться другому ЯП
чтобы использовать основную логику этой программы
и решил, чтоб не пропадать добру, поделиться им здесь
Для того чтоб все заработало, нужно только скопировать этот код,
который представленн ниже, в модуль формы UserForm и запустить
уверен что там найдется множество полезных
решений для Вас


Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Option Explicit
'
'Калькулятор на VBA ... © Антихакер32™ ...2014
'
Const nX = 6, nY = 4, p = " ", Promt1 = "<Деление на 0>", Promt2 = "<Переполнение>"
Private Declare Function GetSystemMetrics32& Lib "User32" Alias "GetSystemMetrics" (ByVal nIndex&)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim Matrix32(nX - 1, nY - 1) As CommandButton
Dim WithEvents cmm As CommandButton
Dim WithEvents cmb As ComboBox
Dim pos&, col As Collection, X&, Y&, Script As Object
 
Private Sub UserForm_Initialize()
    Dim sL&, sz&, st&, SM2&, o As Object
    SM2 = GetSystemMetrics32(2)
    sL = 100 / SM2: sz = 500 / SM2: st = sz + sL * 2
    Dim j$(), s$, i&, h&
    s = s & "7 8 9 = CE Sqr "
    s = s & "4 5 6 ( ) x^y "
    s = s & "1 2 3 + - Fix "
    s = s & "0 , % * / Mod "
    Set Script = CreateObject("MSScriptControl.ScriptControl"): Script.Language = "VBScript"
    Set col = New Collection: j = Split(s)
    For Y = 0 To nY - 1: For X = 0 To nX - 1
            Set Matrix32(X, Y) = Controls.Add("forms.CommandButton.1", "cmm_" & X & Y)
            With Matrix32(X, Y)
                Select Case X
                Case 3, 4: .Move sL * 2 + X * sz, st + Y * sz, sz, sz: .Visible = 1
                Case 5: .Move sL * 3 + X * sz, st + Y * sz, sz * 1.5, sz: .Visible = 1
                Case Else: .Move sL + X * sz, st + Y * sz, sz, sz
                End Select:  .FontSize = 10: .FontBold = 1: .Caption = j(i): i = i + 1: .Visible = 1
            End With
    Next: Next
    Set cmb = Controls.Add("forms.ComboBox.1", "cmb")
    With cmb
        .FontSize = 10: h = .Height
        .Move sL, Matrix32(0, 0).Top - h - sL, (Matrix32(nX - 1, 0).Left + Matrix32(nX - 1, 0).Width) - sL: .Visible = 1: .Text = 0
        Me.Width = .Width + sL * 3
    End With
    Set o = Controls("cmm_" & X - 1 & Y - 1)
    Me.Height = o.Top + o.Height + sz + sL
    Me.Caption = "Калькулятор VBA ... © Антихакер32™"
End Sub
 
Private Function Calc(ByVal Expression$)
    Dim s$, j$(), f&
    On Error GoTo EndFunction
    f = InStr(1, Expression, "<") 'Если в выражениях есть тег ошибки то выход
    If f Then Calc = Mid$(Expression, f): Calc = Left$(Calc, InStr(1, Calc, ">")): Exit Function
    Expression = Trim$(Split(Expression, "=")(0)) 'Отсееваем до знака равенства
    Expression = Replace(Expression, "%", "*0.01") 'Переименовать процент
    s = p & p: While InStr(1, Expression, s): Expression = Replace(Expression, s, p): Wend
    Expression = Replace(Expression, ",", ".") 'Переименовать разделитель для Eval
    Calc = Script.Eval(Expression) 'Вычисление !
    Exit Function
EndFunction:
    Calc = "<" & Err.Description & ">"
End Function
Private Sub cmm_Click()
    Dim s$: Static Result$, f&, b(2) As Boolean
    cmb.SetFocus: b(0) = 0 'Сброс оператора
    If Len(Result) Then 'Сброс если после прежнего результата, пойдет ввод цифр
        If IsNumeric(cmm.Caption) Then cmb.Text = ""
        Select Case cmm.Caption
        Case "Sqr", "Fix": cmb.Text = ""
        End Select
    End If: b(2) = b(1) Or cmb.Text = "0" Or cmb.Text = ""
    Select Case cmm.Caption 'Действия по вводу зависимо от активного названия кнопки
    Case "="
        f = InStr(1, cmb, "="): If f Then cmb.Text = Left$(cmb, f - 1)
        Result = Calc(cmb): cmb.Text = Trim$(Replace(cmb, p & p, p))
        s = cmb & " = " & Result: cmb.Text = Result
        On Error Resume Next: col.Add 0, s 'Попытаться добавить в коллекцию
        If Err.Number = 0 Then cmb.AddItem s Else Err.Clear
        cmb.Text = Result: pos = Len(cmb): cmb.SelStart = pos: Erase b: GoTo EndSub
    Case "CE": cmb.Text = 0: pos = 1: cmb.SelStart = pos: Erase b: GoTo EndSub
    Case "x^y": s = p & "^" & p: b(0) = 1
    Case "-" 'Проверка на второй минус
        For f = Len(cmb) To 1 Step -1
            s = Mid$(cmb, f, 1): If IsNumeric(s) Then Exit For
            If s = "-" Then GoTo EndSub
        Next: s = p & cmm.Caption & p: b(1) = 0: b(0) = 1
    Case "+", "*", "/", "Mod": s = p & cmm.Caption & p: b(0) = 1
    Case "," 'Проверка на повтор разделителя
        For f = Len(cmb) To 1 Step -1: s = Mid$(cmb, f, 1)
            If s = "," Then
                GoTo EndSub
            ElseIf Not IsNumeric(s) Then Exit For
            End If
        Next: s = cmm.Caption
    Case "Fix", "Sqr":  If b(2) Then s = cmm.Caption & "(": b(1) = 0: b(0) = 1
    Case "(": If b(2) Then s = cmm.Caption: b(1) = 0: b(0) = 1
    Case ")": If Not b(1) Then s = cmm.Caption Else GoTo EndSub
    Case "%": If Right$(cmb, 1) <> "%" Then s = cmm.Caption
    Case Else: s = cmm.Caption
    End Select
    If b(1) And b(0) Then GoTo EndSub Else b(1) = b(0)
    If Left$(cmb, 1) = "0" Then cmb.Text = Mid$(cmb, 2)
    cmb.SelStart = pos: cmb.SelText = s: pos = pos + Len(s): Result = ""
    Exit Sub
EndSub: cmb.SelStart = pos
End Sub
Private Sub UserForm_Activate()
    Do: DoEvents: Sleep 50: tmr_Timer: Loop
End Sub
Private Sub tmr_Timer()
    Static OldName$
    If OldName <> ActiveControl.Name And ActiveControl.Name Like "cmm_##" Then
        Set cmm = ActiveControl
    End If: OldName = ActiveControl.Name
End Sub
Private Sub cmb_Validate(Cancel As Boolean): pos = cmb.SelStart: End Sub
Private Sub UserForm_Terminate(): End: End Sub
Так-же выкладываю независимое скомпилированное приложение
с реализацией стиля Windows

PS. Лично я уже пользуюсь вместо стандартного встроенного

Вернуться к обсуждению:
Авторские программы, библиотеки, надстройки и шаблоны VBA
Вложения
Тип файла: zip VBCalc.zip (265.5 Кб, 243 просмотров)
2
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2014, 16:01
Готовые ответы и решения:

Программы на 1С и авторские права
На форуме много сильных программистов, полагаю, что кто-то пишет и отдельные программы. Интересует...

Поменять авторские права в описании программы
Народ подскажите как поменять авторские права в описании программы, срочно надо. Пож-та

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

Шаблоны и динамические библиотеки
Зачем им динамические реализации, там ведь одни шаблоны и достаточно заголовочных файлов?(Boost...

254
13.07.2014, 16:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2014, 16:01
Помогаю со студенческими работами здесь

Где хранятся шаблоны во время выполнения программы?
Где хранятся шаблоны во время выполнения программы? и если у меня если: template&lt;typename T&gt;...

Шаблоны проектирования для смены языка программы.
Требуется создать библиотеку для смены языка пользовательского интерфейса программ. В принципе,...

Хранить шаблоны документов в базе и выводить данные в эти шаблоны
Доброго времени суток. Интересует вопрос: мне необходимо формировать вордовские документы по...

Библиотеки программы
Знаю, что подобные темы обсуждались, но ничего путного не нашел. Написал программу CLR, но...

Чем отличаются шаблоны HTML и шаблоны WordPress
В чём различие между шаблонами HTML и WordPress. Кроме того, что создаются они разными способами....

Библиотеки для программы
Какие библиотеки нужно подключить? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru