Запуск кода VBA (макросы) с несколькими открытыми файлами Excel - как правильно кодировать и декларировать - PullRequest
0 голосов
/ 20 мая 2019

Я создал пару макросов, и у меня возникает проблема (иногда), когда у меня открыто несколько файлов Excel.По какой-то причине макросы перестают работать (ошибка VBA Runtime 1004).Я подозреваю, что мне нужно правильно объявить рабочую книгу / рабочий лист, но я еще не понял, как это сделать.С моим базовым пониманием я думал, что будет работать следующее (не в моем коде, я пробовал, и это не сработало): `

Dim wb as WorkBook
Dim ws as WorkSheet
Set wb = ActiveWorkbook
Set ws = ActiveWorkSheet
wb.ws.range("A1") = 2

`

Однако, так как вышеЯ не думаю, что мне не хватает полезных / ценных знаний.

Если полезно: макросы используются для создания ежемесячного отчета.Следовательно, они изначально пусты, а затем создают листы для января, февраля и так далее.

Sub ConsultantInvoicing()

    Dim CurrentMonth As String
    Dim NextMonth As String

    'Dim wb As Workbook
    'Set wb = ActiveWorkbook
    'Dim wsActiveSheet As Worksheet
    'Set wsActiveSheet = wb.ActiveSheet

    Sheets(Sheets.Count).Select

    If Range("A1") = "" Then
        Call AddFirstSheet
    Else
        Call AdditonalSheet

    End If


End Sub



Private Sub AddFirstSheet()

    CurrentMonth = Application.InputBox("Please enter what month", 
"Invoice (monthly) - What month?")
    ActiveSheet.Name = CurrentMonth
    Call NewSheetFormat


End Sub


Private Sub AdditonalSheet()

    CurrentMonth = Range("A1")

    Select Case CurrentMonth

        Case "January", "january"
            NextMonth = "February"

        Case "February", "february"
            NextMonth = "March"

        Case "March", "march"
            NextMonth = "April"

        Case "April", "april"
            NextMonth = "May"

        Case "May", "may"
            NextMonth = "June"

        Case "June", "june"
            NextMonth = "July"

        Case "July", "july"
            NextMonth = "August"

        Case "August", "august"
            NextMonth = "September"

        Case "September", "september"
            NextMonth = "October"

        Case "October", "october"
            NextMonth = "November"

        Case "November", "november"
            v = "December"

        Case "December", "december"
            NextMonth = "January"

    End Select

    Set ws = ThisWorkbook.Sheets.Add _
    (After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ActiveSheet.Name = NextMonth
    ActiveSheet.Range("A1") = NextMonth

    Call NewSheetFormat


End Sub


Private Sub NewSheetFormat()
 'formats the sheet


    Range("A:A").ColumnWidth = 29.17
    Range("ColumnWidth").ColumnWidth = 12.5
    ..
    ..




End Sub

Заранее спасибо!С уважением, Александр

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