Jump to content

Leaderboard


Popular Content

Showing content with the highest reputation since 11/18/2009 in Posts

  1. 9 points
    exceloy

    Libro «Spreadsheet Limits»

    Hola a todos. Soy Eloy Caballero y quería compartir con vosotros este recurso. Se trata de un libro sobre los límites de las hojas de cálculo en el que empecé a trabajar en 2014 como una presentación para el grupo Eusprig. Después fui recogiendo más experiencias, ejemplos, macros, y ordenándolas y salió el documento que os podéis descargar desde el enlace que os adjunto. Está escrito en inglés, pero a un nivel intermedio que se entiende bastante bien. En fin, espero que os sirva. Saludos Spreadsheet Limits
  2. 8 points
    Antoni

    Albun de imagenes

    Aquí os dejo el Visor de Imágenes. Cada hoja es un álbum, en cada álbum se admite cualquier número de imágenes. Las imágenes pueden estar en cualquier carpeta/subcarpeta, basta con poner la ruta completa. Al abrir el adjunto, pulsar sobre la imagen de la cámara en la hoja Inicio, se abrirá un formulario, seleccionar un ÁLBUM y pasar el mouse por encima de las mini-imagenes para agrandarlas. Ahora estoy con otro formulario para crear los álbumes. Visor de imágenes
  3. 6 points
    ¡Hola, a todos! Explicaré el por qué el uso de la fórmula con un ejemplo más pequeño. Al entenderse, puede ser extrapolable a un conjunto de caracteres un poco más grande (hasta 15 dígitos, límite numérico de Excel). Una cosa importante a tener en cuenta es que, en mi sistema, mi separador decimal es la coma ( , ) ; mi separador de argumentos es el punto y coma ( ; ), y mi separador de constante matricial de filas también es el punto y coma ( ; ). Esta es la fórmula completa, la cual separo por colores para entender un poco su razón de ser cuando se desmenuce, por partes: = ENTERO(VNA(-0,9;;SI.ERROR(EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)%;"")))&"" La idea inicial es formar los números adecuados para que la función VNA haga el trabajo importante: armar el conglomerado numérico. Estos números deben cumplir con dos condiciones: Armarse de forma invertida en su conglomerado. Estar divididos por 100. ¿La razón? se explicará cuando se vea la parte de VNA. Para el ejemplo explicado, tendremos el texto en la celda A2, y este será: 1X43YZ2 Hay que saber que la tecla F9, lo que hace es evaluar una fórmula o una referencia dentro de una fórmula en Excel. Si se seleccionan partes de la fórmula, y se presiona F9, se observarán todas las constantes matrices y/o resultados que se evidenciarán en la explicación que haré a continuación. Vale la pena aclarar que se debe seleccionar de forma correcta cada parte (número de paréntesis correcto, sobre todo), puesto que si no la evaluación generará un error. Empezando de adentro hacia afuera, empezamos por la parte azul: = FILA(A$1:INDICE($A:$A;LARGO(A2))) Esta parte genera una constante matricial de filas. Cabe notar que este tipo de matrices suele construirse con la combinación de FILA(INDIRECTO(...)), o también con FILA(DESREF(...)) pero, por la volatilidad de INDIRECTO y DESREF, prefiero evitarlas. = FILA(A$1:INDICE($A:$A;LARGO(A2))) = {1;2;3;4;5;6;7} Necesitamos invertir esta matriz en su orden. Para hacerlo, lo combinamos con la función LARGO y sumamos 1: = LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1 = 7 - {1;2;3;4;5;6;7} + 1 = {6;5;4;3;2;1;0} + 1 = {7;6;5;4;3;2;1} Ahora, realizamos la extracción de cada caracter del texto, y para eso, usamos la función EXTRAE: = EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1) = EXTRAE(A2;{7;6;5;4;3;2;1};1) = {"2";"Z";"Y";"3";"4";"X";"1"} Seguido a esto, como necesitamos que cada número quede dividido por 100, lo que podemos hacer es usar el símbolo %, el cual se puede también interpretar como un operador, el cual, lo que hace es dividir por 100. Hay que entender algunas cosas aquí: La matriz anterior está comprendida por textos, puesto que cada elemento está entre comillas Cualquier operación matemática realizada a un texto: Si es un texto numérico, lo convierte en número; mientras que si es un texto, genera un error #¡VALOR!. Usando entonces el operador %: = EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)% = EXTRAE(A2;{7;6;5;4;3;2;1};1)% = {"2";"Z";"Y";"3";"4";"X";"1"}% = {0,02;#¡VALOR!;#¡VALOR!;0,03;0,04;#¡VALOR!;0,01} Envolviendo esta matriz con la función SI.ERROR, nos encargamos que esos errores #¡VALOR! se conviertan en cadenas de texto vacías. = SI.ERROR(EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)%;"") = SI.ERROR({0,02;#¡VALOR!;#¡VALOR!;0,03;0,04;#¡VALOR!;0,01};"") = {0,02;"";"";0,03;0,04;"";0,01} Ahora bien, viene la parte de VNA, el cual es el que hace la magia: Esta es una función financiera, y aunque lo que vamos a hacer no tiene que ver con finanzas, con un artilugio hace lo que necesitamos: Unir solo los números de una cadena de texto. La función VNA (Valor Neto Actual o Valor Neto Presente), tiene como fórmula de ejecución la siguiente: Siendo: vi = Cada valor a operar t = tasa de interés i = período evaluado n = cantidad de valores a sumar Sintaxis de la función VNA: =VNA(tasa;valor1;[valor2];...) En nuestra función: = VNA(-0,9;;SI.ERROR(EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)%;"")) la tasa es -0,9. Este valor ha sido escogido estratégicamente para nuestro propósito. el valor 1 es 0 (el hecho de dejar un argumento vacío de esta forma, es lo mismo que si hubiese un cero ahí). Para verlo mejor, comento que: Esto: = VNA(-0,9;;SI.ERROR(EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)%;"")) Es igual a esto: = VNA(-0,9;0;SI.ERROR(EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)%;"")) ¿Por qué dejar el 0 en el primer valor? esto es para que los cálculos inicien desde el segundo valor, es decir, que la i inicialmente valga 2. Esto hará que el primer número sea entero, y los demás múltiplos de 10 al elevar la potencia. el valor 2 se compone de la constante matricial armada, la cual fue: = {0,02;"";"";0,03;0,04;"";0,01} Ahora bien, una cosa a tener en cuenta es que la función VNA ignora los textos, solo trabaja con los números que encuentre. Por lo que de ahora en adelante, podemos tener en cuenta nuestra constante matricial como: = {0,02;0,03;0,04;0,01} Entonces, siguiendo la fórmula previamente enseñada, tenemos que: Que es el valor requerido. ¿Por qué usar la función Entero? = ENTERO(VNA(-0,9;;SI.ERROR(EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)%;""))) En ocasiones, cuando se hacen operaciones con bastantes números, aparece lo que se llama en Excel la aritmética de punto flotante, la cual puede generar resultados no deseados. Si se quiere profundizar sobre el tema, ver el siguiente link: https://support.microsoft.com/es-co/help/78113/floating-point-arithmetic-may-give-inaccurate-results-in-excel ¿Por qué concatenar una cadena de texto vacía al final? = ENTERO(VNA(-0,9;;SI.ERROR(EXTRAE(A2;LARGO(A2)-FILA(A$1:INDICE($A:$A;LARGO(A2)))+1;1)%;"")))&"" Esto se hace para evitar que Excel convierta el resultado en notación científica de forma automática cuando se realiza la fórmula. Finalmente, hay que tener en cuenta que la fórmula es matricial CSE, por lo que se debe introducir con la combinación de teclas Ctrl + Shift + Enter, en vez de Enter o Ctrl + Enter. Espero esta laaaaarga explicación ayude a los amantes de las fórmulas (como yo) a entender varios conceptos "formulianos" interesantes para diversos problemas. ¡Bendiciones a todos!
  4. 6 points
    avalencia

    Proteccion vb

    Me siento un pirata Abraham Valencia
  5. 6 points
    Antoni

    Generar cartas en excel

    Pues no, no has sido nada claro.
  6. 5 points
    Supongo que falta afinar alguna cosilla, pero en conjunto, resulta. Este ha sido mi post Nº 10.000 🙂 AYUDAEXCEL ENVIO DE PEDIDOS POP.xlsm
  7. 5 points
    Lo prometido es deuda: https://abrahamexcel.blogspot.com/2019/06/conectar-excel-con-excel-online-en.html Espero sea útil Abraham Valencia
  8. 5 points
    Haplox

    Estara "Malito" Haplox!!!???

    Me abrumáis . Sigo bien y por aquí (a ratos). Me he embarcado en algún nuevo proyecto a la vez que la carga en el curro ha subido, así que... O hay cerveza, o... En serio, gracias a todos. Lo único es que últimamente entro cuando puedo, y es poco para mi gusto
  9. 5 points
    Silvia

    Quiero sus puntos de vista.

    Bueno, ¿y si abres la botella de champagne, vas a invitarnos o no?, de eso depende la respuesta que te de. ________________________ (Imagino que hay sentimientos contradictorios, por un lado estás feliz y por otro..cuando piensas en todo el tiempo que invertiste... , solamente que en ese tiempo también aprendiste, así que vuelve a sentirte feliz .. , quien sabe y ahora empiezas con otro proyecto sobre el nuevo sistema. Además de seguro los resultados de tu proyectos los seguirán utilizando para comparar los resultados.. , por ejemplo en mi empresa, cambiaron de sistema contable desde Enero de este año, y yo usaba un Control de Activos Fijos en Excel que ahora lo uso solo para decirle al de sistemas que LOS RESULTADOS ESTAN MAL.. que corrija el sistema y bueno, como suele pasar, corrigen una cosa y se malogran otra.. , asi que..... rsrrsrss ) Saludos a todos. Silvia
  10. 5 points
    Snake

    Aniversario

    Hoy cumplo 1 año de estar registrado en este foro y me doy cuenta de que al paso del tiempo mi ignorancia aumenta.. Bueno, no aumenta, sólo me doy cuenta de que era mayor a lo que yo pensaba.. jaja. Así que seguiré por acá tratando de reducirla.. Saludos a todos.
  11. 5 points
    Haplox

    Aniversario

    Felicidades @Snake . Todos seguimos aprendiendo
  12. 5 points
    Silvia

    Aniversario

    FELIZ CUMPLEAÑOS SNAKE.. ! Me haces recordar los comentarios que yo hacía hace unos años.. incluso ya lo mío va para la próxima reencarnación, porque todo lo que me falta, no me dará esta vida para aprender.. jaja ... ahora ya no digo nada, porque ya me acostumbré.. jaja
  13. 5 points
  14. 5 points
    curanilahue, la vejes se lleva por dentro, uno de 40 puede ser viejo, obsoleto y uno de 70 puede ser joven y brillante... "Que viejo ni que nada"!!!, nunca te des por vencido y no sientas que no puedes porque la edad te limita, a no ser que quieras ponerte de gimnasta a los 50, claro está. Nunca pongas la edad de por medio para decir que no puedes. Aquí muchos saben lo que saben, sin haber ido a recibir un curso, todo lo han ido aprendiendo poco a poco de los que consultan o consultando, con seguridad tu sabes mas de macros que yo. En lugar de decir que no volverás a molestar, dinos que investigarás mas y cualquier cosa que no entiendas, continuarás consultado. La actitud debe ser positiva en todos los aspectos de la vida y aquí gustosamente te ayudaremos en lo que podamos; sin embargo, seguramente recibirás mas y mejor ayuda si te esfuerzas un poco más. Saludos a todos, que tengan un excelente y muy bendecido día. Silvia
  15. 4 points
    Antoni

    NÚMERO A LETRAS

    Con el tiempo que llevas por aquí ya deberías ser capaz de hacer una modificación tan simple como esta. UDF-Cifras a letras (1).xls
  16. 4 points
    Hola Has cometido varios errores que conllevan a que los archivos sean lentos y/o muy grandes. En tu caso es lo primero y se debe a: - Tienes miles de fórmulas en celdas en donde en realidad NO esperas un resultado inmediato. Esa es una mala costumbre. En realidad lo ideal es aplicar fórmulas solo en donde realmente se están llevando a cabo operaciones y no en celdas vacías en donde "a futuro" se espera escribir algo. Ah, ojo, incluso en aquellas celdas en donde una fórmula ya obtuvo su resultado y dicho resultado no va a cambiar, pues lo ideal es copiar y pegarla como valor. ¿Qué hacer? Elimina esas miles de fórmulas. - Tienes miles de celdas en donde has aplicado diversos formatos a pesar de que están vacías ¿qué hacer? Elimina esas filas y columnas en blanco en las cuales has aplicado formatos. Eso. Abraham Valencia
  17. 4 points
    Antoni

    Efecto Botones en formulario

    A grandes males, grandes remedios, una de las soluciones consite en poner un label transparente que ocupe todo el formulario, eso si, tendrás que detectar los click de los botones por la posición del cursor al hacer click sobre el label. Te dejo un ejemplo con el botón Salir (Image6) solucionado. He quitado el fondo del formulario para poder subir el archivo. Menú.xlsm
  18. 4 points
    Hola Hay varios controles ActiveX (y otros) que son "heredados" del "viejo" VB 6.0 y que no son compatibles con los Office de 64 bits y no hay forma de cambiar eso y justamente entre ellos está el DtPicker (y no es el único). En general la recomendación es siempre usar controles compatibles con los Office de 32 o 64 bits y con toda versión de Office. Abraham Valencia
  19. 4 points
    Sería así: ActiveSheet.Name = Range("C2") Saludos,
  20. 4 points
    Gracias a todos por preocuparse a mi solicitud y a sus comentarios pero Antoni tiene toda la razón los domingos no trabajamos y esa era mi preocupación por si el 31 cae en domingo, mañana se activará la instrucción proporcionada por Leopoldo y para el próximo año aplicare la recomendación de Ikanni claro antes la probaré para estudiar su funcionalidad. Antes de despedirme les deseo lo mejor para este año 2019 a todos los del foro en especial a Leopoldo Blancas, Antoni, Gerson Pineda que sin sus apoyos y observaciones (regaños jajaja) no fuese posible ir aprendiendo. Feliz año. Gracias
  21. 4 points
    Antoni

    Albun de imagenes

    No cerreis el tema, estoy trabajando en un visor de imágenes. Ya avisaré.
  22. 4 points
    También se puede resolver sin acudir a una gota de VBA Saludos Contar vocales y consonantes_GP.rar
  23. 4 points
    la esperanza se mantiene por siempre, y el ejemplo... (veo que hay mucha tela de donde cortar acerca de las "lenguas muertas", así que...) te lo dejo por 72 horas saludos, hector.
  24. 4 points
    Antoni

    Cambio de color al recibir un enfoque

    Solo es posible con un módulo de clase. TextBoxes con módulo de clase.xlsm
  25. 4 points
    Error mio, me he olvidado de calificar un rango, mis disculpas. Sub HojasPorCategoría() Application.ScreenUpdating = False Set dmi = Sheets("DMI") For x = 2 To dmi.UsedRange.Rows.Count If dmi.Rows(x).Hidden = False Then '<---------------------------------------- If Existe(dmi.Range("F" & x).Value) = False Then Sheets.Add.Name = dmi.Range("F" & x).Value dmi.Rows(1).Copy ActiveSheet.Paste End If With Sheets(dmi.Range("F" & x).Value) dmi.Rows(x).Copy .Rows(.Range("A" & Rows.Count).End(xlUp).Row + 1) End With End If Next End Sub '------------------------------------------------- Private Function Existe(Hoja As String) As Boolean On Error GoTo ExitFunction Sheets(Hoja).Select Existe = True Exit Function ExitFunction: End Function
  26. 4 points
    Gerson Pineda

    Extraer valores masivos

    Naaaada que ver, es mi esposa
  27. 4 points
    Gerson Pineda

    Extraer valores masivos

    Parece que alguien no me contó la novela , a ver si te animas @Haplox o tu @Silvia
  28. 4 points
    Antoni

    Modificar un número

    A mi me gusta mas así: Range("A2") = Round(Range("A1") / 1000, 2)
  29. 4 points
    johnmpl

    Concatenar Rango bajo criterio

    ¡Hola de nuevo, @RandalHP! Para ocultar los valores que no tienen código en la columna A, apliqué formato condicional de la siguiente manera: 1. Selecciono el rango con las fórmulas de la columna C, asegurándome que quede activa la celda C1 (Importante) 2. Voy a la Ficha Inicio, Grupo Estilos, Opción Formato Condicional 3. Voy a Nueva Regla, luego a "Utilice una fórmula que determine las celdas para aplicar formato", y aplico la siguiente fórmula: =A1="" (si A1 está vacía, entonces aplique el formato). 4. Luego, hago clic en formato, voy a la Pestaña Número, Categoría Personalizado, y debajo de tipo escribo ;;; (tres puntos y coma). Este formato personalizado se aplica para que no se muestre nada en las celdas que seleccione). Como es en formato condicional, solo se aplicará a las celdas que cumplan con la condición establecida, la cual corresponde a las que corresponden en la misma fila con celdas vacías en la columna A. ¡Listo! ¡Bendiciones!
  30. 4 points
    José_Santos

    Enviar Whatsapp desde Excel

    Hola a todos, Algo de documentación que utilizan los desarrolladores profesionales para interactuar con REST API´s, en este caso para la de Whatsapp. https://www.waboxapp.com/assets/doc/waboxapp-API-v2.pdf Los pasos a seguir en la mayoría de los casos son: 1.- Autenticarse y obtener token de acceso para luego ser utilizado en las solicitudes http correspondientes. 2.- Enviar solicitud http correspondiente (incluyendo el método apropiado GET/POST/PUT/DELETE/PATCH) dependiendo si queremos leer mensajes, enviarlos, enviar foto, fichero, etc. En estas solicitudes debemos enviar el token de acceso obtenido en el punto anterior. 3.- Formatear la respuesta recibida para la solicitud del punto anterior. Normalmente se recibe en formato JSON. Normalmente para trabajar con REST API´s se utiliza JavaScrip, Python, etc... pero con VBA también se puede hacer obteniendo un resultado idéntico. Todo un mundo... el de las REST API´s!!!! YouTube, Facebook, Twitter, SalesForce, etc tienen su propia REST API´s que nos indica como debemos utilizarla para extraer información o mismamente subirla a la nube. Saludos.
  31. 4 points
    Antoni

    Fórmulas o macros

    Mas que una consulta, se trata de pensamiento filosófico existencial: ¿Debemos usar siempre que podamos fórmulas? A raiz de esta consulta en el foro de fórmulas, Extraer rangos numéricos me he puesto a pensar. La consultante plantea un problema que afecta a 50.000 filas. La solución de Silvia, brillante como siempre , suponen 100.000 fórmulas. Esta macro de algunas pocas líneas hace lo mismo. Sub BuscarIntervalos() Application.ScreenUpdating = False For x = 5 To Range("B" & Rows.Count).End(xlUp).Row Range("D" & x) = Range("B" & x) Range("E" & x) = "" x1 = x + 1 Do Until Range("B" & x1) <> Range("B" & x1 - 1) + 1 x1 = x1 + 1 Loop If Range("B" & x1 - 1) <> Range("B" & x) Then Range("E" & x) = Range("B" & x1 - 1) End If x = x1 - 1 Next End Sub Apunto esto como reflexión en una aburrida y angustiosa tarde de calor (40º), .......... a lo mejor es que se me han frito los sesos. Ya se, ya se, esto mejor en la Cafetería, a la próxima, ¿Vale?. .
  32. 4 points
    Haplox

    ELIMINAR REGISTRO ARRAY

    Ya me imaginaba yo...
  33. 4 points
    Antoni

    ELIMINAR REGISTRO ARRAY

    Pues como no podía ser de otra manera, yo lo veo diferente a como lo ve Haplox. Yo he partido de la base que el último registro de cada código ya tiene los datos acumulados, por lo que para establecer el ranking, he eliminado el resto de los registros de cada código. Revisa el adjunto. La hoja Hoja2 puede ocultarse, pero no eliminarse. Nota: He eliminado registros para que el archivo no pasara de los 100 Kb. MiArrayN Antoni.xlsm
  34. 4 points
    Internet es un medio en el que nos comunicamos con palabras, pero sin ver las intenciones. No era mi intención faltar a nadie si se supiera el ánimo con que dije lo anterior, pero solo escribimos Debes comprender que el que pregunta siempre tiene muy claro que quiere y que es lo que tiene, pero el que da alguna ayuda solo tiene lo que se ha expuesto en la pregunta, y con esto debe propporcinar un código. Por eso la ayuda se presta en función de lo que se pide, sin entrar en darle vueltas a todos los posibles cambios que vosotros tenéis claro que podéis hacer. Está bien intentar aprender, y por lo tanto exponer dudas (como las tuyas), aclarando eso, que son dudas, sino se da por hecho (de nuevo solo leemos sin saber la intención) que se buscan nuevos cambios sobre lo preguntado. Lo dicho, en ningún momento mi internción fue el faltarte al respeto, si no no hubiese seguido proporcionándote la nueva solución
  35. 4 points
    Antoni

    ayuda formulario de productos

    ¿A tu médico también le envías una foto cuando estás enfermo?
  36. 4 points
    Algo bruja si que es,....jajaja
  37. 4 points
    La tiene @Silvia
  38. 4 points
    hola @SANTUY, somos buenos, pero no somos adivinos, ni tenemos una esfera de cristal que de todas las respuestas y menos di no proporcionas mayores detalles o el archivo de ejemplo. Saludos
  39. 4 points
    hola efradncr has probado utilizando la función sumar.si? saludos Silvia
  40. 4 points
    Que tal estimados. Otra alternativa seria usar la misma funcion que integra excel "REDOND.MULT" Saludos Libro1.xlsx
  41. 4 points
    johnmpl

    Duda sumar y filtrar

    ¡Hola, a ambos! En el adjunto, dejo dos formas sin alterar la configuración actual de tus datos. 1. Con Formulación. En las columnas J - K tienes la información del TOP 10 de los usuarios ordenados de mayor a menor por cantidad. En la celda J1 tienes una lista desplegable de los 4 meses, y en la celda K1 puedes colocar el número de datos que quieres traer (tiene formato personalizado, es un número). Los mismo sucede en las columnas M - N con Columnas Auxiliares en P - Q (las cuales puedes ocultar) y con ayuda de un rango nombrado para hacer la formulación más corta. Analízalo con detenimiento. 2. Con Consolidación de Datos por TD. Puedes presionar el atajo discontinuo ALT T + B para sacar el "Asistente para Tablas y Gráficos dinámicos". Aquí dejo algunas capturas de pantalla para que te guíes como hacerlo. También involucré la Segmentación de Datos, para que puedas seleccionar el mes que quieras analizar, y apliqué el filtro de 10 mejores, el cual puedes editar. ¡Bendiciones! suma top 10.xlsx
  42. 4 points
    johnmpl

    COMO SUMAR FECHAS

    ¡Hola, @Serch! Revisa el adjunto, con una propuesta. ¡Bendiciones! Fechas.xlsx
  43. 4 points
    DiegoPC

    Programación a partir de fecha

    Hola, adjunto dos opciones. En el comentario de la columna D pongo las dos formas que se me ocurrieron Cuentas 2018.xlsx
  44. 4 points
    Es que programan desde que se hacía con Abaco
  45. 3 points
    Hola jose_luisc, al igual que el maestro Toldeman, te dejo otra opción válida para lo que pretendes con alguna que otra diferencia tal como que además de resaltar la fila en la que te encuentras también resalta la celda activa, y otra diferencia es que si te sales de la tabla deja de resaltar tanto la fila como la celda activa y si añades nuevos datos a tu tabla automáticamente cuando te coloques sobre ellos se resaltaran. Un saludo Ejemplo_resaltarprueba1.xlsm
  46. 3 points
    Ahora voy a acabar de liarte. Las variables, en general, pueden ser de tres tipos: Públicas: Se definen al principio de cualquier módulo como Public y su valor permanece mientras no cierres el archivo o se produzca un error. Puedes usarlas en cualquier lugar. (macro/formulario, ....) Privadas a nivel de módulo: Se definen al principio del módulo y permanecen mientras se esté ejecutando cualquier macro/función del módulo. Privadas a nivel de procedimiento (Macro): Se definen dentro del procedimiento y permanecen solamente dentro del procedimiento. Los controles de formulario son objetos que solo permanecen mientras el formulario esté cargado, por lo que si ejecutas una macro antes de descargar el formulario (Unload), puedes referirte a cualquier control del formulario dentro de la macro, eso si calificando el objeto. Ejemplo, si tienes un formulario con el nombre MiForm y un textbox con el nombre TextBox1, en la macro puedes referirte al valor del control así: MiForm.TextBox1.Value . Los parámetros en una macro/función son posicionales, o sea, que el nombre de los parámetros es irrelevante. Vamos a un ejemplo de tu caso, quieres pasar el valor de 2 TextBox como parámetros a una macro, el primero contiene un valor numérico con el que quier hacer operaciones y el segundo, una descripción. En el formulario haríamos: MiMacro CDbl(Textbox1.Value), Textbox2.Value Y en un módulo: Sub MiMacro(Valor as Double, Descripción as String) ----------------------------------------------------------------------------------------------------------------------------------------------------------------- También podrías definir las variables como Public, modificar su contenido en el formulario y prescindir de los parámetros en la macro, así: En Un módulo: Public Valor as Double Public Descripción as String Sub MiMacro() En el formulario: Valor = CDbl(TextBox1.Value) Descripción = TextBox2 MiMacro ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Y para terminar, comentarte que me estoy ocupando de las validaciones a efectuar dentro del formulario. Hoy a última hora o mañana te comento algo. Nota: Esto es solo para que veas que yo también puedo enrollarme como una persiana.
  47. 3 points
    Hola @jorgerc Es mejor que separes los palabras en la BD, para hacerlo simple con formulas, pero si insistes en mantenerla asi, entonces te adjunto 2 opciones [Udf y formula] Revisa el archivo Saludos a todos! Busca palabras Udf_GP.rar
  48. 3 points
    Gerson Pineda

    Guardar varias hojas como Pdf

    No esperes [por lo menos de mi parte], que te vaya haciendo todo lo que pides [pues el tema de referencia es un gran avance para ti] Saludos
  49. 3 points
    @Antoni, Ya termine de ver tu Tutorial de Macros, en verdad esta muy Bueno!!!, No me aburrí y los termine de leer los 3. Deberías de hacer una Edición mas completa!!! Te felicito....!!!
  50. 3 points
    Ay. Mil gracias. Yo haciendo el ridículo desde tiempos inmemoriales.


  • Newsletter

    Want to keep up to date with all our latest news and information?
    Sign Up
×
×
  • Create New...

Important Information

Privacy Policy


CTA Templates.png