Jump to content

vendetta86

Members
  • Content Count

    18
  • Joined

  • Last visited

About vendetta86

  • Rank
    Member
  • Birthday 01/07/1986

Contact Methods

  • Website URL
    www.surcoil.com

Profile information

  • Gender
    Hombre
  • Localización:
    Sevilla

Converted

  • Campos
    ,
  • Mi versión de Excel:
    2

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. Gracias, ahora no puedo depurar según tus notas pero en el momento que tenga un hueco lo hago y os cuento que tal.
  2. Ante todo gracia, espero de corazón poder algún día devolverte toda esta ayuda. Se que mis preguntas son un poco raras pero como has podido comprobar en el otro hilo estoy llegando a un punto en que excel no me responde, por lo tanto mi idea es optimizar al maximo la programación. Y conseguir gastar los menos recursos posibles. Uno de ello es este pues entiendo que no es lo mismo declarar una variable global, que extraer una cadena de un texto. Es por eso que intento saber cual usáis o recomendáis.
  3. Te lo paso el archivo, perdón por la estética pero me ha costado dejar el archivo en 0,1mb. el original son 850 lineas. Si le das al botón y después de que te pregunte el tamaño del ala de la bandeja veras que el excel se queda no responde. Excel no responde.xlsm
  4. Entiendo lo que quieres decir, pero la idea no entender ese mondongo si no que en base a vuestra experiencia es normal que excel se cuelgue temporalmente viendo el numero el numero de operaciones, puedo pasaros un archivo con la programación pero todo lo que necesita para funcionar la macro completa no. Puesto que hay precio e información que no puedo compartir. Por otro lado esta la duda ¿por que excel no usa todos los recursos del equipo? , ¿mejora si paso a una versión 64 bits ?. Un Saludo y espero que lo entendáis
  5. Buenas llevo días trabajando sobre una macro la cual realiza varios calculos, obtiene datos, etc. El problema es que cuando la ejecuto excel aparece como no responde. Tarda bastante y no veo que coja todo los recurso del pc. Dicho esto lanzo mis dudas. *Viendo esta programación creéis que es normal no espero que la entendáis, la idea es daros una visión del volumen . Private Sub CommandButton2_Click() Dim variable As String Application.ScreenUpdating = False Application.Calculation = xlCalculationManual Application.EnableEvents = False ActiveSheet.DisplayPageBreaks = False numero_de_cables = Application.CountA(Worksheets("Cable list ").Range("a:a")) ' introducir valor de ala For n = 1 To 2 ala = InputBox("Inicar tamaño de ala", "Título", 100) If ala <> Empty Then If ala = 0 Or ala = "" Then MsgBox "Introducir un valor" n = 1 Else n = 2 End If Else GoTo final End If Next n Cells(3, 25) = ala '1º buscar diametro del cable, peso y precio For ca = 11 To numero_de_cables + 7 pe = InStr(1, Cells(ca, 1), "-pe", vbTextCompare) n = InStr(1, Cells(ca, 1), "-n", vbTextCompare) npe = InStr(1, Cells(ca, 1), "-n-pe", vbTextCompare) If Cells(ca, 7) > 69 Or pe > 1 Or n > 1 Or npe > 1 Then Cells(ca, 9) = "1x" & Cells(ca, 7) Else If Cells(ca, 5) = "SCREENFLEX 110 VC4V-K" Then Cells(ca, 9) = Cells(ca, 6) & "x" & Cells(ca, 7) Else Cells(ca, 9) = Cells(ca, 6) & "G" & Cells(ca, 7) End If End If tipocable = Cells(ca, 9) modelo = Cells(ca, 5) & "_diam" modelo1 = Cells(ca, 5) & "_peso" modelo2 = Cells(ca, 5) & "_precio" 'Hoja comercial cable Worksheets("Hoja resumen cable").Activate hor = WorksheetFunction.Match(modelo, ActiveSheet.Range("3:3"), 0) hor1 = WorksheetFunction.Match(modelo1, ActiveSheet.Range("3:3"), 0) hor2 = WorksheetFunction.Match(modelo2, ActiveSheet.Range("3:3"), 0) ver = WorksheetFunction.Match(tipocable, ActiveSheet.Range("a:a"), 0) diam = ActiveSheet.Cells(ver, hor) * 1 peso = ActiveSheet.Cells(ver, hor1) * 1 precio = ActiveSheet.Cells(ver, hor2) * 1 Worksheets("cable list ").Activate Cells(ca, 19) = diam Cells(ca, 20) = peso Cells(ca, 19) = precio 'diam2 = diam '2º calculo de area en ducto If Cells(ca, 7) > 34 And Cells(ca, 7) > 69 Then Cells(ca, 11) = ((((diam * diam) / 4) * 3.14159265358979) * 1.4) * Cells(ca, 6) Else If Cells(ca, 7) > 16 Then Cells(ca, 11) = ((((diam * diam) / 4) * 3.14159) * 1.4) Else Cells(ca, 11) = ((((diam * diam) / 4) * 3.14159) * 1.2) End If End If 'distinguir tipo de cable segun su uso texto = "x" posicion = InStr(1, Cells(ca, 9), texto, vbTextCompare) If Cells(ca, 23) = "Communication" Or Cells(ca, 23) = "Instrumentation" Or Cells(ca, 23) = "PControl" Then Cells(ca, 😎 = 4 Cells(ca, 16) = 1 Else If Cells(ca, 7) > 69 And npe = 0 And n = 0 And pe = 0 Then Cells(ca, 😎 = 1 Else If pe > 1 And npe = 0 Then Cells(ca, 😎 = 2 Else If n > 1 Or npe > 1 Then Cells(ca, 😎 = 3 Else If Cells(ca, 7) < 69 Then Cells(ca, 😎 = 4 Else MsgBox " Error nombre de cable linea " & ca & "por favor corrija y vuelva a precalcular" End If End If End If End If End If If Cells(ca, 16) = "" Or Cells(ca, 16) = 0 Then w = InputBox("Inicar potencia para cable " & Cells(ca, 1), "Título", 1) Cells(ca, 16) = w End If 'calculo de area bandeja If Cells(ca, 😎 = 1 Then Cells(ca, 10) = diam * ala * 4.15 Else If Cells(ca, 😎 = 2 Then Cells(ca, 10) = 0 Else If Cells(ca, 😎 = 3 Then Cells(ca, 10) = diam * ala Else If Cells(ca, 😎 = 4 Then Cells(ca, 10) = ((((diam * diam) / 4) * 3.14159) * 1.3) Else MsgBox "Error calculo bandeja, linea " & ca & " por favor corrija y vuelva a precalcular" End If End If End If End If Next ca final: Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Application.EnableEvents = True ActiveSheet.DisplayPageBreaks = True Application.CutCopyMode = False End Sub Por otro lado he pensado si comprara una versión de excel 64 bit podría ir mas rápido? tendría algún tipo de incompactibilidad ?? Un Saludo y a ver que pensáis ustedes.
  6. Buenos días esta pregunta esta relacionada con el hilo anterior el cual me dieron una solución perfectamente valida, copio en enlace para que sepáis de que hablo. Pero claro ahora me surge la duda, cuantas o que formas hay de "sacar" valores de un modulo, cual es la que normalmente utilizáis o recomendáis. Vuelvo a pedir perdón si soy muy pesado pero creo que mientras mas conocimiento se comparte mas se aprende.
  7. Si eso era lo que te comentaba antes, de todas formas esto es una idea o como yo lo hago cuando cargo listas no lo hago como tu desde el propio menú de propiedades, programo que al iniciar el formulario se carguen los valores de las listas, te dejo un ejemplo. Usando esta opción puedes hacer rangos dinámicos y estar leyendo de una hoja o libro según especifiques sin tener que tenerlo activo. Si picas solo el formulario donde están las 2 listas te aparece como se cargan los rangos. Prueba solucion cargar listas al iniciar formulario. .xlsm
  8. Creo que tu problema es que no especificas de que hoja coges los datos, por lo tanto los coge de la hoja activa. Como he dicho creo por que es muy difícil ver lo que quieres sin un archivo excel subelo y si puedo te ayudo.
  9. Buenas @bigpetroman primero quiero volver a daros las gracias por la ayuda. Como aclaratoria o presentación soy programador de plc y mi experiencia vba excel ha sido siempre autodidacta y por tanto puede que cosas obvias no las sepa y cosas menos obvias si. Dicho todo esto para mi un modulo es lo que muestra la imagen "que puedo estar equivocado". Dentro programas una función y la llamas cada vez que necesites dicha operación " por intentar aportar algo esto en los plc son bloques y son super útil también es verdad que en los plc declaras las variables de salida y listo ". Con esta consulta yo qu ería obtener una solución genérica y lo mas limpia posible para la problemática de extraer 2 o n valores de un modulo. Dicho todo esto vuelvo a abusar de vuestra amabilidad y os pregunto cual es según vuestra experiencia la forma mas limpia de sacar valores de los "módulos".
  10. Hola, no se si esto te puede servir pero a priori se me ocurre grabar una macro para copiar pegar, en las celdas donde este y quieras la imagen. Te dejo el ejemplo que me ha salido a mi. Sub Macro4() ' ' Macro4 Macro ' ' ActiveSheet.Shapes.Range(Array("Picture 5")).Select Selection.Copy Sheets("Hoja2").Select ActiveCell.Select ActiveSheet.Paste End Sub Grabando la macro he visto que reconoce el nombre de la imagen a si que puedes comprobar si lo estabas nombrando bien. Un Saludo
  11. Perfecto bigpetroman , exactamente eso era lo que quería hacer. Pero que me queda la duda, es posible sacar 2 variable / valores de un modulo o solo se puede "sacar" 1 .
  12. Buenos días JSDJSD, Ante todo gracias por la ayuda y perdón por no contestar antes pero en estas semanas santa "raras" he decidido desconectar del pc. Dicho esto no creo que no me he explicado bien, mi duda o lo que me gustaría aprender es como sacar 2 valores de un modulo (en caso de que se pueda) tu solución es perfectamente funcional, pero estoy intentando empezar a trabajar con módulos y optimizar al máximo la programación de cara a que esto tiene que correr sobre un listado de cables y hablamos de 5000 lineas. Por eso de crear modulo e intentar obtener de la misma operación el valor maximo y el numero de la celda. Function MAXIF2(RngMaximos As Range, RngCriterios As Range, Criterio As Variant, RngCriterios2 As Range, Criterio2 As Variant) As Double Dim c As Range Dim Max As Double Max = 0 counter = 1 For Each c In RngMaximos If RngCriterios(counter) = Criterio And RngCriterios2(counter) = Criterio2 Then If c.Value > Max Then Max = c.Value columna = counter End If End If counter = counter + 1 Next MAXIF2 = Max End Function Lo que no se hacer es esa variable columna como extraer el dato del modulo. En azul he señalado donde se igual el valor de la operación a la función. Podría hacer otra igual y obtener columna pero me parece un poco chapuza. Espero vuestra opinión
  13. a priori si pero tendría que ver la forma de conseguirlo. Si me puedes pasar el excel por favor lo chequeo y te digo.
  14. Otra opción es crear otro modulo igual pero en vez de devolver max devolver columna. Pero me parece muy chapu hacer correr 2 veces la misma función.
  15. os paso el excel perdón por no subirlo prueba.xlsm
×
×
  • Create New...

Important Information

Privacy Policy