Вопрос о надстройках VBA - PullRequest
0 голосов
/ 08 сентября 2011

Я хочу запустить свой код при загрузке надстройки.(Открыть файл Excel -> загрузить надстройку -> запустить код)

Но у меня проблема с обработчиком событий.

Я не знаю, какой обработчик событий мне нужен и какзагрузить установленный плагин.

(я пытаюсь использовать обработчик Workbook_open, но я думаю, что это неправильно)

И я пытаюсь использовать обработчик событий Workbook_AddinInstall () тогда, когда надстройка установки работает.Но чтобы заставить мой код работать, мне нужно каждый раз переустанавливать надстройку.

И как мне запустить надстройку, которая уже есть в списке надстроек.

Вот мой код

Private Sub Workbook_AddinInstall()
Dim counter As Long
Dim rowSize As Long
Dim userId As String
Dim answers As String
Dim vals As String

Dim i As Integer

Set currentSheet = ActiveWorkbook.ActiveSheet

MsgBox (currentSheet.Cells(1, 2).Value)

rowSize = currentSheet.Rows.Count
counter = 1


'Create Column

currentSheet.Cells(1, 7).Value = "Country"
currentSheet.Cells(1, 8).Value = "State"
currentSheet.Cells(1, 9).Value = "Age"

currentSheet.Cells(1, 7).Font.Bold = True
currentSheet.Cells(1, 8).Font.Bold = True
currentSheet.Cells(1, 9).Font.Bold = True

currentSheet.Cells(1, 7).HorizontalAlignment = xlCenter
currentSheet.Cells(1, 8).HorizontalAlignment = xlCenter
currentSheet.Cells(1, 9).HorizontalAlignment = xlCenter

currentSheet.Cells(1, 7).Borders().LineStyle = xlContinuous
currentSheet.Cells(1, 8).Borders().LineStyle = xlContinuous
currentSheet.Cells(1, 9).Borders().LineStyle = xlContinuous

'Set Value
Do While counter < rowSize

    If currentSheet.Cells(counter, 1).Value = Null Then Exit Do
    If currentSheet.Cells(counter, 4).Value = "3" Then

        userId = currentSheet.Cells(counter, 2).Value
        vals = currentSheet.Cells(counter, 6).Value
        'MsgBox (vals)

        temp = Split(vals, ",")
        i = 0

        Do While i < 10
            targetCell = counter + i
            If currentSheet.Cells(targetCell, 2).Value = userId Then
               currentSheet.Cells(targetCell, 7).Value = temp(0)
               currentSheet.Cells(targetCell, 8).Value = temp(1)
               currentSheet.Cells(targetCell, 9).Value = temp(2)

               currentSheet.Cells(targetCell, 7).HorizontalAlignment = xlCenter
               currentSheet.Cells(targetCell, 8).HorizontalAlignment = xlCenter
               currentSheet.Cells(targetCell, 9).HorizontalAlignment = xlCenter

               currentSheet.Cells(targetCell, 7).Borders().LineStyle = xlContinuous
               currentSheet.Cells(targetCell, 8).Borders().LineStyle = xlContinuous
               currentSheet.Cells(targetCell, 9).Borders().LineStyle = xlContinuous
            End If
            i = i + 1
        Loop
        temp = Null
       'parsing_question_1(vals, userId)
    End If

    counter = counter + 1
Loop

End Sub

Спасибо.

1 Ответ

0 голосов
/ 08 сентября 2011

Создать событие в надстройке:

www.cpearson.com / Excel / appevent.htm

Кроме того, если вы хотите, вы можете выполнить событие workbookopen и просто проверить, чтобы убедиться, что книга соответствует названию книги, или создать скрытый лист со значением в ячейке A1, который сообщит вам, является ли он вашей книгой.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...