Я занимаюсь созданием книги для хранения всех моих рецептов, и я пытаюсь добавить входные данные в пользовательской форме в следующую строку в таблице из объекта recipeInfo, который содержит все данные.Excel VBA добавляет новую строку в таблицу (excel crashing)
Операторы Debug.print предоставляют правильные выходы, насколько я могу судить, но строки, расположенные ниже, которые должны добавить информацию в строку после последнего в таблице, приводят к сбою excel при каждом запуске.
Я делаю что-то не так с рецептами команд команд?
Sub addData(newRecipe As recipeInfo)
Dim col As Integer
Dim recipeSheet As Worksheet
Dim lastRow As Integer
Set recipeSheet = ActiveWorkbook.Sheets("Recipes")
lastRow = recipeSheet.UsedRange.Rows.Count
'MsgBox (recipeSheet.Name & ", " & lastRow)
'add data into range
Debug.Print (newRecipe.item)
Debug.Print (newRecipe.cost)
Debug.Print (newRecipe.servings)
Debug.Print (newRecipe.cost/newRecipe.servings)
Debug.Print (newRecipe.ingredients)
Debug.Print (newRecipe.instructions)
recipeSheet.Cells(lastRow + 1, 1) = newRecipe.item
recipeSheet.Cells(lastRow + 1, 2) = newRecipe.cost
recipeSheet.Cells(lastRow + 1, 3) = newRecipe.servings
recipeSheet.Cells(lastRow + 1, 4) = newRecipe.cost/newRecipe.servings
recipeSheet.Cells(lastRow + 1, 5) = newRecipe.ingredients
recipeSheet.Cells(lastRow + 1, 6) = newRecipe.instructions
End Sub
Вы пробовали пройти через (F8), чтобы увидеть, является ли это одной конкретной линией? Всегда ли значение в 'newRecipe.servings'? – Porcupine911
Он завершает работу в первой строке (элемент), я также попытался прокомментировать эту строку и другие строки, чтобы заставить Excel выйти. Кроме того, все свойства имеют значения. –
Если я правильно понимаю, 'recipeInfo' является модулем класса? Если ваш код работает на строках 'Debug.Print' и печатает правильный вывод, я не вижу причин для отказа следующих строк. Если в первой строке «Debug.Print» она терпит неудачу, вам нужно пересмотреть свой «Модуль класса» (опять же, если мое предположение верно, что оно такое). – L42