• Jueves 14 de Noviembre de 2024, 23:29

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - pepo

Páginas: [1]
1
Visual Basic 6.0 e inferiores / Lentitud Ejecución
« en: Miércoles 16 de Marzo de 2005, 20:33 »
Hola amigos,
Tengo una tabla en excel, con datos de volumen en función de Presión y Temperatura . Aquí muestro un pedazo.

                Tª   0,01   0,02   0,03 ..............
P
0,01   0,0010002   0,0010002   0,0010002
10   130,58   0,0010003   0,0010003
20   135,22   67,570   0,0010018
30   139,85   69,891   46,572
.
.
Necesito hacer un programa en vb que escoja datos de la tabla en función de unas Presiones y temperaturas dadas, por lo que hay que interpolar. El programilla que he hecho funciona en vba sin problemas, pero desde vb va lentísimo. Por favor, que alguien me ayude.
Aquí abajo dejo el programa.

Pepo

Hola amigos,
Tengo una tabla en excel, con datos de volumen en función de Presión y Temperatura . Aquí muestro un pedazo.

                Tª   0,01   0,02   0,03 ..............
P
0,01   0,0010002   0,0010002   0,0010002
10   130,58   0,0010003   0,0010003
20   135,22   67,570   0,0010018
30   139,85   69,891   46,572
.
.
Necesito hacer un programa en vb que escoja datos de la tabla en función de unas Presiones y temperaturas dadas, por lo que hay que interpolar. El programilla que he hecho funciona en vba sin problemas, pero desde vb va lentísimo. Por favor, que alguien me ayude.
Aquí abajo dejo el programa.

Pepo

Código: Text
  1.  Private Sub Command1_click()
  2. ' dada una presión y una temperatura de referencia, el programa selecciona
  3. ' un rango de celdas dentro de la tabla, que corresponden a valores para interpolar
  4. ' entre dicha presión y temperatura de referencia
  5. Dim ap As New Excel.Application
  6.     ap.Workbooks.Open "d:\Pepo\Proyecto VB\tabla para pruebas.xls"
  7.     ap.Worksheets("volumen").Select
  8. Dim i As Integer
  9. Dim j As Integer
  10. ' Como datos tenemos Tref y Pref
  11. Tref = 0.025
  12. Pref = 35.5
  13. ' i es el índice de filas y j el de columnas
  14. For j = 2 To 55
  15.     For i = 4 To 79
  16. ' Selecciona los datos de la tabla cuyos valores sean los
  17. ' inmediatamente inferiores a Pref y Tref
  18.         With Range("A1:BC79")
  19.             If .Cells(3, j).Value < Tref Then
  20.                 If .Cells(i, 1).Value < Pref Then
  21.                     Set T1 = .Cells(3, j)
  22.                     Set T2 = .Cells(3, j + 1)
  23.                     Set P1 = .Cells(i, 1)
  24.                     Set P2 = .Cells(i + 1, 1)
  25.                     Set v11 = .Cells(i, j)
  26.                     Set v12 = .Cells(i, j + 1)
  27.                     Set v21 = .Cells(i + 1, j)
  28.                     Set v22 = .Cells(i + 1, j + 1)
  29.                 End If
  30.             End If
  31.         End With
  32.     Next i
  33. Next j
  34.  
  35. '   Interpola el volúmen específico "v" entre los valores de temperatura y los de presión
  36.  
  37. va = v12 - (v12 - v11) * (T2 - Tref) / (T2 - T1)
  38. vc = v22 - (v22 - v21) * (T2 - Tref) / (T2 - T1)
  39. v = vc - (vc - va) * (P2 - Pref) / (P2 - P1)
  40. ' muestra en pantalla el valor intermpolado, correspondiente a los datos  de Pref y Tref
  41. TxtCeldas.Text = v
  42. ap.Quit
  43. Set ap = Nothing
  44.  

Páginas: [1]