Views

...

Important:

Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog podem ser tratados como consultoria freelance.

E-mails

Deixe seu e-mail para receber atualizações...

eBook Promo

VBA - Retornando Milissegundos.

Hello folks!

Medir o tempo de processamento de certos momentos dentro da nossa aplicação serve para otimizarmos nosso código, processos, acessos, etc.

Talvez deseje medir a performance de suas queries, ou a geração de arquivos em determinando processo de automação. Talvez queira saber qual interface comporta-se melhor no ambiente para o qual está desenvolvendo.

Como fazer isso, como medir, mensurar, detectar?

Fácil, a função abaixo lhe permitirá tal liberdade.

Public Function MilisSeconds() As String
Let
MilisSeconds
= Strings.Format(Now, "dd-MMM-yyyy HH:nn:ss") & "." & Strings.Right(Strings.Format(Timer, "#0.00"), 2)
End Function

Mas como posso aplicar isso nas minhas procedures e functions ? Segue exemplo:

Private Sub btnSave_Click()
' Author: Date: Contact:
' André Bernardes 10/05/2011 15:31 bernardess@gmail.com http://inanyplace.blogspot.com/
' Application: ********.
' Cria a **************************************.
' Listening: Recognizer - Daft Punk - Tron Legacy.

Dim nStart As String

DoCmd.RunCommand acCmdSaveRecord

Let nStart = Right(TimeInMS(), 11) 'Right(Now(), 8)
Call AdjustSpecialties
Call AssemblerCentralEngine
Call AssemblerCentralEngine2
Call SeedData ' Arquiva os dados para consulta e análise posteriores

Me.cmbCenarios.Requery ' Atualiza o Combo de Exclusão de cenários.
Let Me.cxVersion.Value = Now() & " Versão 00" ' Atualiza a caixa de texto onde se dá os nomes para novos cenários.

MsgBox "Tabela criada com sucesso!" & Chr(10) & Chr(13) & _
"" & Chr(10) & Chr(13) & _
" TABELA: tbl_Bernardes" & Chr(10) & Chr(13) & _
"" & Chr(10) & Chr(13) & _
"CENÁRIO: " & ReturnVersion() & Chr(10) & Chr(13) & _
"" & Chr(10) & Chr(13) & _
"Iniciou em: " & nStart & " - Finalizou em: " & Right(TimeInMS(), 11) & Chr(10) & Chr(13) & _
"" & Chr(10) & Chr(13) & _
"Os dados foram preservados para análises posteriores." & Chr(10) & Chr(13) & _
"", vbInformation, ".: Informação: Versão " & ReturnVersion()
End Sub

Existe um outro modo de ter este mesmo resultado, utilizando API e DLL. Não acredito que seja mais útil, mas em todo caso, teste-o você mesmo se desejar:

Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type

Private Declare Sub GetSystemTime Lib "kernel32"
(lpSystemTime As SYSTEMTIME)

Public Function nMillisecond() As String
Dim tSystem As SYSTEMTIME
Dim nRet

On Error Resume Next

GetSystemTime tSystem

Let sRet = Hour(Now()) & ":" & Minute(Now()) & ":" & Second(Now()) & _
":" & tSystem.wMilliseconds

Let nMillisecond = nRet
End Function

Vocês sabem como sou, se existe um outra forma, e a conheço, não deixo de lhes mostrar (medindo processamento em centésimos de segundos com o método Timer):

Public Sub TestBernardes()
Dim fTimeStart As Single
Dim fTimeEnd As Single

Let fTimeStart = Timer
SomeProcedure
Let
fTimeEnd = Timer
Debug.Print Format$((fTimeEnd - fTimeStart) * 100!, "0.00 "" Centésimos de segundos""")
End Sub

Public Sub SomeProcedure()
Dim i As Long, r As Double
For i = 0& To 10000000
Let r = Rnd
Next
End Sub


Tags: André Luiz Bernardes, MS, Microsoft, Office, Excel, Access, VBA, Automation, Milissegundos, Timer, milliseconds, Now, function

Referências: VBAADUD


Assuntos similares:
Calculating process time
Excel VBA Timer
How to Get Time in Milliseconds using Excel VBA
How to add milliseconds to Now()
How to get milliseconds in VBA Now() function
Miliseconds in dim as date
Millisecond timer using VBA
Show current date & system time with milliseconds
Using Milliseconds in VBA
VBA Milliseconds
VBA Now() function
VBA Timer function



André Luiz Bernardes
A&A® - Work smart, not hard.


VBA Excel - Definindo o tipo de Gráfico - Change Chart Type.


O tipo de gráfico utilizado em uma planilha pode ser definido pelo usuário que estiver utilizando um MIS. Deixá-lo escolher o tipo pode tornar sua experiência mais enriquecedora do ponto de vista da análise.

Essa funcionalidade também fica bem quando utilizada em Dashboards Dinâmicos.

Tópicos relacionados
Apply custom chart type
Change Chart Type
Change Default Chart Type
Change Excel Chart Plotarea Color Through VBA
Changing SeriesCollection Values for Line Chart
Changing a Chart Title Using VBA in Excel
Creating Charts in Microsoft Office Excel using Visual Basic
Dynamic and Interactive Charts
Excel Charts
Excel Charts & Charting Tips
Excel Charts and Graphs
Getting Started with VBA in Excel
Microsoft Excel Chart Types
Quick Excel Chart VBA Example
Setting the Default Chart Type in Microsoft Excel
Using VBA to change Chart Type
VBA Chart
VBA in Excel Charting

No momento em que o gráfico estiver ativo (com foco nele chart.setfocus - O gráfico fica ativo se o usuário o selecionou ou se foi ativado com o método Activate), utilize a propriedade ActiveChart para fazer referência ao mesmo.
Abaixo o código demonstra como ativar o primeiro gráfico, definindo em seguida, o título e o tipo deste.

Charts(1).Activate

With ActiveChart
Let .Type = xlLine
Let
.HasTitle = True
Let
.ChartTitle.Text = "Vendas de Janeiro"
End With

Pode colocar diversos tipos de gráficos dentro de um combobox e deixar o usuário escolhê-los a partir desta lista. Ao manipular o evento Change da caixa de combinação (combobox) esta terá o código abaixo. Esteja ciente de que, neste caso, por estar usando dados externos, deve tornar o objeto ChartData Ativo ao acessá-lo. Após mudar o nome da série e o valor (como no exemplo), o objeto gráfico deve ser atualizado para mostrar as alterações.

Private Sub ComboBox1_Change()
' Author: Date: Contact: URL:
' André Bernardes 05.04.2011 - 10:25. bernardess@gmail.com http://inanyplace.blogspot.com/
' Application: XtractDashboard®.
' .
Dim salesChart As Chart Dim chartWorkSheet As Excel.Worksheet ' O gráfico. (O primeiro no ComboBox.) Set salesChart = ActiveDocument.InlineShapes(2).Chart ' Ativa os dados antes de acessar o workbook. salesChart.ChartData.Activate ' Obtém a primeira worksheet. Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1) ' Escolhe a série baseada na opção do ComboBox. Select Case ComboBox1.Value Case "ABL1" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("B1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$B$2:$B$5" Case "ABL2" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("C1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$C$2:$C$5" Case "ABL3" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("D1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$D$2:$D$5" Case "ABL4" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("E1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$E$2:$E$5" End Select ' Atualizao o gráfico, tornando as mudanças visíveis. salesChart.Refresh ' Minimiza o Excel. Let chartWorkSheet.Application.WindowState = xlMinimized End Sub
Dim salesChart As Chart
Dim chartWorkSheet As Excel.Worksheet
' O gráfico. (O primeiro no ComboBox.)
Set salesChart = ActiveDocument.InlineShapes(2).Chart
' Ativa os dados antes de acessar o workbook.
salesChart.ChartData.Activate
' Obtém a primeira worksheet. Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1) ' Escolhe a série baseada na opção do ComboBox. Select Case ComboBox1.Value Case "ABL1" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("B1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$B$2:$B$5" Case "ABL2" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("C1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$C$2:$C$5" Case "ABL3" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("D1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$D$2:$D$5" Case "ABL4" Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("E1") Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$E$2:$E$5" End Select ' Atualizao o gráfico, tornando as mudanças visíveis. salesChart.Refresh ' Minimiza o Excel. Let chartWorkSheet.Application.WindowState = xlMinimized End Sub
' Obtém a primeira worksheet.
Set chartWorkSheet = salesChart.ChartData.Workbook.Worksheets(1)
' Escolhe a série baseada na opção do ComboBox.
Select Case ComboBox1.Value
Case "ABL1"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("B1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$B$2:$B$5"
Case "ABL2"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("C1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$C$2:$C$5"
Case "ABL3"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("D1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$D$2:$D$5"
Case "ABL4"
Let DashboardChart_01.SeriesCollection(1).Name = chartWorkSheet.Range("E1")
Let DashboardChart_01.SeriesCollection(1).Values = "='Sheet1'!$E$2:$E$5"
End Select
' Atualizao o gráfico, tornando as mudanças visíveis.
salesChart.Refresh
' Minimiza o Excel.
Let chartWorkSheet.Application.WindowState = xlMinimized
End Sub

Referência: Microsoft MSDN

Tags: André Luiz Bernardes, TI
, Tecnologia da Informação, MIS, Management Information System, SIG, Sistema de Informação Gerencial, Logística, Distribuição, Gerência de processos, Gerência de projetos
, MS, Microsoft, MS Office, Excel, Excel Dashboard,
, Dashboard, chart, chart type,
reporting suite, Business Intelligence, BI, KPI, KPIs, painéis executivos, Business Charts

André Luiz Bernardes
A&A® - Work smart, not hard.


eBooks VBA na AMAZOM.com.br

LinkWithinBrazilVBAExcelSpecialist

Related Posts Plugin for WordPress, Blogger...

Vitrine