Присвоить значение ячейке в Excel VBA вылетает VBA без сообщения - PullRequest
1 голос
/ 13 июня 2019

Я использую 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 Ответ

0 голосов
/ 20 июня 2019

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

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

Решение выглядит следующим образом:

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

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

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

...