Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
dx = GetSystemMetrics(SM_SCREENX)
dy = GetSystemMetrics(SM_SCREENY)
Drag oShp
' Paste the original text while maintaining its formatting, back to the shape
If oShp.HasTextFrame Then oShp.TextFrame.TextRange.Paste
DoEvents
End Sub
With ActivePresentation.PageSetup
dx = (WR.lRight - WR.lLeft) / .SlideWidth
dy = (WR.lBottom - WR.lTop) / .SlideHeight
Select Case True
Case dx > dy
sx = sx + (dx - dy) * .SlideWidth / 2
dx = dy
Case dy > dx
sy = sy + (dy - dx) * .SlideHeight / 2
dy = dx
End Select
End With
StartTime = Timer
While dragMode
GetCursorPos mPoint
oShp.Left = (mPoint.x - sx) / dx - oShp.Width / 2
oShp.Top = (mPoint.y - sy) / dy - oShp.Height / 2
' Comment out the next line if you do NOT want to show the countdown text
within the shape
If oShp.HasTextFrame Then oShp.TextFrame.TextRange.Text = CInt(DropInSeconds -
(Timer - StartTime))
DoEvents
If Timer > StartTime + DropInSeconds Then dragMode = False
Wend
DoEvents
End Sub
' Create an array of text strings by splitting the shape text concatenated with
"=" using "=" as a delimiter
' The additon of "=" guarantees that the array has at least 2 elements, in
positions 0 and 1
FormulaArray = Split(oShp.TextFrame.TextRange.Text & "=", "=")
' Replace all "," with "." in the first array entry (converting decimal format
from EU to UK?)
While InStr(FormulaArray(0), ",") > 0
FormulaArray(0) = Replace(FormulaArray(0), ",", ".")
Wend
' If there is some text in the first array cell then Evaluate it using Excel
and save the result in the 2nd array element
' Note: Evaluate is not an Excel function but a formula auditing tool which
shows you exactly how the result is calculated
If FormulaArray(0) > "" Then
FormulaArray(1) = xl.Evaluate(FormulaArray)
' Concatenate the formula with the Evaluate text and save it back to the
shape
oShp.TextFrame.TextRange.Text = FormulaArray(0) & "=" & FormulaArray(1)
End If
xl.Quit: Set xl = Nothing
' Nudge the shape up and back down to the same position (forcing the slide to
be refreshed when DoEvents is called)
oShp.Top = oShp.Top + 1: oShp.Top = oShp.Top - 1
End If
DoEvents
End Sub