A diferencia de la consulta anterior donde el dato se introducirá en A1 y así fue desarrollada la macro, aquí mencionas la columna B2... bien, eso no existe. O se controla la celda B2 o se controla toda la columna B.
Si vas a controlar solo la celda B2, la macro enviada quedaría así:
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
Set ho2 = Sheets("Hoja2") 'declarar nombre de la hoja destino
'se controla lo ingresado en celda B2 de hoja activa
If Target.Address <> "$B$2" Then Exit Sub
'al limpiar la celda o borrarla no se ejecuta
If Target.Value = "" Then Exit Sub
'coloca el dato en col B de Hoja2
x = ho2.Range("B" & Rows.Count).End(xlUp).Row
ho2.Range("B" & x).Offset(1, 0) = Target.Value
'limpia la celda para ingresar otro número
[B2].Clear
[B2].Select
End Sub
Si en cambio vas a pasar todos los datos ingresados en columna B, la macro será de este modo:
Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
Set ho2 = Sheets("Hoja2") 'declarar nombre de la hoja destino
'se controla lo ingresado en columna B a partir de fila 3
If Target.Column <> 2 Or Target.Row < 3 Then Exit Sub
'al limpiar la celda o borrarla no se ejecuta
If Target.Value = "" Then Exit Sub
'coloca el dato en col B de Hoja2
x = ho2.Range("B" & Rows.Count).End(xlUp).Row
ho2.Range("B" & x).Offset(1, 0) = Target.Value
End Sub
Nota: son diferentes tus solicitudes para un mismo problema.
Debes dejar la consulta basándote en el modelo real, tal como lo necesitas. Porque fijate que te estoy enviando 3 macros diferentes porque tu consulta contiene referencias diferentes ... y luego quizás no sepas adaptarlas a tu modelo real.
Si el tema quedó resuelto no olvides valorar las respuestas.