Макрос Excel - кто-нибудь может объяснить это? - PullRequest
1 голос
/ 10 марта 2011

Я новичок в макросах Excel ..

Может кто-нибудь сказать мне, что делает этот макрос?

Sub People_Add_Document()

    prow = ActiveCell.row
    num = Cells(prow, 1).Value
    wshet = ActiveSheet.Name

    If (Val(num) > 0) _
       And (Cells(4, 1).Value = "#") _
       And (wsheet = People_wsheet) _
    Then
        people_select_link_to_Document process_wbook_path, prow
    End If
  End Sub



Sub people_select_link_to_Document(process_wbook_path, prow)

        If Len(Cells(prow, DocumentFile).Value) = 0 Then
        Fname = Application.GetOpenFilename("Document Files (*.doc;*.pdf),*.doc;*.pdf", 1, "Select the Document file..")

        If Fname <> False Then

            Cells(prow, DocumentFile).Value = Fname 'global path

        End If

    End If

End Sub

1 Ответ

5 голосов
/ 10 марта 2011

Получить номер строки активной ячейки:

prow = ActiveCell.row

Получить значение в столбце 1 этой строки:

num = Cells(prow, 1).Value

Прочитать имя активной рабочей таблицы (естьздесь должна появиться ошибка wsheet, а не wshet):

wshet = ActiveSheet.Name

Проверить, если num больше 0, а ячейка A4 содержит "#" и активная рабочая таблица равнапеременная или константа с именем People_wsheet.И если это так, подпрограмма с именем people_select_link_to_Document вызывается с параметрами process_wbook_path и prow

If (Val(num) > 0) _
   And (Cells(4, 1).Value = "#") _
   And (wsheet = People_wsheet) _
Then
    people_select_link_to_Document process_wbook_path, prow
End If

Теперь эта подпрограмма в первую очередь проверяет, является ли столбец DocumentFile активной строкипустой.На самом деле это довольно слабый способ проверки пустоты, но, вероятно, он подойдет.

    If Len(Cells(prow, DocumentFile).Value) = 0 Then

А если он пуст, мы покажем диалоговое окно для получения имени файла:

    Fname = Application.GetOpenFilename("Document Files (*.doc;*.pdf),*.doc;*.pdf", 1, "Select the Document file..")

Если имя файла было выбрано (то есть диалоговое окно не отменено), мы сохраняем это имя файла в столбце DocumentFile активной строки для дальнейшего использования:

    If Fname <> False Then

        Cells(prow, DocumentFile).Value = Fname 'global path

    End If

И это все!

...