Suchen Sie mit VBA eine Zeichenfolge in einer Zelle
Ich habe mich einen Tag lang verrückt gemacht, hoch und tief gesucht und versuche wahrscheinlich, zu süß zu sein, also stecke ich total fest.
Ich versuche dann ein einfaches zu betreiben
Wenn eine Zelle "%" enthält, möchte ich, dass sie eine Sache macht, und wenn nicht eine andere. Aus Gründen, die ich nicht verstehe, kann ich es nicht zum Laufen bringen. Ich habe eindeutig ein paar Ideen von anderswo übernommen, kann sie aber immer noch nicht zum Laufen bringen.
Komplizierende Faktoren - Ich möchte dies nicht für die gesamte Spalte ausführen, sondern nur für eine Tabelle. Daher wird es mithilfe von Lots oder relativen ActiveCells in ein größeres Sub eingebettet. Ich weiß nie, wo ich in der A-Spalte auf "% Change" stoßen werde, daher muss der Bereich immer variabel sein. Ich möchte, dass VBA / VBE etwas anderes macht, wenn es auf eine Zelle mit dem "%" darin stößt. SO
So sehen die Rohdaten aus
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
Aber wenn ich das Folgende laufen lasse, bleibt es in einer schlechten Schleife stecken, wo es in das "Wenn Dann" herausgezogen werden sollte, im Gegensatz zum "Anderen" Teil des U-Boots.
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
Alle Hilfe wird geschätzt, danke!