Я добавил простой макрос предыдущего листа в файл, и он работал нормально, пока не начал возвращать ошибку #NAME, и я не могу понять, почему.
Я хотел использовать его с именованной отдельной ячейкойдиапазоны, которые соответствуют всей книге, я использовал его успешно, прежде чем называть диапазоны, и не думал, что это повлияет на работу.После именования диапазонов он больше не работает, даже для обычных безымянных диапазонов.
Я проверил это, создав новую книгу, заполнив несколько листов и опробовав ее, и она по-прежнему возвращает ошибку #NAME
.Когда я оцениваю функцию, ошибка появляется на самом первом этапе: распознавание функции.Однако, когда я печатаю в строке формул, программы предлагают мне формулу нормально.
Я также пытался ссылаться на именованные ячейки по их ячейке и даже добавлять имя листа перед ячейкой (например, "prevsheet(previoussheetname!a1)
или prevsheet(thissheetname!a1)
). У меня даже есть, в последнем усилии рва"., попытался добавить двойные кавычки перед именем ячейки.
Для полного раскрытия, у меня есть также другая подпрограмма макроса, которая использует ссылки на предыдущий и следующий листы, но так как она не распознает саму функцию (которая должна была быть раннейзнак), он использует относительные ссылки (то есть activesheet(index - 1
, activesheet(index + 1)
). В то время я не думал, что это испортит функцию, но по мере того, как я становлюсь все более отчаянным и растерянным, возможно, это возможно.
код PrevSheet()
, который я использовал:
Function PrevSheet(RCell As Range)
Dim xIndex As Long
Application.Volatile
xIndex = RCell.Worksheet.Index
If xIndex > 1 Then _
PrevSheet = Worksheets(xIndex - 1).Range(RCell.Address)
End Function
И как сейчас, как предложил Крис Нейлсен
Функция PrevSheet (RCell As Range) как вариант
Application.Volatile
PrevSheet = RCell.Worksheet.Previous.Range(RCell.Address).Value
Функция завершения
По предложению Криса Нилсена я отредактировал именованные диапазоны так, чтобы они выглядели так:
!(nothing)$column$row
с областью действия, установленной на Workbook
Именованный диапазон недоступен в браузере диапазонов.
Названа только ячейка B1.Он называется «имя»
PrevSheet () не работает ни с одним диапазоном.
Макросы включены
Любой, кто лучше разбирается в VBA, макросах и Excelможете сказать мне, почему это происходит, и как я могу это исправить, чтобы он возвращал значение указанной ячейки на первом листе слева от листа, на котором напечатана функция?(т. е. в sheet4, =prevsheet(A1)
вернет значение ячейки A1 в sheet3)
Надеюсь, мой вопрос теперь яснее!