El desplegable me discrimina 1 localidad VBA Excel
Muy bien no se como explicar esto porque no logro entender el motivo.
Tengo un formulario donde introduces 1 de 3 datos de una empresa y se te muestra en el listbox con la Población, Comarca y Provincia de dicha empresa. El problema es que el código me funciona correctamente menos con 1 población (que haya detectado). Adjunto unas imágenes para que veíais lo que pasa. La población que veo que no cambia comarca y provincia es BLANES
El codigo de carga de comarca y pronvia es este:
Private Sub municipi_Change() If num_equipament_final.Caption = "" Then municipi.Value = "" comarca.Value = "" provincia.Value = "" End If On Error Resume Next comarca.Value = Application.WorksheetFunction.VLookup(municipi.Value, Range("Municipi_comarca"), 2, 0) provincia.Value = Application.WorksheetFunction.VLookup(municipi.Value, Range("Municipi_comarca"), 3, 0) End Sub
y los datos de estan todos en la misma tabla y del mismo rango "Municipi_comarca" en la hoja Municipis i Comarques.
¿Cuál es el motivo porque me pasa esto?
Respuesta de Andy Machin
2
2 respuestas más de otros expertos
Respuesta de Abraham Valencia
2
Respuesta de Carlos Arrocha
Deberíamos hacer un club de los "anti On Error..." jajaja. Con gente que incia lo entiendo un poco, pero aL igual que tú, cuando veo gente que se supone conoce VBA años solo siento ¡Plop! en mi cabeza je je je. Ah, sobre tu consejo de evitar el "WorkSheetFunction" (y otros), pienso igual que tú pero no sé si es que ya estoy viejo o qué, siempre coloco cosas no obligatorias como eso, o "Let", o declarar variables completas y no resumidas, etc., porque creo (repito, creo/siento) que la gente nueva lo entiende mejor je je je. Reconozco que en cosas personales de VB.Net sí "voy al grano" (para mi trabajo casi nunca he usado VBA). Saludos. - Abraham Valencia
jaja si me estresa cuando veo a los "pro" poniendo el Resume Next jajaja. El tema de "WorksheetFunction" me atrevo a decir que es un bug de Microsoft, pero es solo una especulación mía. Yo la verdad es que aprendí VBA a regañadientes, honestamente no me gusta, pero tuve que aprenderlo porque trabaje 8 años con un programador que hacia todo en Access con VBA y no quería cambiar, así que me tocó aprender. Igual le agradezco porque los programadores debemos saber la mayor cantidad de lenguajes posibles. - Andy Machin
Si mal no recuerdo, la explicación de Microsoft en algún momento fue de que... al analizar un objeto más, podía causar problemas, en buena cuenta: Un Bug nunca solucionado como tú mencionas jejeje. A mí me gusta mucho el VBA, me encanta la verdad, ah, el de Access sí lo usaba hace muchos años por trabajo porque la ONG en dónde trabajé una década no adquiría MySQL o SQLServer para las bases de datos jejeje. Ah, me estresa también cuando la gente cree que hace sistemas con VBA, lo siento, pero tenía que decirlo jejeje. Saludos. - Abraham Valencia
A mi no es que no me guste VBA, de hecho me gusta porque es fácil, la sintaxis es un estilo tipo Phyton de semántica dinámica, sin caracteres extraños. Como dicen "Si sabes Ingles, sabes Phyton". El problema con VBA es sus limitaciones, a veces una cosa que se hace muy simple en otro lenguaje, en VBA hay que hacer malabares para conseguirlo. Si hablamos de estres, también cuando ponen Set Objeto = Nothing antes de End Sub. Me parece ridículo, hay un experto aquí que le pone eso a casi todas sus macros. Respondí sobre eso no hace mucho. - Andy Machin
Aqui esta el link de la respuesta. VBA cuenta con un Garbage Collector, en conclusion, no es necesario destruir ibjetos manualmente en VBA.Cuando se debe usar = Nothing en Excel - Andy Machin
A mí me gusta mucho por la facilidad, justamente, no tanto por mí que soy de la "vieja guardia", sino por el usuario común, ya que induce a empezar a programar en lenguajes "mejores". Un dilema de este foro es la falta de discusión teórica o de debates entre programadores "viejos" (como yo je je je), recomiendo para eso Ayuda Excel o Todo Excel. Un ejemplo, lo de Nothing, lo conozco bien pero te copio/pego algo de esta conversación: https://ayudaexcel.com/foro/topic/41864-como-utilizar-nothing - Abraham Valencia
Hay algo muy relacionado a las buenas costumbres, como dice Gerson. La declaración de variables es una, no necesariamente obligatoria en VBA, pero que definitivamente ayuda (al menos en "algo") a acelerar los proceso además de ayudar a mejorar el orden o que otros entiendan lo que se está haciendo. Otra buena es el dejar libres dichas variables, como con el uso de Erase o el Nothing con Set. Tampoco necesarios ya que el "End Sub" libera toda la memoria. Yo, como soy de la "vieja guardia", siempre, pero absolutamente los uso. Desde mi "viejo" punto de vista, los buenos programadores jamás dejarán de usar esas cosas. - Abraham Valencia
Lo segundo es mi opinión y tiene algo de relación a lo que te comentaba hace un rato: Creo que los novatos igual pueden ordenarse un poco al ver esas "viejas" costumbres. Como ves, soy consciente de que el "En Sub" hace su trabajo, pero igual en mi caso lo uso por costumbre y otros. Por cierto, en tu explicación del enlace, definitivamente muchos lo hacen por la razón 1, con el grupo de amigos de los otros foros, te aseguro que somo la opción 2. Si entras a esos foros, los conocerás (Cacho, Gerson, Hector Miguel, etc.) Todos tenemos entre 12 y 20 años en foros... estamos viejos :p - Abraham Valencia
PD: Eso no quita que sí, hay "expertos" que creen que realmente sirve ante del End Sub je je je - Abraham Valencia
Yo nunca fui de "forear" tanto, conozco este foro precisamente porque hace muuuchos años cuando tuve que aprender VBA hice una pregunta aquí, no recuerdo que fue, pero creo que pude resolver lo que necesitaba. Por eso en marzo de este año, por alguna razón me vino a la mente el recuerdo de este foro y decidí participar, esta vez como experto, y devolver el favor jajaja. Pero sin duda le echaré una mirada a esos que me recomiendas :) - Andy Machin