Call UnMergeFill(ws)
вызывает процедуру UnMergeFill
, передавая ws
в качестве аргумента ...
Public Sub UnMergeFill()
... но процедура UnMergeFill
делаетне принимать никаких параметров.Следовательно, «неправильное количество аргументов».
Вам нужно изменить сигнатуру UnMergeFill
, чтобы принять Worksheet
параметр:
Public Sub UnMergeFill(ByVal ws As Worksheet)
И тогда нет необходимости .Select
это больше:
For Each ws In Worksheets
UnMergeFill ws
Next
За исключением того, что теперь вам нужно UnMergeFill
, чтобы отработать заданный параметр Worksheet
:
For Each cell In ws.UsedRange
Если вы хотите, чтобы UnMergeFill
по-прежнему работать независимо от того, что ActiveSheet
не имеет аргументов, вы можете сделать параметр необязательным:
Public Sub UnMergeFill(Optional ByVal ws As Worksheet = Nothing)
... и затем проверить, была ли вызвана процедура с допустимой ссылкой на объект:
If ws Is Nothing Then Set ws = ActiveSheet