Znajdź ciąg w komórce za pomocą VBA

Doprowadzałem się do szaleństwa na ten dzień, szukałem wysoko i nisko, i prawdopodobnie staram się być zbyt słodki, więc całkowicie utknąłem.

Próbuję uruchomić prosty, jeśli tak

Jeśli komórka zawiera „%”, chciałbym, aby zrobiła jedną rzecz, a jeśli nie inną. Z powodów, których nie rozumiem, nie mogę tego zmusić. Wyraźnie zebrałem kilka pomysłów z innego miejsca, ale nadal nie mogę go uruchomić.

Czynniki komplikujące - nie chcę tego uruchamiać w całej kolumnie, tylko w tabeli, więc jest ona osadzona w większym subwooferze za pomocą wielu lub względnych ActiveCells. Nigdy nie wiem, gdzie w kolumnie A natknę się na „% zmiany”, więc zakres zawsze musi być zmienny. Chcę, aby VBA / VBE zrobiło coś innego, gdy trafi na komórkę z „%”. WIĘC

Oto jak wyglądają surowe dane

Initial Value (6/30/06)

Value (12/31/06)

Net Additions (9/30/07)

Withdrawal (12/07)

Value (12/31/07)

Withdrawal (2008)

Value (12/31/08)

Addition (8/26/09)

Value (12/31/09)

Value (12/31/10)

Value (12/30/11)

Value (3/31/12)

% Change 1st Quarter

% Change Since Inception

Ale gdy uruchomię następującą, utknie ona w złej pętli, w której powinna była wyjść do „If Then” w przeciwieństwie do „Else” części sub.

Sub IfTest()
 'This should split the information in a table up into cells
 Dim Splitter() As String
 Dim LenValue As Integer     'Gives the number of characters in date string
 Dim LeftValue As Integer    'One less than the LenValue to drop the ")"
 Dim rng As Range, cell As Range
 Set rng = ActiveCell

Do While ActiveCell.Value <> Empty
    If InStr(rng, "%") = True Then
        ActiveCell.Offset(0, 0).Select
        Splitter = Split(ActiveCell.Value, "% Change")
        ActiveCell.Offset(0, 10).Select
        ActiveCell.Value = Splitter(1)
        ActiveCell.Offset(0, -1).Select
        ActiveCell.Value = "% Change"
        ActiveCell.Offset(1, -9).Select
    Else
        ActiveCell.Offset(0, 0).Select
        Splitter = Split(ActiveCell.Value, "(")
        ActiveCell.Offset(0, 9).Select
        ActiveCell.Value = Splitter(0)
        ActiveCell.Offset(0, 1).Select
        LenValue = Len(Splitter(1))
        LeftValue = LenValue - 1
        ActiveCell.Value = Left(Splitter(1), LeftValue)
        ActiveCell.Offset(1, -10).Select
    End If
Loop
End Sub

Cała pomoc jest doceniana, dziękuję!

questionAnswers(3)

yourAnswerToTheQuestion