Wednesday, February 22, 2012
Example of mouse click by Excel VBA
Private Declare Function SetCursorPos Lib "user32" (ByVal X As Long, ByVal Y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cbuttons As Long, ByVal dwExtraInfo As Long)
Private Declare Function GetCursorPos Lib "user32" (lpPoint As pointapi) As Long
Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long
Const MOUSEEVENTF_LEFTDOWN As Integer = 2
Const MOUSEEVENTF_LEFTUP As Integer = 4
Const MOUSEEVENTF_RIGHTDOWN As Integer = 8
Const MOUSEEVENTF_RIGHTUP As Integer = 16
Private Type pointapi
X As Long
Y As Long
End Type
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
------------------------------------------------------------------
Here is an example
Sub test()
SetCursorPos 200, 200 'set mouse position at 200, 200
Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) 'click left mouse
Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) 'release left mouse
End Sub
Sunday, February 19, 2012
Convert dd:hh:mm:ss to hour or second
Public Function ConvertToHR(str As String) As String
'dd:hh:mm:ss
Dim d, h As Integer
Dim tmp, m, s As String
If str = "" Then
ConvertToHR = "no data"
Exit Function
End If
d = CInt(Mid(str, 1, 2))
h = CInt(Mid(str, 4, 2))
m = Mid(str, 7, 2)
s = Mid(str, 10, 2)
'tmp = CStr((d * 24) + h) & "." & m & "." & s
tmp = CStr((d * 24) + h)
ConvertToHR = tmp
End Function
Public Function ConvertToSec(str As String) As String
'dd:hh:mm:ss
Dim d, h As Long
Dim tmp, m, s As String
If str = "" Then
ConvertToSec = "no data"
Exit Function
End If
d = CInt(Mid(str, 1, 2))
h = CInt(Mid(str, 4, 2))
m = Mid(str, 7, 2)
s = Mid(str, 10, 2)
'tmp = CStr((d * 24) + h) & "." & m & "." & s
tmp = CStr((((d * 24) + h) * 60 + m) * 60 + s)
ConvertToSec = tmp
End Function
Friday, February 17, 2012
Array sorting procedure
'------------------------------------------------------------------------
Private Sub SortArray(arr() As Integer)
'------------------------------------------------------------------------
'This sub uses the Bubble Sort algorithm to sort an array of integers.
Dim lngX As Long
Dim lngY As Long
Dim tmp As Integer
For lngX = LBound(arr) To (UBound(arr) - 1)
For lngY = LBound(arr) To (UBound(arr) - 1)
If arr(lngY) > arr(lngY + 1) Then
'exchange the items
tmp = arr(lngY)
arr(lngY) = arr(lngY + 1)
arr(lngY + 1) = tmp
End If
Next lngY
Next lngX
End Sub
Tuesday, February 14, 2012
Key Enter in Excel VBA
To check the KeyPress event of "Enter" in user form.
A KeyPress event does not occur under the following conditions:
Pressing TAB.
Pressing ENTER.
Pressing an arrow key.
When a keystroke causes the focus to move from one control to another.
Therefore, if we would like to use an event Enter in Excel VBA, we should do as in the followings
---------------------------------------------------------------------------------------
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then 'we can use either 13 or vbKeyReturn
MsgBox "This messagebox will show after press Enter!"
End If
End Sub
---------------------------------------------------------------------------------------
Below code is not working in Excel VBA
---------------------------------------------------------------------------------------
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 13 Then
MsgBox "This procedure is not work for checking Enter event in Excel VBA!"
End If
End Sub
---------------------------------------------------------------------------------------
Monday, February 13, 2012
List files in specific path
'*** List all files in specific path and pattern ***'
'*** in Excel file start from cell A1 of sheet1 ***'
'*** using GetFileList and IsArray function ***'
Dim p As String
Dim X As Variant
p = "C:\test\*.xls" 'select only *.xls pattern
X = GetFileList(p)
Select Case IsArray(X)
Case True 'files found
'MsgBox UBound(x)
Sheets("Sheet1").Range("A:A").Clear
For i = LBound(X) To UBound(X)
Sheets("Sheet1").Cells(i, 1).Value = X(i)
Next i
Case False 'no files found
MsgBox "No matching files"
End Select
End Sub
Check existing value in array
Function InSArray(ByRef vArray() As String, ByVal vValue As String) As Boolean
'***Return true, if found this value in array***'
'***Return false, if not found this value in array***'
Dim i As Long
For i = LBound(vArray) To UBound(vArray)
If vArray(i) = vValue Then
InSArray = True
Exit Function
End If
Next i
InSArray = False
End Function
Saturday, February 11, 2012
Get user name function
---------------------------------------------------------
Public Function CurrentUser() As String
'*********************************************************
'* Function to get the current logged on user in windows *
'*********************************************************
Dim strBuff As String * 255
Dim X As Long
CurrentUser = ""
X = GetUserName(strBuff, Len(strBuff) - 1)
If X > 0 Then
'Look for Null Character, usually included
X = InStr(strBuff, vbNullChar)
'Trim off buffered spaces too
If X > 0 Then
CurrentUser = UCase(Left$(strBuff, X - 1)) 'UCase is optional
Else
CurrentUser = UCase(Left$(strBuff, X))
End If
End If
End Function
Thursday, February 9, 2012
GetFileSize function
Function GetFileSize(folderspec As String) As Variant
' Returns an array of file size that match FileSpec
Dim fs, f, f1, fc, s
Dim FileArray() As Variant
Dim FileCount As Integer
Dim filesize As String
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderspec)
Set fc = f.Files
FileCount = 0
For Each f1 In fc
s = f1.Size
filesize = s
FileCount = FileCount + 1
ReDim Preserve FileArray(1 To FileCount)
FileArray(FileCount) = filesize
GetFileSize = FileArray
Next
End Function
GetFileList function
'***Function to get list of files in specific folder***'
' Returns an array of file names that match FileSpec
Wednesday, February 8, 2012
Excel VBA command (4)
Calculation
Command | Description |
Application.Calculation = xlManual | Set calculation option to Manual (by F9) |
Application.Calculation = xlAutomatic | Set calculation option to Automatic |
Activesheet.Calculate | Calculate on activesheet only |
CutCopyMode
Command | Description |
Application.CutCopyMode=False | Clear data in clip board |
Quit
Command | Description |
Application.Quit | Quit Excel |
ScreenUpdating
Command | Description |
Application.ScreenUpdating = False | Result of commands between both will not display on screen |
Application.ScreenUpdating = True |
StatusBar
Command | Description |
Application.DisplayStatusBar = False | Not display status bar |
Application.DisplayStatusBar = True | Display status bar |
Application.StatusBar = "Test" | Set to show "Test" on status bar |
DisplayAlert
Command | Description |
Application.DisplayAlerts = False | Not display any alert such as dialog box |
Application.DisplayAlerts = True | Display alert |
Tuesday, February 7, 2012
Excel VBA command (3)
Workbook
Command | Description |
1. Workbooks.Open "Book1.xls" | Open "Book1.xls" |
2. Workbooks.Open Sheets("Sheet1").Range("A1").Value | Open file by referring to file name in cell "A1" of "Sheet1" |
3. Workbooks.Open Filename:= "C:\Book1.xls" | Open "C:\Book1.xls" |
4. ThisWorkbook.Close | Close workbook which is coded |
5. Workbooks("Book1.xls").Close | Close file "Book1.xls" |
6. Workbooks(Range("A1").Value).Close | Close file by referring to file name in cell "A1" |
7. ActiveWorkbook.Save | Save active workbook |
8. Workbooks("Book1.xls").Save | Save "Book1.xls" |
9. Workbooks(Range("A1").Value).Save | Save file by referring to file name in cell "A1" |
10. ActiveWorkbook.SaveAs "C:\Book1.xls" | SaveAs active workbook to "C:\Book1.xls" |
11. Workbooks("Book1.xls").SaveAs "C:\Book1.xls" | SaveAs "Book1.xls" to "C:\Book1.xls" |
12. Workbooks(1).Close SaveChanges:=False | Close workbook index 1 without save |
13. Workbooks(1).Close SaveChanges:=True | Close workbook index 1 with save |
14. Kill "C:\Book1.xls" | Kill file "C:\Book1.xls" |
15. Workbooks.Add | Add new workbook |
16. ActiveWorkbook.Name | Return name of active workbook |
17. Difference between ThisWorkBook and ActiveWorkBook |
|