Encuentra una cadena dentro de una celda usando VBA
Me he estado volviendo loca con esto por un día, buscada alta y baja, y probablemente estoy tratando de ser demasiado linda, así que estoy totalmente atascada.
Estoy tratando de ejecutar un simple si entonces
Si una celda contiene "%" me gustaría que hiciera una cosa, y si no otra. Por razones que no entiendo no puedo hacer que funcione. Claramente he tomado un par de ideas de otros lugares pero todavía no puedo hacer que funcione.
Factores complicados: no quiero ejecutar esto en toda la columna, solo en una tabla, por lo que está incrustado en un sub mayor utilizando lotes o ActiveCells relativos. Nunca sé en qué parte de la columna A voy a encontrar el "% de cambio", por lo que el rango siempre tiene que ser variable. Quiero que VBA / VBE haga algo diferente cuando se encuentra con una celda con el "%". ASI QUE
Aquí es cómo se ven los datos en bruto
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
Pero cuando ejecuto lo siguiente, se queda atascado en un bucle defectuoso en el que debería haberse insertado en "If Then" en lugar de en la parte "Else" del 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
Toda la ayuda es apreciada, gracias!