Estoy intentando obtener esta función en VBA pero soy nuevo en esto. Parece que no sé cómo puedo hacer esto:
Lo que estoy tratando de hacer es, para cada celda numérica de la columna B, quiero tomar las siguientes dos celdas de la columna H, es decir, si es B7, me gustaría tomar H8 y H9 (los siguientes dos valores de fila en H columna) y concatenarlos (son cadenas) y guardarlos en I7 (misma fila que B7) y finalmente eliminar los valores en H8,H9.
Hasta aquí llegué, sé que no es mucho.
Private Sub CommandButton1_Click()
Dim B As Range, H As Range, I As Range
For Each B In ClientTable.Columns(2).Cells
If IsNumeric(B) Then
(What should be done here?)
End If
Next B
End Sub
Respuesta1
Descubrí IsNumeric(B)
que esto es cierto para las celdas en blanco, por lo que cambié su If
declaración en consecuencia. Esto funcionó para mí:
If IsNumeric(B) And B <> "" Then
Cells(B.Row, 9) = Cells(B.Row + 1, 8) & Cells(B.Row + 2, 8)
Cells(B.Row + 1, 8) = ""
Cells(B.Row + 2, 8) = ""
End If
If B.Row > 9 Then Exit For
Obviamente 8
y 9
son los números de columna de H
y I
, respectivamente. Agregué el
If B.Row > 9 Then Exit For
línea porque tuve un problema con el bucle que no terminaba; si
For Each B In ClientTable.Columns(2).Cells
Funciona para ti, puedes sacar el If B.Row > 9 Then Exit For
.