Jump to content
Sign in to follow this  
DRAMIDOM

[CERRADO]Ayuda con macro para poder terminarlo

Recommended Posts

Hola a Todos, esta vez traigo un macro que he ido adaptando a lo que necesito, el macro ya esta casi listo, solo necesito que algunos combox me funcionen, me presenta un error al guardar el archivo, necesito que en otra de las funciones me sume los totales y que genere un numero que vaya aumentando. He colocado un ejemplo para que puedan entenderlo mejor.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Bueno se q es mucho lo q estoy pidiendo y dificil, tan bien, por lo menos quiero saber como hacer con los combox, para que estos busquen en otra hoja y aparezcan en los texbox, en la parte de comentarios, ya q no he logrado esa parte, solo pude en la parte de los codigos. ademas que este me busque los No. de cartas y fechas. lo demas vere como puedo ir solucionandolo.

Si tienen algun consejo. pues aca estoy.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Bueno se q es mucho lo q estoy pidiendo y dificil, tan bien, por lo menos quiero saber como hacer con los combox, para que estos busquen en otra hoja y aparezcan en los texbox, en la parte de comentarios, ya q no he logrado esa parte, solo pude en la parte de los codigos. ademas que este me busque los No. de cartas y fechas. lo demas vere como puedo ir solucionandolo.

Si tienen algun consejo. pues aca estoy.

ok, amigos coloco parte del macro. El que en esta ocasion utilizo para guardar es este. la formula me funciona bien ya que me guarda los datos en la hoja llamada Relacion, pero necesito que al igual se me guarde en la hoja devolucion. pero solo en ciertas cerdas.

Necesito saber que modificar.

Private Sub Guardar_Click()

'definimos las variables

Dim iFila As Long

Dim ws As Worksheet

Set ws = Worksheets(3)

' Encuenta la siguiente fila vacía

iFila = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

' Verifica que se ingrese un nombre

If Trim(Me.Proveedor.Value) = "" Then

Me.Proveedor.SetFocus

MsgBox "Debe ingresar el Nombre del Proveedor"

Exit Sub

End If

If Trim(Me.Direccion.Value) = "" Then

Me.Direccion.SetFocus

MsgBox "Debe ingresar la Direccion"

Exit Sub

End If

If Trim(Me.Telefono.Value) = "" Then

Me.Telefono.SetFocus

MsgBox "Debe ingresar el Telefono"

Exit Sub

End If

If Trim(Me.Tipo.Value) = "" Then

Me.Tipo.SetFocus

MsgBox "Debe ingresar el Tipo"

Exit Sub

End If

If Trim(Me.Provincia.Value) = "" Then

Me.Provincia.SetFocus

MsgBox "Debe ingresar la provincia"

Exit Sub

End If

If Trim(Me.Cantidad.Value) = "" Then

Me.Cantidad.SetFocus

MsgBox "Debe ingresar la Cantidad"

Exit Sub

End If

If Trim(Me.Valor.Value) = "" Then

Me.Valor.SetFocus

MsgBox "Debe ingresar el Valor"

Exit Sub

End If

If Trim(Me.Causa_1.Value) = "" Then

Me.Causa_1.SetFocus

MsgBox "Debe ingresar el comentario"

Exit Sub

End If

If Trim(Me.Causa_2.Value) = "" Then

Me.Causa_2.SetFocus

MsgBox "Debe ingresar el comentario"

Exit Sub

End If

If Trim(Me.Causa_3.Value) = "" Then

Me.Causa_3.SetFocus

MsgBox "Debe ingresar el comentario"

Exit Sub

End If

If Trim(Me.NoCarta.Value) = "" Then

Me.NoCarta.SetFocus

MsgBox "Debe ingresar el No. de Carta"

Exit Sub

End If

If Trim(Me.Fecha.Value) = "" Then

Me.Fecha.SetFocus

MsgBox "Debe ingresar la Fecha"

Exit Sub

End If

' Copia los datos a la tabla excel

ws.Cells(iFila, 1).Value = Me.Codigo.Value

ws.Cells(iFila, 2).Value = Me.Proveedor.Value

ws.Cells(iFila, 3).Value = Me.Direccion.Value

ws.Cells(iFila, 4).Value = Me.Telefono.Value

ws.Cells(iFila, 5).Value = Me.Tipo.Value

ws.Cells(iFila, 6).Value = Me.Provincia.Value

ws.Cells(iFila, 7).Value = Me.Cantidad.Value

ws.Cells(iFila, 8).Value = Me.Valor.Value

ws.Cells(iFila, 9).Value = Me.Causa_1.Value

ws.Cells(iFila, 10).Value = Me.Causa_2.Value

ws.Cells(iFila, 11).Value = Me.Causa_3.Value

ws.Cells(iFila, 12).Value = Me.NoCarta.Value

ws.Cells(iFila, 13).Value = Me.Fecha.Value

MsgBox "Se han guardados los datos en la Relacion y hoja de Devolucion"

End Sub

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola Dramidom

Te felicito vas por buen camino en tu proyecto.

Algunas sugerencias que a mi me han funcionado en la práctica, quizas alguna te sirva.

-Procurar utilizar funciones nativas de excel (por ejemplo filtro, filtros avanzados, funciones, etc) ya que con ello ganarás velocidad

-VBA es algo lento a la hora de ir comparando objetos (en ocasionas al utilizar celdas auxiliares te ayudan a ganar velocidad, por ejemplo para ordenar rangos)

En tu evento de inicio del primer form (que muestras arriba) puedes hacer un pequeño cambio que te ayudara a ganar velocidad en el momento de cargarse en memoria y consecuentemente al cuando oprimes tu boton limpiar.

Private Sub UserForm_Initialize()

Dim AllCells As Range, Cell As Range

Dim NoDupes As New Collection

Dim i As Integer, j As Integer

Dim Swap1, Swap2, Item

Dim ultcel As Long

' Lista de los valores para combobox

With Sheets("1a")

Set AllCells = .Range("a2:a" & .Range("A" & Rows.Count).End(xlUp).Row)

End With

' Elimina los datos duplicados

On Error Resume Next

For Each Cell In AllCells

NoDupes.Add Cell.Value, CStr(Cell.Value)

' Agrega los valores a una variable de tipo cadena

Next Cell

' Manejo de error

On Error GoTo 0

' Ordena los valores

For i = 1 To NoDupes.Count - 1

For j = i + 1 To NoDupes.Count

If NoDupes(i) > NoDupes(j) Then

Swap1 = NoDupes(i)

Swap2 = NoDupes(j)

NoDupes.Add Swap1, before:=j

NoDupes.Add Swap2, before:=i

NoDupes.Remove i + 1

NoDupes.Remove j + 1

End If

Next j

Next i

' Agrega los valores ordenados al combobox sin repetir valore

For Each Item In NoDupes

Me.Codigo.AddItem Item

Next Item

Codigos1.RowSource = "Comentarios!$A$2:$A$4"

Codigos2.RowSource = "Comentarios!$A$2:$A$4"

Codigos3.RowSource = "Comentarios!$A$2:$A$4"

End Sub

Te recomiendo que coloques las dudas especificas, asi una a una se podran ir solucionado, por ejemplo indicando el control o la formula con la duda, asi sera más rápido el avance.

Saludos cordiales

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM:

te adjunto el archivo solo he visto el UserForm1

Gracias voy a probar el archivo y luego vere si funciona con los requerimientos que necesito. De todos modos gracias, mil gracias.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola Dramidom

Te felicito vas por buen camino en tu proyecto.

Algunas sugerencias que a mi me han funcionado en la práctica, quizas alguna te sirva.

-Procurar utilizar funciones nativas de excel (por ejemplo filtro, filtros avanzados, funciones, etc) ya que con ello ganarás velocidad

-VBA es algo lento a la hora de ir comparando objetos (en ocasionas al utilizar celdas auxiliares te ayudan a ganar velocidad, por ejemplo para ordenar rangos)

En tu evento de inicio del primer form (que muestras arriba) puedes hacer un pequeño cambio que te ayudara a ganar velocidad en el momento de cargarse en memoria y consecuentemente al cuando oprimes tu boton limpiar.

Private Sub UserForm_Initialize()

Dim AllCells As Range, Cell As Range

Dim NoDupes As New Collection

Dim i As Integer, j As Integer

Dim Swap1, Swap2, Item

Dim ultcel As Long

' Lista de los valores para combobox

With Sheets("1a")

Set AllCells = .Range("a2:a" & .Range("A" & Rows.Count).End(xlUp).Row)

End With

' Elimina los datos duplicados

On Error Resume Next

For Each Cell In AllCells

NoDupes.Add Cell.Value, CStr(Cell.Value)

' Agrega los valores a una variable de tipo cadena

Next Cell

' Manejo de error

On Error GoTo 0

' Ordena los valores

For i = 1 To NoDupes.Count - 1

For j = i + 1 To NoDupes.Count

If NoDupes(i) > NoDupes(j) Then

Swap1 = NoDupes(i)

Swap2 = NoDupes(j)

NoDupes.Add Swap1, before:=j

NoDupes.Add Swap2, before:=i

NoDupes.Remove i + 1

NoDupes.Remove j + 1

End If

Next j

Next i

' Agrega los valores ordenados al combobox sin repetir valore

For Each Item In NoDupes

Me.Codigo.AddItem Item

Next Item

Codigos1.RowSource = "Comentarios!$A$2:$A$4"

Codigos2.RowSource = "Comentarios!$A$2:$A$4"

Codigos3.RowSource = "Comentarios!$A$2:$A$4"

End Sub

Te recomiendo que coloques las dudas especificas, asi una a una se podran ir solucionado, por ejemplo indicando el control o la formula con la duda, asi sera más rápido el avance.

Saludos cordiales

Gracias por el consejo, la verdad es q ahora es q estoy empezando a conocer un poco de esto.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM:

te adjunto el archivo solo he visto el UserForm1

Acabo de probar el archivo, aun hay cosas que no tienen la funcion que necesito, por ejemplo, el No de carta debe ir generando aumentando al final a medida que presione el boton guardar y esta se copien en la hoja de relacion y devolucion. las opciones de causa, esta debe funcionar con la cantidad de causa que haya o sea con el numero, de modo que yo pueda escojer la causa que necesite, ya que aunque use solo tres ejemplo. si tuviera que escojer solo uno, solo tendria que desplear el numero q corresponda a un comentario en especifico. el boton de guardar archivo, debe funcionar que guarde el archivo con el numero de la carta sin preguntar a menos que hubiera ya un archivo con ese numero cosa que no creo ya que como dije antes el numero de carta debe ir en aumento a medida que se guarda.

Por otra parte. en la opcion buscar deben sumarse la cantidad y el valor total de ese proveedor. pero para poder verlos independiente, al desplegar el numero de carta entonces si podria ver cuales fueron los comentarios y cantidad y monto de cada una. es decir que de esa opcion es q depende tanto la fecha como los comentarios.

Se que es mucho pedir y perdon por la salvedad de este comentario espero me hayas entendido. pero como dije antes gracias por la ayuda y se que puedo contar contigo quizas antes no me di a comprender mejor.

Cuento con tu ayuda. gracias.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM:

esto es referente al guardar archivo, lo otro lo vemos despues

Private Sub GuardarArchivo_Click()

Dim rngCód As Range

Dim wbkAct As Workbook

Dim wbkRec As Workbook

Dim varFic As Variant

Dim blnFin As Boolean

Set rngCód = Range("J2")´' Borrar esta fila y colocar el que esta abajo con rojo

Set rngCód = Worksheets("Devolucion").Range("J2")

Dejarlo como estaba antes

wbkRec.Close True, varFic

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Ok, acabo de entrar nuevamente al foro.

Estoy en espera de alguna otra respuesta de parte de Rolano o algun otro forista que pueda ayudarme a terminar el macro.

Mientras tanto de este lado intentare verificar a ver si me es posible solucionar algunas partes.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM:

te adjunto el archivo, con respecto a lo que falta no se si puedes adjuntar otro archivo en la hoja excel expliques como lo quieres.

Gracias por responder estaba en este momento subiendo el archivo de algunas cosas que ya solucione, pero por otra parte ya solo tengo dos problemas. al guardar los archivos, el archivo se guarda bien, pero me aparece la ventana de guardar como seguido de una nueva hoja.

y hay que corregir que aparezca el valor ya que lo que aparecen son las cantidades sumadas.

pero para mejor explicacion subo el archivo como lo llevo y las imagenes de que quiero q hagan.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM.

En el archivo ultimo que adjunte esta la solucion para el guardar archivo, con respector a lo otro para agregar los datos en el combobox codigo no es funcional para tu caso por tienes codigos repetidos y lo hace ese evento que tienes no copia los repetidos. checa bien el archivo que te adjunte mira lo que te sirve y luego vemos lo otro, que se necesita autofiltros pero en Macros.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM.

En el archivo ultimo que adjunte esta la solucion para el guardar archivo, con respector a lo otro para agregar los datos en el combobox codigo no es funcional para tu caso por tienes codigos repetidos y lo hace ese evento que tienes no copia los repetidos. checa bien el archivo que te adjunte mira lo que te sirve y luego vemos lo otro, que se necesita autofiltros pero en Macros.

oK , probe el archivo que enviaste, pero cuando guardo me aparece un error, por lo que no pude guardarlo, aqui te muestro el error.

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM:

En el Disco C:\ tienes que colocar una carpeta llamada Temp, para que el archivo se guarde en esa carpeta.

C:\Temp

Ok perdona si acaba de revisar y note que ese era el error.

ok Ahora por que parte podrias seguir? me hablaste del autofiltro. Como hacer pues para que al buscar las devoluciones me traiga los valores y montos totales pero para saber los detalles pueda elegir la carta que desee y saber por el numero de carta que valor se devolvio y por que comentario?

Share this post


Link to post
Share on other sites

Respuesta: Ayuda con macro para poder terminarlo

Hola DRAMIDOM:

has usado combobox dependientes, eso puede servir para cuando seleccionas el combobox codigo, el otro combobox se llene con los datos solo del codigo del primer comobobox, al tener esos datos en el segundo combobox al darle click de llenarse los textbox.

Seria bueno que revises bien los archivos y veas lo que sirve y adjuntes un archivo nuevo en base a eso seguir colaborando con tu proyecto

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...

Important Information

Privacy Policy