Замена символов в ячейках перед «.» Или между «.» Vba - PullRequest
0 голосов
/ 04 марта 2019

Я пытаюсь заменить значения в ячейках, такие как

10.1
10.2
10.2.1
10.2.2
10.3

На входное значение, скажем, я хочу заменить строку 1 и 2 с 10.1 на 5.1, а затем начать другую серию замены для 10.2 10.2.1 и т. Д., Которые также могут быть разной длины символов, например 10.10.1, и отличаться от 3.1.1 3.1.2 ... поэтому, по сути, он заменяет всю первую цифру (ы) перед первой "." Для данного вводазначение, а затем перенумеровывает средние числа между «.» с другим входным значением, которое может быть х-2 и т. д. вот код, который я использую:

Sub replace ()
Dim rowstrt as string, rowstp as string
Dim i as integer
Dim oldsection as string
Dim newsection as string
Dim srt as string
Dim replacements as string
Dim numberofreplacements as long
Dim cell as variant

Rowstrt = inputbox(“please enter starting row number:”, “section numbering”)

Rowstp = inputbox(“please enter ending row number:”, “section numbering”)

Oldsection = inputbox(“current section number on worksheet for rows “ & rowstrt & “ through “ & rowstp & “:”, “section numbering”)

Newsection = inputbox(“replacement section number on worksheet for rows “ & rowstrt & “ through “ & rowstp & “:”, “section numbering”)

Startingposition = 1

Numberofreplacements = 1

Activesheet.cells(rowstrt,1).select
i = 1

For i = rowstrt to rowstp

Mycell = vba.replace(mycell, oldsection, newsection, startingposition, numberofreplacements)

Activecell.offset(1,0).select
Mycell = activecell

Next I

End sub

Моя проблема заключается в значениях моей ячейки не 'заменяется моим входным значением

1 Ответ

0 голосов
/ 04 марта 2019

Код ниже должен делать то, что вы хотите.

Sub ReplaceSectionNumber()
    ' "Replace" is a VBA object.
    ' don't use such names to name your procedures or variables.
    ' to check, select the word and press F1

    Dim rowStrt As String, rowStp As String
    Dim oldSection As String
    Dim newSection As String
'    Dim Srt As String
'    Dim Replacements As String
'    Dim NumberOfReplacements As Long
'    Dim Cell As Variant
    Dim Tmp() As String
    Dim R As Long

    rowStrt = InputBox("Please enter starting row number:", "Section numbering")
    rowStp = InputBox("Please enter ending row number:", "Section numbering")
    oldSection = InputBox("Current section number on worksheet for rows " & rowStrt & _
                          " through " & rowStp, "Section numbering")
    newSection = InputBox("Replacement section number on worksheet for rows " & rowStrt & _
                          " through " & rowStp, "Section numbering")

    Application.ScreenUpdating = False
    For R = rowStrt To rowStp
        Tmp = Split(Cells(R, "A").Value, ".")
        If UBound(Tmp) > 0 Then                 ' ignore like "10"
            If Tmp(0) = oldSection Then         ' ignore non-matching
                Tmp(0) = newSection
                Cells(R, "A").Value = Join(Tmp, ".")
            End If
        End If
    Next R
    Application.ScreenUpdating = True

'    startingposition = 1
'    NumberOfReplacements = 1
'    ActiveSheet.Cells(rowStrt, 1).Select
'    i = 1
'    For i = rowStrt To rowStp
'    Mycell = VBA.replace(Mycell, oldSection, newSection, startingposition, NumberOfReplacements)
'    ActiveCell.Offset(1, 0).Select
'    Mycell = ActiveCell
'    Next i
End Sub

Однако мой код не изменяет числа между периодами, потому что я не понимаю правил, по которым такие изменения могут быть сделаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...