Ejemplo de código fuente VBA (Visual Basic for Application), para Office (Access, Excel, Word), que calcula, a partir de la edad, el peso, el sexo, la actividad física y el porcentaje de masa magra, el gasto termogénico de la dieta (GT), el gasto energético basal (GEB o también llamado Tasa Metabólica Basal TMB), según la fórmula de Katch-McArdle, y el gasto energético total (GET) o gasto energético total en reposo (GER).
En el siguiente cálculo, se suma al GET (Gato Energético Total) el GT (Gasto Termogénico de la dieta), que es, en resumen, el gasto calórico que necesita el cuerpo para hacer la digestión de los alimentos ingeridos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 |
Private Sub btCalcularGETKatch_Click() Dim pPectoral, pMidaxilar, pTricipital, pSubescapular, pAbdominal, pSuprailiaco, pCuadricipital As Double Dim gastoActividadFisica, gastoTermogenicoDieta, gastoEnergeticoTotal Dim peso, Edad, gastoEnergeticoBasal As Double Dim masaMagraKg, masaMagraPorcentaje, masaGrasaPorcentaje, sumaPliegues As Double Dim continuar As Boolean On Error GoTo Error continuar = True If IsNull(txtpAbdominal.Value) Then MsgBox "Debe introducir la medición del pliegue abdominal.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtpCuadricipital.Value) Then MsgBox "Debe introducir la medición del pliegue cuadricipital.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtpSuprailiaco.Value) Then MsgBox "Debe introducir la medición del pliegue suprailíaco.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtpMidaxilar.Value) Then MsgBox "Debe introducir la medición del pliegue midaxilar.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtpTricipital.Value) Then MsgBox "Debe introducir la medición del pliegue tricipital.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtpSubescapular.Value) Then MsgBox "Debe introducir la medición del pliegue subescapular.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtpPectoral.Value) Then MsgBox "Debe introducir la medición del pliegue pectoral.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtPeso.Value) Then MsgBox "Debe introducir el peso del paciente.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtSexo.Value) Then MsgBox "Debe introducir el sexo del paciente.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(txtEdad.Value) Then MsgBox "Debe introducir la fecha de nacimiento del paciente para obtener la edad.", _ vbExclamation, "Faltan datos..." continuar = False ElseIf IsNull(lsActivdadFisica.Value) Then MsgBox "Debe indicar la actividad física del paciente en la medición.", _ vbExclamation, "Faltan datos..." continuar = False End If If continuar Then ' Para la fórmula de Jackson/Pollock de siete pliegues para obtener ' el % de masa grasa, usaremos los pliegues: ' pectoral, midaxilar, tricipital, subescapular, abdominal, 'suprailíaco, cuadricipital pAbdominal = Val(txtpAbdominal.Value) pCuadricipital = Val(txtpCuadricipital.Value) pSuprailiaco = Val(txtpSuprailiaco.Value) pMidaxilar = Val(txtpMidaxilar.Value) pTricipital = Val(txtpTricipital.Value) pSubescapular = Val(txtpSubescapular.Value) pPectoral = Val(txtpPectoral.Value) peso = Val(txtPeso.Value) Edad = Val(txtEdad.Value) gastoActividadFisica = 0 'Cálculo del Gasto Energético Basal (GEB) según Katch-McArdle 'GEB = 370 + (21,6 * Masa Magra en kg) ' Masa Magra = (100 - %grasa) * peso ' Fórmula de Jackson/Pollock de 7 pliegues ' para calcular el porcentaje de masa grasa sumaPliegues = pAbdominal + pCuadricipital + pSuprailiaco + pMidaxilar + _ pTricipital + pSubescapular + pPectoral If txtSexo.Value = "Hombre" Then masaGrasaPorcentaje = 1.112 - (0.00043499 * sumaPliegues) + _ (0.00000055 * sumaPliegues * sumaPliegues) - (0.00028826 * Edad) masaGrasaPorcentaje = (495 / masaGrasaPorcentaje) - 450 ' Obtenemos también el Factor de Actividad If lsActivdadFisica.Value = "Muy ligera" Then gastoActividadFisica = 1.3 End If If lsActivdadFisica.Value = "Ligera" Then gastoActividadFisica = 1.55 End If If lsActivdadFisica.Value = "Moderada" Then gastoActividadFisica = 1.78 End If If lsActivdadFisica.Value = "Alta" Then gastoActividadFisica = 2.1 End If If lsActivdadFisica.Value = "Muy alta" Then gastoActividadFisica = 2.4 End If End If ' Si es mujer If txtSexo.Value = "Mujer" Then masaGrasaPorcentaje = 1.097 - (0.00046971 * sumaPliegues) + _ (0.00000056 * sumaPliegues * sumaPliegues) - (0.00012828 * Edad) masaGrasaPorcentaje = (495 / masaGrasaPorcentaje) - 450 ' Obtenemos también el Factor de Actividad If lsActivdadFisica.Value = "Muy ligera" Then gastoActividadFisica = 1.3 End If If lsActivdadFisica.Value = "Ligera" Then gastoActividadFisica = 1.56 End If If lsActivdadFisica.Value = "Moderada" Then gastoActividadFisica = 1.64 End If If lsActivdadFisica.Value = "Alta" Then gastoActividadFisica = 1.82 End If If lsActivdadFisica.Value = "Muy alta" Then gastoActividadFisica = 2.2 End If End If 'Método de Katch-McArdle para obtener el GEB (gasto energético basal) o TMB 'GEB = 370 + (21,6 * Masa Magra en kg) 'Calculamos los kg de masa magra en función del porcentaje de 'masa grasa obtenido anteriormente masaMagraKg = ((100 - masaGrasaPorcentaje) / 100) * peso gastoEnergeticoBasal = 370 + (21.6 * masaMagraKg) 'Cálculo del Gasto Termogénico de la dieta (GT) gastoTermogenicoDieta = 0.1 * gastoEnergeticoBasal * gastoActividadFisica 'Cálculo del Gasto Energético Total (GET) If opIncluirGT.Value = True Then gastoEnergeticoTotal = gastoEnergeticoBasal * _ gastoActividadFisica + gastoTermogenicoDieta Else gastoEnergeticoTotal = gastoEnergeticoBasal * gastoActividadFisica End If txtGEB.Value = Round(gastoEnergeticoBasal, 2) txtGT.Value = Round(gastoTermogenicoDieta, 2) txtFA.Value = Round(gastoActividadFisica, 2) txtGET.Value = Round(gastoEnergeticoTotal, 2) txtPorcentajeGrasa.Value = masaGrasaPorcentaje txtPorcentajeMagra.Value = 100 - masaGrasaPorcentaje End If Exit Sub Error: MsgBox "Se ha producido un error al calcular el GET: " & _ Err.Description, vbExclamation + vbOKOnly Resume Next End Sub |
Como podemos observar en el código VBA, toma los siguientes valores de campos que se supone que tenemos en un formulario Access:
- txtPeso: peso en kilogramos de la persona.
- txtAltura: altura en centímetros de la persona.
- txtEdad: edad en años de la persona.
- txtSexo: si es hombre o mujer.
- lsActivdadFisica: se elige los valores «Muy ligera, «Ligera», «Moderada», «Alta» o «Muy alta».
Y para el método de Katch-McArdle, para calcular el Gasto Energético Basal (GEB o también llamado Tasa Metabólica Basal TMB), necesitaremos saber los kilógramos de masa grasa del paciente. Por ello, para calcular este valor de la forma más exacta posible, obtendremos previamente el porcentaje de masa grasa y, para ello, necesitaremos conocer la medición con lipocalibre de los siguientes pliegues, para usar la fórmula de Jackson/Pollock de 7 pliegues:
- txtpAbdominal: pliegue abdominal.
- txtpCuadricipital: pliegue cuadricipital.
- txtpSuprailiaco: pliegue suprailíaco.
- txtpMidaxilar: pliegue midaxilar.
- txtpTricipital: pliegue tricipital.
- txtpSubescapular: pliegue subescapular.
- txtpPectoral: pliegue pectoral.
El código VBA muestra en los siguientes campos de un formulario el resultado de los cálculos:
- txtPorcentajeGrasa: porcentaje de masa grasa del paciente, que se calculará usando la fórmula de Jackson/Pollock de 7 pliegues. Para este cálculo, en primer lugar sumaremos el valor de los 7 pliegues:
- sumaPliegues = pAbdominal + pCuadricipital + pSuprailiaco + pMidaxilar + _ pTricipital + pSubescapular + pPectoral
- Si es Hombre: masaGrasaPorcentaje = 495 / (1.112 – (0.00043499 * sumaPliegues) + (0.00000055 * sumaPliegues * sumaPliegues) – (0.00028826 * Edad)) – 450
- Si es Mujer: masaGrasaPorcentaje = 495 / (1.097 – (0.00046971 * sumaPliegues) + (0.00000056 * sumaPliegues * sumaPliegues) – (0.00012828 * Edad)) – 450
- txtPorcentajeMagra: calculamos el poncentaje de masa magra, en base al porcentaje de masa grasa obtenido anteriormente: masaMagraPorcentaje = 100 – masaGrasaPorcentaje
- Calculamos los kilógramos de masa magra, según la fórmula:
- masaMagraKg = ((100 – masaGrasaPorcentaje) / 100) * peso
- txtGEB: el gasto energético basal (GEB o TMB) (kilocalorías diarias), obtenido de la fórmula (altura en centímetros, peso en kilogramos, edad en años):
- GEB = 370 + (21.6 * masaMagraKg)
- txtFA: gato de actividad física (FA), se obtiene en base a la siguiente tabla:
Actividad física | FA Hombre | FA Mujer |
Muy ligera | 1,3 | 1,3 |
Ligera | 1,55 | 1,56 |
Moderada | 1,78 | 1,64 |
Alta | 2,1 | 1,82 |
Muy alta | 2,4 | 2,2 |
- txtGT: gasto termogénico de la dieta (GT) (kilocalorías diarias), obtenido de la fórmula: GT = 0.1 * GEB * FA
- txtGET: gasto energético total (GET) o gasto energético total en reposo (GER) (kilocalorías diarias): GET = GEB * FA + GT
En el cálculo del GET, el GEB y el GT se obtienen kilocalorías diarias.
Un ejemplo de formulario Access que mostrará estos cálculos: