Colocar en una celda Excel una fórmula mediante VB

Estoy Intentando hacer mediante código que en la columna "F" de mi hoja de calculo me coloque una fórmula que me extrae los datos de la columna "A" sin el primer dígito independientemente de la fila donde me encuentro. Para ello elabore lo siguiente pero no he logrado que funcione correctamente.

Necesitaría si por favor me pudieran ayudar a lograrlo.

Sub CR1()

'Variables

Dim ColumnaD As Integer
Dim ColumnaF As Integer
Dim Fila As Integer

'Asigno el valor de las variables

ColumnaF = 6
ColumnaD = 1
Fila = ActiveCell.Row

Cells(Fila, ColumnaF).Formula = Mid(Cells(Fila, ColumnaF), 2, 20)
End Sub

2 respuestas

Respuesta
1

Intenta:

Cells(Fila, ColumnaF).Formula = "=Mid(" & Cells(Fila, ColumnaF).Address & ",2,20" & ")"

Saludos_

Muchísimas Gracias! 

Funciona excelente.

JRGCES Buenos días:

Con relación a la consulta, te comento que en realidad lo que intento hacer es que me elimine el primer dígito de la columna "A". Se me ocurrió hacerlo a través de una fórmula, con lo cual le agregue el siguiente código a continuación de lo que me pasaste para que me reemplace el nuevo valor de la columna A y me elimine la fórmula de la columna F.

Cells(Fila, ColumnaF).Formula = "=Mid(" & Cells(Fila, ColumnaD).Address & ",2,20" & ")"

Cells(Fila, ColumnaD) = Cells(Fila, ColumnaF) ' me reemplaza la columna A con el nuevo valor

Cells(Fila, ColumnaF) = "" ' me elimina la formula de la columna F

Mi pregunta es: ¿Hay forma de simplificar esto en lugar de hacer la fórmula y reemplazar el valor?

O sea que quite directamente el primer dígito del valor.

Desde ya muy agradecido.

Saludos

Jorge

No estoy seguro de entender qué es lo que necesitas, pero si se trata de eliminar el primer caracter de la celda de la columna A de la fila que esté seleccionada, quizás lo más cómodo sea utilizar el evento beforedoubleclick para que al hacer doble click en una celda se ejecute el código que quita el primer carácter de la columna A de la fila activa:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Cancel = True
    If Target.Cells.Count > 1 Then Exit Sub
    If Len(Me.Cells(Target.Row, 1).Value) > 1 Then Me.Cells(Target.Row, 1).Value = Mid(Me.Cells(Target.Row, 1), 2)
End Sub

El código tendría que ir en el módulo de la hoja (click derecho sobre su pestaña->ver código). Pruébalo sobre una copia del libro, por si acaso no hace lo que necesitas.

Saludos_

Muchas gracias!!!!

Funciona perfecto.

Saludos

Buenos días JRGCES

En realidad lo que estoy tratando de hacer es colocar un botón en mi barra de tareas que elimine el primer registro del datos siempre que sea "S". El código que me adjuntaste funciona excelente pero no me permite hacerlo en una macro de mi libro personal con un botón.

Tampoco logre ponerle la condición if para que verifique si el primer registro es una "S" y me muestre el Mensaje indicándome que no lo puedo hacer. Me pone el mensaje que no admite condición Me. ¿Podrías ayudarme por favor?

Desde ya estoy muy agradecido por tu buena voluntad.

Jorge

Buenos días JRGCES 

Me quedo esto pendiente y me parece que se cerro el tema.

En realidad lo que estoy tratando de hacer es colocar un botón en mi barra de tareas que elimine el primer registro del datos siempre que sea "S". El código que me adjuntaste funciona excelente pero no me permite hacerlo en una macro de mi libro personal con un botón.

Tampoco logre ponerle la condición if para que verifique si el primer registro es una "S" y me muestre el Mensaje indicándome que no lo puedo hacer. Me pone el mensaje que no admite condición Me. ¿Podrías ayudarme por favor?

Desde ya estoy muy agradecido por tu buena voluntad.

Jorge

Los "me" del código sólo funcionarán en el módulo de la hoja. Para que el código funcione en otro sitio, habría que sustituir los "me" por la hoja que sea, por ejemplo Worksheets("Hoja1")

Saludos_

Respuesta
1

Esto te puede orientar

https://youtu.be/jskse1mQ-sc

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas