1. UserForm的初期設定
最簡單的方法:
UserForm1.Show
想要初期化Form里的值,可以:
Sub Macro1()
Load UserForm1
With UserForm1
.TextBox1.Value = ActiveCell.Value
.TextBox1.SetFocus
.Show
End With
End Sub
也可以用Initialize事件:
Private Sub UserForm_Initialize()
TextBox1.Value = ActiveCell.Value
TextBox1.SetFocus
End Sub
2. Range對象的引用
有時候想要用名稱作為參數傳遞給Range對象,怎么做呢?
在工作表里用鼠標選擇一個范圍,然后在左上角的“Name Box”里輸入名稱,這樣就給這個范圍里所有的單元格賦予了名稱,以后就可以用Range("名稱")引用這個范圍了。來看個例子:
Dim No As Variant
Dim rcd As Range
No = ComboBox1.Value
'尋找“編號”范圍里是No的Range對象
Set rcd = Range("編號").Find(What:=No, LookAt:=xlWhole)
If No = "新規" Then
'插入一空行
rcd.EntireRow.Insert
'取得空行前一行的Range對象
Set rcd = rcd.Offset(-1)
rcd.Value = rcd.Offset(-1).Value + 1
End If
3. 日期,時刻函數
文字列
|
時間間隔
|
yyyy |
年 |
q |
季 |
m |
月 |
y |
年間通算日 |
d |
日 |
w |
周日 |
ww |
周 |
h |
小時 |
n |
分 |
s |
秒 |
DateDiff(interval, date1, date2, firstdayofweek, firstweekofyear)函數:
計算date1和date2之間的間隔,按照interval指定的單位返回函數。
date1,date2可以是日期值或者字符串;后面兩個參數可以省略,如果省略,則前者是星期日,后者是1月1日所在的那一周。
例如,要計算從現在到明年還剩下多少天,多少時間:
Dim nYear as Long
Dim nDays as Long
Dim nHours as Long
nYear = DateSerial(Year(Now) + 1, 1, 1)
nDays = DateDiff("d", Now, nYear)
nHours = DateDiff("h", Now, nYear)
MsgBox "There are " & nDays & " days from now to the next year." & vbCr & "and there are " & nHours & " hours left."
另外,如果想要在字符串中直接使用日期的話,需要在其前后加上“#”。比如,TimeValue("12:34:56 AM") -> TimeValue("#12:34:56 AM#")
4. 其他函數
Filter(sourcearray, match, include, compare)
-用于從sourcearray數組里篩選出與match指定文字相符的要素,返回新的數組;如果include=False,則不包含match指定的字符。
Split(expression, delimiter, limit, compare)
-按照delimiter分割expression;limit指定分割要素數。
Join(sourcearray, delimiter)
-按照delimiter合成sourcearray里的各要素。
5. 自定義函數
ParamArray的用法:
Function AllJoin(delim as String, ParamArray SourceStrings())
AllJoin = Join(SourceStrings, delim)
End Function
Sub Test()
MsgBox AllJoin(",", "English", "Math", "Physics", "Computer", "Music")
End Sub