Boa tarde! Criei um código em VBA em Excel e gostaria de passar para o VBA do Access... Alguém me pode ajudar e dizer-me o que estou a fazer de errado?
Obrigado
Código:
Dim RngLin, RngCol
Dim a, b, c, d, i, aux, f, w, z As Integer
Set RngLin = Range("A1:A100")
Set RngCol = Range("A1:Z1")
'Conta Linhas Ocupadas na Coluna A
a = Application.WorksheetFunction.CountIf(RngLin, "Tolerância")
'Conta Colunas Ocupadas
d = Application.WorksheetFunction.CountIf(RngCol, ">=2009")
'Limite mais à direita para o Range
b = a + 3
'Local da primeira ocorrência de Tolerância
c = a + 2
f = 1
'Ciclo para garantir IF correcto
w = 0
For z = 1 To a - 1
If Cells(c + z, 2).Value = Cells(c + z + 1, 2).Value Then
w = w + 1
End If
Next z
If w <> a - 1 Then
For i = 1 To a
f = f + 1
aux = i + 2
Range("A" & f + 1 & ":" & Chr(65 + d) & aux).Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A" & f + 1 & ":" & Chr(65 + d) & aux), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
' Formatação do gráfico
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Relatório"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Anos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = " "
End With
Next i
Else
Range("A1:" & Chr(65 + d) & b).Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:" & Chr(65 + d) & b), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Relatório"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Anos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = " "
End With
'É criada a linha de Tolerância como um gráfico xlLine extra
ActiveChart.SeriesCollection(c).Select
ActiveChart.SeriesCollection(c).ChartType = xlLine
'apaga campo Certificado da Legenda
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).Select
Selection.Delete
End If
End Sub
Obrigado
Código:
Dim RngLin, RngCol
Dim a, b, c, d, i, aux, f, w, z As Integer
Set RngLin = Range("A1:A100")
Set RngCol = Range("A1:Z1")
'Conta Linhas Ocupadas na Coluna A
a = Application.WorksheetFunction.CountIf(RngLin, "Tolerância")
'Conta Colunas Ocupadas
d = Application.WorksheetFunction.CountIf(RngCol, ">=2009")
'Limite mais à direita para o Range
b = a + 3
'Local da primeira ocorrência de Tolerância
c = a + 2
f = 1
'Ciclo para garantir IF correcto
w = 0
For z = 1 To a - 1
If Cells(c + z, 2).Value = Cells(c + z + 1, 2).Value Then
w = w + 1
End If
Next z
If w <> a - 1 Then
For i = 1 To a
f = f + 1
aux = i + 2
Range("A" & f + 1 & ":" & Chr(65 + d) & aux).Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A" & f + 1 & ":" & Chr(65 + d) & aux), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
' Formatação do gráfico
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Relatório"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Anos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = " "
End With
Next i
Else
Range("A1:" & Chr(65 + d) & b).Select
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("A1:" & Chr(65 + d) & b), PlotBy:=xlRows
ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet1"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Relatório"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Anos"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = " "
End With
'É criada a linha de Tolerância como um gráfico xlLine extra
ActiveChart.SeriesCollection(c).Select
ActiveChart.SeriesCollection(c).ChartType = xlLine
'apaga campo Certificado da Legenda
ActiveSheet.ChartObjects("Chart 1").Activate
ActiveChart.Legend.Select
ActiveChart.Legend.LegendEntries(1).Select
Selection.Delete
End If
End Sub