Как я могу написать общий процесс для двух разных форм пользователя? - PullRequest
0 голосов
/ 27 октября 2019

Я создал две пользовательские формы. Они оба делают некоторые общие процессы. Пользовательская форма A проверяет каждую строку листа Excel и продолжает добавлять четные числа. Пользовательская форма B проверяет каждую строку листа Excel и продолжает умножать четные числа. Проверка, является ли число в каждой строке четным числом, является общей частью. Вместо того, чтобы писать общий процесс дважды, могу ли я написать его один раз и получить к нему доступ от обеих пользовательских форм? Позже мне придется использовать аналогичный процесс для более сложной функции, но сначала я хочу попробовать его с помощью самого простого кода. Вот мой код:

Userform A
Private Sub ButtonAdd_Click()
Dim row As Integer
Dim result1 As Integer
Dim val As Integer
    For row = 1 To 10
        val = Cells(row, 1).Value
        If val Mod 2 = 0 Then result1 = result1 + val
    Next row
MsgBox (result1)
End Sub

Userform B
Private Sub ButtonMultiply_Click()
Dim row As Integer
Dim result2 As Integer
Dim val As Integer
    result2 = 1
    For row = 1 To 10
        val = Cells(row, 1).Value
        If val Mod 2 = 0 Then result2 = result2 * val
    Next row
MsgBox (result2)
End Sub

Я ценю вашу помощь!

1 Ответ

0 голосов
/ 27 октября 2019

Создайте функцию из нее и затем передайте ей параметр:

Public Function GetResult(result as Integer)
' this function should be in a module so that both forms can see it
Dim row As Integer
Dim result2 as Integer
Dim val As Integer
    If result = 1 Then result2 = 1
    For row = 1 To 10
        val = Cells(row, 1).Value
        If result = 0 Then
            If val Mod 2 = 0 Then result2 = result2 + val
        Else
            If val Mod 2 = 0 Then result2 = result2 * val
        End If
    Next row
    GetResult = result2
End Function

Затем вы можете вызывать эту функцию из каждой формы следующим образом:

Форма пользователя A

Private Sub ButtonAdd_Click()
  msgbox GetResult(0)
End Sub

Форма пользователя B

Private Sub ButtonMultiply_Click()
  msgbox GetResult(1)
End Sub

Возможно, вам придется немного подправить его, чтобы он делал именно то, что вы хотите ... но это должнопо крайней мере, дать вам начало ...

...