Respuesta a: VBA para excel.

#19011

joan
Participante

El error que me salio en el video 55 por no actualizar el nombre de Cálculo cambiando de nombre acda vez en el formulario y lo solvente creando en el modulo de calculos_em_dinamica el siguiente procedimiento :

(Nota a mi me aparecia alguna veces precio en minuscula i otras en mayuscula, por esto esta duplicado)

Sub nom_calculo_dinamica(micelda As Range)

If micelda = «Suma de Precio» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Suma de Precio»). _

Caption = «Cálculo»

ElseIf micelda = «Promedio de Precio» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Promedio de Precio»). _

Caption = «Cálculo»

ElseIf micelda = «Máx. de Precio» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Máx. de Precio»). _

Caption = «Cálculo»

ElseIf micelda = «Mín. de Precio» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Mín. de Precio»). _

Caption = «Cálculo»

ElseIf micelda = «Cuenta de Precio» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Cuenta de Precio»). _

Caption = «Cálculo»

‘ no se perque a vedgades sortien minuscules el PRECIO

ElseIf micelda = «Promedio de PRECIO» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Promedio de PRECIO»). _

Caption = «Cálculo»

ElseIf micelda = «Máx. de PRECIO» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Máx. de PRECIO»). _

Caption = «Cálculo»

ElseIf micelda = «Mín. de PRECIO» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Mín. de PRECIO»). _

Caption = «Cálculo»

ElseIf micelda = «Cuenta de PRECIO» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Cuenta de PRECIO»). _

Caption = «Cálculo»

ElseIf micelda = «Suma de PRECIO» Then

ActiveSheet.PivotTables(«TablaDinámica4»).PivotFields(«Suma de PRECIO»). _

Caption = «Cálculo»

End If

End Sub

PD hay campos de celdas A1. i B1 al cambiar de horizontal a verical varia la localizacion del rotulo

 

Y en pPrivate Sub cal_dinamica_Click()

Private Sub cal_dinamica_Click()

Dim micelda As Range

If Range(«b1») = «Etiquetas de columna» Then       ‘pregunto si la tabla es horizotal

Call nom_calculo_dinamica(Range(«a1»))           ‘pone nombre de «Cálculo» a la celda

Else

Call nom_calculo_dinamica(Range(«B1»))

End If

A continuacion viene el código que ya tenemos:

If cal_dinamica.Value = «Suma» Then  i etc  …

Asi me ha funcionado