Я пропустил объявление или заголовок объекта листа? - PullRequest
0 голосов
/ 17 мая 2019

Я настраиваю цикл для расчета количества слоев бумаги в рулоне, когда вам дается только линейный материал и толщина бумаги. Цикл представляет сумму серии и останавливается только тогда, когда сумма равна линейному материалу. Он считывает переменные с листа и записывает результат в другую ячейку на листе. Я считаю, что у меня правильно настроен цикл, и я все правильно объявил. Я пытался запустить свой код, но он дает мне

Ошибка компиляции: требуется объект "и выделяется" Sub NumLayers ()

в отладчике. Я не знаю, какой объект или декларация мне не хватает.

Это для версии Excel 2007 года. Я проверил свой синтаксис и ищу недостающие заголовки или объявления в Google, но не могу найти никаких лидов

Sub NumLayers()

    Dim Layer As Integer
    Dim radius As Double
    Dim Footage As Integer
    Dim Thick As Double
    Dim FootSum As Double
    'Declared my variables

    Dim ws As Excel.Worksheet
    Set ws = ActiveWorkbook.Sheets("Equation")
    'initiated and set the worksheet object

    Set Thick = ws.Range("D35").Value
    Set radius = ws.Range("D27").Value
    Set Footage = ws.Range("C16").Value
    'Set variable values to values from cells in worksheet

    Set Layer = 1
    'Set counter variable at 1
    Set FootSum = 2 * 3.14159265 * radius
    'Set initial value before loop

    Do Until FootSum >= Footage
        FootSum = FootSum + (2 * 3.14159265 * (radius + (Counter * Thick)))
        Layer = Layer + 1

    Loop

    ws.Range("D37").Value = Layer
    'Write total amount of layers needed to achieve linear footage, to a cell
End Sub

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

1 Ответ

1 голос
/ 17 мая 2019

Я не уверен в версии Excel, если вам нужно Dim ws as excel.worksheet Я обычно использую:

Dim wb as Workbook, ws as Worksheet
set wb = ActiveWorkbook
set ws = wb.worksheets("Equation")

Ваша главная проблема заключается в том, что вы только "Устанавливаете" объекты = чему-то.Определите ваши переменные следующим образом (без 'Set'):

Thick = ws.Range("D35").Value
radius = ws.Range("D27").Value
Footage = ws.Range("C16").Value
'variable values to values from cells in worksheet

Layer = 1
'counter variable at 1
FootSum = 2 * 3.14159265 * radius
'initial value before loop
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...