Функция замены в Excel больше не работает после перемещения листа - PullRequest
0 голосов
/ 23 марта 2020

У меня проблема с кодом ниже. То, что я пытаюсь сделать, это позволить пользователю вводить диапазон ячеек, которые он вводит во что-то. Это всегда будет в колонке А моего листа. Затем я указываю эти входные данные как startmyRange и endnewRange. Я также создаю переменные startnewRange и endnewRange, которые являются одинаковыми ячейками в столбце B, заменив A из пользовательских вводов на B. Код активируется нажатием кнопки на моем листе Excel. Но после того, как я переместил свой лист Excel и переименовал его, мой код неожиданно перестал работать. Я добавил команды MsgBox и обнаружил, что по какой-то причине 'A из пользовательского ввода больше не заменяются' B '. У кого-нибудь есть идеи, почему функция замены больше не работает. Спасибо заранее за любые предложения.

Я только несколько недель начал писать код на VBA go, и я впервые использую этот форум. Так что, если что-то в моем вопросе описано довольно запутанно или в какой-то важной информации не хватает моих извинений за это, и, пожалуйста, не стесняйтесь спрашивать!

Public Sub rewrite_eurogentec_universal()
    Range("c3", "d1048576").Clear
    Range("b2", "b1048576").Clear
    'Dim startmyRange, endmyRange, startnewRange, endnewRange As String
    startmyRange = InputBox("With which cell start does your list of oligos start?")
    endmyRange = InputBox("With which cell start does your list of oligos end?")
    startnewRange = Replace(startmyRange, "A", "B")
    startnewRange = Replace(startmyRange, "a", "B")
    endnewRange = Replace(endmyRange, "A", "B")
    endnewRange = Replace(endmyRange, "a", "B")
    MsgBox (startmyRange & " " & endmyRange)
    MsgBox (startnewRange & " " & endnewRange)
    Range(startnewRange, endnewRange).Value = Range(startmyRange, endmyRange).Value
    MsgBox (startmyRange & " " & endmyRange)
    MsgBox (startnewRange & " " & endnewRange)
    Call DNA_eurogentec_universal(Range(startnewRange, endnewRange))
    Call RNA_eurogentec_universal("(", ")", "r", Range(startnewRange, endnewRange)) 
    Call RNA_eurogentec_universal("[", "]", "m", Range(startnewRange, endnewRange))
    Call RNA_eurogentec_universal("{", "}", "l", Range(startnewRange, endnewRange))
    Call eurogentec_universal_s_o(Range(startnewRange, endnewRange))
    Range("C2:D2").Select
    endnewRange = Replace(endnewRange, "B", "D")
    Selection.AutoFill Destination:=Range("C2", endnewRange), Type:=xlFillDefault
    ActiveSheet.Columns.AutoFit
End Sub


1 Ответ

0 голосов
/ 26 марта 2020

Код не работает (если ввод «A»), потому что второй строчный replace возвращает startnewrange обратно к исходному значению.

startnewRange = Replace(startmyRange, "A", "B")
startnewRange = Replace(startmyRange, "a", "B")

Корректировка заключается в использовании заглавных букв вход и использовать один заменить

startnewRange = Replace(UCase(startmyRange), "A", "B")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...