Проблема... Точнее вопросы! Вызов функции с передаваемым параметром адреса ячейки и необязательным параметром. В общем то работает. Но не все.
Хочу что бы при вызове макроса выделенная ячейка меняла свой формат на установленный, и после задержки получала свой формат до вызова обратно. [vba]
Код
Sub ChangeRangeClick() Dim MyChangeRange As Range Dim MyAdres As String MyAdres = ActiveCell.Address MsgBox MyAdres ' a = MsgBox(MyAdres, , ActiveWorkbook.ActiveSheet.Name) Call ChangeRangeSub(MyAdres) ' Call ChangeRangeSub(MyAdres,5) ' Как вариант MsgBox "Готово!" ' MyChangeRange = ActiveCell.Address 'ERROR ' Call ChangeRangeSub(MyChangeRange) 'ERROR End Sub
Sub ChangeRangeSub(MyRangeSub, Optional SubTimeSllep As Integer = 2) Dim MyNextRangeSub As Range Set MyNextRangeSub = ActiveWorkbook.ActiveSheet.Range(MyRangeSub)
Range(MyRangeSub).Copy
With MyNextRangeSub.Interior .PatternColorIndex = xlAutomatic .color = 255 End With Application.Wait Time:=Now + TimeSerial(0, 0, SubTimeSllep)
Range(MyRangeSub).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ' With MyNextRangeSub.Interior ' .Pattern = xlNone ' End With Application.Wait Time:=Now + TimeSerial(0, 0, SubTimeSllep - 1) End Sub
' a = MsgBox(MyAdres, , ActiveWorkbook.ActiveSheet.Name)
И без вывода в переменную это не работает. Это констатация факта.
Проблема... Точнее вопросы! Вызов функции с передаваемым параметром адреса ячейки и необязательным параметром. В общем то работает. Но не все.
Хочу что бы при вызове макроса выделенная ячейка меняла свой формат на установленный, и после задержки получала свой формат до вызова обратно. [vba]
Код
Sub ChangeRangeClick() Dim MyChangeRange As Range Dim MyAdres As String MyAdres = ActiveCell.Address MsgBox MyAdres ' a = MsgBox(MyAdres, , ActiveWorkbook.ActiveSheet.Name) Call ChangeRangeSub(MyAdres) ' Call ChangeRangeSub(MyAdres,5) ' Как вариант MsgBox "Готово!" ' MyChangeRange = ActiveCell.Address 'ERROR ' Call ChangeRangeSub(MyChangeRange) 'ERROR End Sub
Sub ChangeRangeSub(MyRangeSub, Optional SubTimeSllep As Integer = 2) Dim MyNextRangeSub As Range Set MyNextRangeSub = ActiveWorkbook.ActiveSheet.Range(MyRangeSub)
Range(MyRangeSub).Copy
With MyNextRangeSub.Interior .PatternColorIndex = xlAutomatic .color = 255 End With Application.Wait Time:=Now + TimeSerial(0, 0, SubTimeSllep)
Range(MyRangeSub).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False ' With MyNextRangeSub.Interior ' .Pattern = xlNone ' End With Application.Wait Time:=Now + TimeSerial(0, 0, SubTimeSllep - 1) End Sub
With MyNextRangeSub.Interior .PatternColorIndex = xlAutomatic .color = 255
[/vba]
У меня получается в этот момент происходит очищение буфера обмена? И если мне очень хочется "временно" изменить формат выделенной ячейки, и вернуть "как было", то единственный вариант, использовать "промежуточную - временную" ячейку?
With MyNextRangeSub.Interior .PatternColorIndex = xlAutomatic .color = 255
[/vba]
У меня получается в этот момент происходит очищение буфера обмена? И если мне очень хочется "временно" изменить формат выделенной ячейки, и вернуть "как было", то единственный вариант, использовать "промежуточную - временную" ячейку?nordri
Сообщение отредактировал nordri - Понедельник, 26.06.2023, 17:56