Deseo coregir una macro de un formulario

EN UN ARCHIVO DE EXCEL en la hoja CLIENTES, CAmbie la POSICION de las columnas,, ya que hice un nuevo formulario para esa hoja, es decir,, la columna ID q esta en la pos 4 la coloque de primero, (2) y el móvil en la 4. Pero al hacer este cambio de columnas,,, el formulario de la hoja principal que carga los datos e introduce en la hoja para una factura,, los introduce erróneamente por que no los ubica,, en ves de colocar el ID coloca es el móvil,, no logro corregir el código de la macro,,

Solo es un cambio en el código del modulo 8

Envío el archivo,,

https://drive.google.com/open?id=1cyRFvTNiUVCxBFh3-ifElqensRUb6biZ 

Contraseña para entrar,, 5

El código esta en el MODULO 8 donde se llama la macro que carga el formulario FORMULARIOCLI

Los datos se cargan desde ese formulario para insertar en la hoja PRINCIPAL, (Factura)

El formulario se llama desde el botón BUSCAR PACIENTE

aplicando la formula  =SI(E$5="";"";BUSCARV(CLIENTES!C$8:$F$1500;COINCIDIR(E$5;CLIENTES!$B$8:$B$1500;0);3))

Envío foto

1 respuesta

Respuesta

Reemplaza tus códigos por estos códigos, como recomendación es mucho más eficiente trabajar con filtros (autofilter) ya que tienen como ventaja que puedes hacer el filtro por cualquier parte del nombre, esta programación que tienes es para cadena consecutiva

'Código para filtrar datos en el formulario de clientes

sub filterbyname()
dim clientes as worksheet: set clientes = sheets("clientes")
dim uf as integer
dim nombre as string
dim identidad as string
uf = clientes.range("c" & rows.count).end(xlup).row
if trim(formulariocli.clinombre.value) = "" and trim(formulariocli.cliidentidad.value) = "" then
formulariocli.listacli.rowsource = clientes.name & "!b8:f" & uf
exit sub
end if
autofiltermode = false
formulariocli.listacli = clear
formulariocli.listacli.rowsource = clear
for i = 8 to uf
nombre = clientes.cells(i, 3).value
identidad = clientes.cells(i, 2).value
if ucase(nombre) like ucase(formulariocli.clinombre.value) & "*" and ucase(identidad) like ucase(formulariocli.cliidentidad.value) & "*" then
formulariocli.listacli.additem clientes.cells(i, 2).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 1) = clientes.cells(i, 3).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 2) = clientes.cells(i, 4).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 3) = clientes.cells(i, 5).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 4) = clientes.cells(i, 6).text
end if
next i
end sub
sub filterbyid()
dim clientes as worksheet: set clientes = sheets("clientes")
dim uf as integer
dim nombre as string
dim identidad as string
uf = clientes.range("b" & rows.count).end(xlup).row
if trim(formulariocli.clinombre.value) = "" and trim(formulariocli.cliidentidad.value) = "" then
formulariocli.listacli.rowsource = clientes.name & "!b8:f" & uf
exit sub
end if
autofiltermode = false
formulariocli.listacli = clear
formulariocli.listacli.rowsource = clear
for i = 8 to uf
nombre = clientes.cells(i, 3).value
identidad = clientes.cells(i, 2).value
if ucase(nombre) like ucase(formulariocli.clinombre.value) & "*" and ucase(identidad) like ucase(formulariocli.cliidentidad.value) & "*" then
formulariocli.listacli.additem clientes.cells(i, 2).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 1) = clientes.cells(i, 3).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 2) = clientes.cells(i, 4).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 3) = clientes.cells(i, 5).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 4) = clientes.cells(i, 6).text
end if
next i
end sub
sub filterbyname()
dim clientes as worksheet: set clientes = sheets("clientes")
dim uf as integer
dim nombre as string
dim identidad as string
uf = clientes.range("c" & rows.count).end(xlup).row
if trim(formulariocli.clinombre.value) = "" and trim(formulariocli.cliidentidad.value) = "" then
formulariocli.listacli.rowsource = clientes.name & "!b8:f" & uf
exit sub
end if
autofiltermode = false
formulariocli.listacli = clear
formulariocli.listacli.rowsource = clear
for i = 8 to uf
nombre = clientes.cells(i, 3).value
identidad = clientes.cells(i, 2).value
if ucase(nombre) like ucase(formulariocli.clinombre.value) & "*" and ucase(identidad) like ucase(formulariocli.cliidentidad.value) & "*" then
formulariocli.listacli.additem clientes.cells(i, 2).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 1) = clientes.cells(i, 3).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 2) = clientes.cells(i, 4).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 3) = clientes.cells(i, 5).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 4) = clientes.cells(i, 6).text
end if
next i
end sub
sub filterbyid()
dim clientes as worksheet: set clientes = sheets("clientes")
dim uf as integer
dim nombre as string
dim identidad as string
uf = clientes.range("b" & rows.count).end(xlup).row
if trim(formulariocli.clinombre.value) = "" and trim(formulariocli.cliidentidad.value) = "" then
formulariocli.listacli.rowsource = clientes.name & "!b8:f" & uf
exit sub
end if
autofiltermode = false
formulariocli.listacli = clear
formulariocli.listacli.rowsource = clear
for i = 8 to uf
nombre = clientes.cells(i, 3).value
identidad = clientes.cells(i, 2).value
if ucase(nombre) like ucase(formulariocli.clinombre.value) & "*" and ucase(identidad) like ucase(formulariocli.cliidentidad.value) & "*" then
formulariocli.listacli.additem clientes.cells(i, 2).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 1) = clientes.cells(i, 3).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 2) = clientes.cells(i, 4).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 3) = clientes.cells(i, 5).text
formulariocli.listacli.list(formulariocli.listacli.listcount - 1, 4) = clientes.cells(i, 6).text
end if
next i
end sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas