Я уже день схожу с ума от этого, искал все подряд и, возможно, пытаюсь быть слишком милым так что я совсем застрял.
Я пытаюсь выполнить простую операцию if then
Если ячейка содержит "%", я бы хотел, чтобы она делала одно, а если нет, то другое. По непонятным мне причинам у меня не получается. Я явно взял пару идей откуда-то еще, но все еще не могу заставить их работать.
Усложняющие факторы. Я не хочу запускать это для всего столбца, а только для таблицы, поэтому он встроен в более крупную подсистему с использованием лотов или относительных ячеек ActiveCell. Я никогда не знаю, где в столбце А я наткнусь на «% изменения», поэтому диапазон всегда должен быть переменным. Я хочу, чтобы VBA/VBE делал что-то другое, когда встречал ячейку со знаком «%». SO
Вот как выглядят необработанные данные
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
Но когда я запускаю следующее, он застревает в плохом цикле, где он должен был выйти в «Если тогда», а не в «Иначе» часть суб.
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
Любая помощь приветствуется, спасибо!