Строка как функция для ячейки в VBA - PullRequest
1 голос
/ 24 октября 2019

У меня проблема в VBA. Я создал скрипт для суммирования каждой ежемесячной суммы (последней строки таблицы; необходимо добавить каждый третий столбец) к годовой сумме. Для этого я создаю строку с функцией sum в ней. Затем я хочу вставить строку в ячейку под ежемесячной таблицей.

Всякий раз, когда я нажимаю кнопку, выскакивает

ошибка 1004

. Я старался изо всех сил, чтобы решить это сам, но я не мог это исправить. Если я передаю строку в msgbox, она работает нормально, и на моем экране отображается символ = sum (...).

'Defintions
Dim lastCol As Long
Dim lastRow As Long
Dim i As Integer
Dim k As Integer
Dim x As Integer
Dim l As String
Dim Squantitys As String
Dim year As String
Dim startYear As Integer
Dim str As String
startYear = 8

'Get Dimensions of results
lastRow = Sheets("results").Cells(Rows.Count, 1).End(xlUp).Row
lastCol = Sheets("results").Cells(1, Columns.Count).End(xlToLeft).Column

'Get the new table ready
Sheets("results").Cells(lastRow + 7, 1).Value = "year"
Sheets("results").Cells(lastRow + 7, 2).Value = "total Quantitys"

'add total Quantitys
Squantitys = "=sum("

For i = 2 To lastCol Step 36

     If (lastCol - i) >= 36 Then

          For k = i To i + 33 Step 3

               l = Split(Sheets("results").Cells(lastRow, k).Address, "$")(1)

               Squantitys = Squantitys & l & lastRow & ";"

               x = k + 3

          Next

          l = Split(Sheets("results").Cells(lastRow, x).Address, "$")(1)

          Squantitys = Squantitys & l & lastRow & ")"

     Else

          For k = i To lastCol - 3 Step 3

               l = Split(Sheets("results").Cells(lastRow, k).Address, "$")(1)

               Squantitys = Squantitys & l & lastRow & ";"

               x = k + 3

          Next

          l = Split(Sheets("results").Cells(lastRow, x).Address, "$")(1)

          Squantitys = Squantitys & l & lastRow & ")"

     End If



     'output

     year = Sheets("results").Cells(1, i).Value

     Sheets("results").Cells(lastRow + startYear, 1).Value = year

     'MsgBox Squantitys --- this works fine
     Sheets("results").Cells(lastRow + startYear, 2).Value = Squantitys

     'reset for next loop

     startYear = startYear + 1
     Squantitys = "=sum("

Next

1 Ответ

2 голосов
/ 24 октября 2019
Squantitys = Squantitys & l & lastRow & ";"

здесь изменить ";" на "," . В VBA принимает только американский формат, а не локальный

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