VBA excel

Hola. Verás mi pregunta es la siguiente.
Necesito hacer una interface gráfica con VBA para una hoja de calculo en excel, es decir, que desde la interfaz pueda mostrar el contenido de celdas y también modificar celdas introduciendo los datos desde la interfaz.
¿Cómo hago esto? Por ejemplo, ¿cómo consigo que lo que introduzco en un textbox al pulsar enter pase a ser el contenido de la ceda c5?
Gracias!
Respuesta
1
Es un poco complicado, la comunicación con Excel se hace por medio de COM (Component Object Model). Del cual tienes algo de información aquí: http://en.wikipedia.org/wiki/Component_Object_Model
Y en esta otra página tienes un buen ejemplo de como establecer excel como una variable objeto y luego accederla por código. http://www.dotnetpuebla.com/portal/Publicaciones/Tips/2054.aspx
Evidentemente requiere que leas y practiques un poco para entender bien el proceso. Asumiendo que tienes los conocimientos básicos, con el ejemplo de la ultima dirección tienes una buena base de inicio.
Le he echado un ojo a los links y la verdad es que al no tener nada de experiencia en Visual Basic no me entero apenas.
De todas formas voy a intentar explicarme de nuevo, porque igual no me expresé con claridad la primera vez. Mira con estos códigos sencillitos consigo que en un textbox aparezca el contenido de una celda (primer caso) y que el contenido del textbox se escriba en una celda.
Private Sub TextBox1_Change()
Sheets("Hoja1").Activate
Range("B2").Select
TextBox1 = ActiveCell.Value
End Sub
Private Sub Label1_Click()
Sheets("Hoja1").Activate
Range("B3").Select
ActiveCell.Value = TextBox1
End Sub
Lo que necesito sería algo parecido, solo que en el segundo caso en vez de copiar el contenido del textbox en la celda introduzca yo el valor que quiero, por ejemplo "Introduzca el valor de la celda b5" y al poner "15" apareciera 15 en la celda b5, quedando todo oculto por el formulario... y además lo ideal sería que no necesitara hacer click ni nada para que se actualicen, sino que se hiciera directamente.
Muchas gracias por todo y perdona mi ignorancia.
Disculpa por complicarte un poco las cosas, y más por haber confundido el VB con el VBA al leer tu pregunta. Por alguna razón habré visto "VB" y siendo ese el caso, la vinculación si se hace por COM. En el caso de VBA, que es el que requieres, al manera en que lo estas haciendo es correcta.
En relación a tu pregunta del segundo caso (en tu ejemplo). Lo más practico es usar un textbox, y con el mismo código, sin confirmación, a medida que se hace un cambio en el textbox, el valor de la celda cambia. El error lo veo en la penúltima linea: ActiveCell. Value = TextBox1, ya que a textbox1 le falta la propiedad .text.
Debería quedar así por ejemplo:
Private Sub TextBox1_Change()
Range("C8").Select
ActiveCell.Value = TextBox1.Text
End Sub
* Asumiendo que has hecho un Form,  el cual contiene un Textbox1
Este código asigna el valor de textbox1 a la celda C8 a medida que se teclea, no requiere ninguna confirmación, se actualiza a medida que cambia el valor.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas