Удалил ВСЕ кроме одного листа и одного модуля с единственной процедурой.
Затем вставил просто чистый лист. И теперь - на чистом листе работает, на листе Склад - нет

Может кто - нибудь это обьяснить?

Модератор: Naeel Maqsudov
<ConditionalFormatting xmlns="urn:schemas-microsoft-comffice:excel">
<Range>R2C2:R10C2</Range>
<Condition>
<Value1>COUNTIF(C2,RC)>1</Value1>
<Format Style='background:yellow'/>
</Condition>
</ConditionalFormatting>
Код: Выделить всё
Sub printArea()
On Error Resume Next
Dim o As Object
Set o = Application.InputBox("Label ", , ActiveCell.Address, , , , , 8)
Debug.Print o.Address
End Sub
Это тот редкий случай, когда не стоит искать причину(читайте ошибку) в своих действиях, ибо это официально зарегистрированный баг и заключается он в том, что при наличии условного форматирования, где критерием служат некие формулы, функция Application.InputBox действительно возвращает False.
Бороться с этим безобразием можно использовав, уже вышеупомянутый DialogSheet + EditBox, либо UserForm + RefEdit (дешёвая замена EditBox), только не забудьте, что полученный адрес диапазона будет зависеть от нотации A1/R1C1, тогда как попытка использовать адрес в стиле R1C1 неизменно приведёт к ошибке, которую можно избежать, если либо предварительно установить нужный стиль ссылок :
Код Visual Basic
Application.ReferenceStyle = xlA1 'без проверки
Код Visual Basic
If Application.ReferenceStyle = xlR1C1 _
Then Application.ReferenceStyle = xlA1 'с проверкой
кстати, несмотря на кажущуюся ненужность проверки, она всё-таки имеет право на существование, к примеру, при работе макроса на чужих машинах, ибо в таких случаях, правила хорошего тона просят вернуть всё на круги своя.
либо конвертировать полученный адрес :
Код Visual Basic
iAddress = ThisWorkbook.DialogSheets(1).EditBoxes(1).Text
If Application.ReferenceStyle = xlR1C1 Then _
iAddress = Application.ConvertFormula(Formula:= _
iAddress, FromReferenceStyle:=xlR1C1, ToReferenceStyle:=xlA1)