Вы можете заменить свою строку:
str1 = Replace(str1, "@#@#", "@#")
на:
Do Until Len(str1) = Len(Replace(str1, "@#@#", "@#"))
str1 = Replace(str1, "@#@#", "@#")
Loop
, которая будет продолжать применять замену, пока в этом нет смысла (т.е. длина неизменить)
РЕДАКТИРОВАТЬ
Извините, что изменил принятый ответ, но я заметил, что вы можете сохранить экземпляры @ # @ #, если онипроисходят где-то , кроме конца строки.Если вы сделаете это, то будет лучше следующее, так как оно усекает только самые правые символы:
Do Until Right(str1, 4) <> "@#@#"
str1 = Left(str1, Len(str1) - 2)
Loop