Присвоить значение ячейке в Excel VBA вылетает VBA без сообщения

Я использую Excel 2016 32-bit и Excel 2019 32-bit. В обеих версиях Excel программист назначает остановку выполнения VBA без какого-либо сообщения.

  • Настройки Центра управления безопасностью установлены на "Включить все макросы" и "Доверить доступ к модели проекта VBA".

  • Расчеты работают и верны.

Код, с которым я работаю, приведен ниже. Выполнение прекращается, когда значение переменной LL95 назначается ячейке. На этом этапе VBA останавливается без какого-либо сообщения.

    ' Compute 95%, 85% and 75% Confidence Intervals
    Public Sub ConfidenceIntervals(topInputRow As Integer, bottomInputRow As Integer, outputRow As Integer)

        Dim avg As Double
        Dim sd As Double
        Dim n As Double

        Dim LL95 As Double
        Dim UL95 As Double

        Dim LL85 As Double
        Dim UL85 As Double

        Dim LL75 As Double
        Dim UL75 As Double

        Dim intervalRange As Range
        Dim rangeString As String

        n = CDbl(bottomInputRow - topInputRow)

        rangeString = "C" & CStr(topInputRow) & ":C" & CStr(bottomInputRow)

        Set intervalRange = Worksheets("Samples").Range(rangeString)

        avg = WorksheetFunction.Average(intervalRange)
        sd = WorksheetFunction.StDev_S(intervalRange)

        ' 95% Confidence Intervals
        LL95 = Exp(avg - sd * 2.2622 / Sqr(n))
        UL95 = Exp(avg + sd * 2.2622 / Sqr(n))

        ' 85% Confidence Intervals
        LL85 = Exp(avg - sd * 1.5737 / Sqr(n))
        UL85 = Exp(avg + sd * 1.5737 / Sqr(n))

        ' 75% Confidence Intervals
        LL75 = Exp(avg - sd * 1.2297 / Sqr(n))
        UL75 = Exp(avg + sd * 1.2297 / Sqr(n))

        ' Write the intervals to the output row.
        Sheets("Samples").Select

        Cells(outputRow, 7).Value = LL95
        Cells(outputRow, 8).Value = UL95

        Cells(outputRow, 9).Value = LL85
        Cells(outputRow, 10).Value = UL85

        Cells(outputRow, 11).Value = LL75
        Cells(outputRow, 12).Value = UL75

    End Sub
  • Я попытался следующий код для назначения значений. Тем не менее, это приводит к тому же поведению. VBA бомбы без сообщений на Rng.Value = LL95,
        Dim Rng As Range
        Set Rng = Sheets("Samples").Cells(outputRow, 7)
        Rng.Value = LL95

        Set Rng = Sheets("Samples").Cells(outputRow, 8)
        Rng.Value = UL95

        Set Rng = Sheets("Samples").Cells(outputRow, 9)
        Rng.Value = LL85

        Set Rng = Sheets("Samples").Cells(outputRow, 10)
        Rng.Value = UL85

        Set Rng = Sheets("Samples").Cells(outputRow, 11)
        Rng.Value = LL75

        Set Rng = Sheets("Samples").Cells(outputRow, 12)
        Rng.Value = UL75

Я дополнительно попробовал:

  • Инструменты настройки | Варианты | Генерал | Перерыв на все ошибки. Никакой дополнительной информации или сообщений об ошибках не отображается.

  • Добавление сообщения об ошибке Перейти к: (для получения дополнительной информации).

Что я пропускаю?

1 ответ

Я передал книгу по Excel моему другу. Он открыл книгу и запустил ее без каких-либо проблем. VBA не будет работать на трех моих рабочих станциях. VBA без проблем работал на двух своих рабочих станциях. Одно из различий между моими рабочими станциями и его рабочими станциями заключается в том, что я вошел в свою учетную запись Office 365 в Excel 2016 и 2019.

В качестве теста (я не ожидал, что это что-то изменит) я вышел из Office 365 в Excel. После выхода я запустил макрос. VBA выполнялся без молчаливых сбоев и заполнял камеры.

Решение, кажется, заключается в следующем:

  1. Выйдите из своей учетной записи Office 365 в Excel.
  2. Запустите макрос. Клетки назначены просто отлично.

Помимо потенциальной проблемы, возникающей при внутреннем поднятии события ячейки, я не уверен, почему это сработало.

Мне было бы интересно услышать более твердые и более обоснованные аргументы.

Другие вопросы по тегам