vba trong excel

5
VBA TRONG EXCEL 1. Tạo hàm tách họ và tên: Chọn View -> Macros -> View Macros -> Xuất hiện hộp thoại Macro: trong phần Macro name nhập tên hàm cần tạo (name) và chọn Create, xuất hiện cửa sổ VAB để viết code: Private Function name (ten As String, lg As Integer) Dim j As Integer Tent=Trim(ten) For j=len(Tent) To 1 Step -1 If Mid(Tent,j,1)= “ “ Then If lg= “1” Then Name=Right(Tent, Len(Tent)-j) Else Name=Left(Tent,j) End If Exit For End If Next End Function Sau khi nhập xong ấn nút lưu và thoát khỏi VBA để trở lại Excel. Muốn tách họ đệm ta sử dụng hàm =name(<họ và tên>, 1) Muốn tách tên ta sử dụng hàm =name(<họ và tên>, 0) 2. Hàm đọc số ra chữ: Function UnicodeChar(UniCharCode As String) As String On Error GoTo Loi Dim str Dim desStr As String Dim i If Mid(UniCharCode, 1, 1) = ";" Then UniCharCode = Mid(UniCharCode, 2) End If If Right(UniCharCode, 1) = ";" Then UniCharCode = Mid(UniCharCode, 1, Len(UniCharCode) - 1) End If str = UniCharCode str = Split(str, ";") For i = LBound(str) To UBound(str) desStr = desStr & ChrW$("&H" & str(i))

Upload: nguyen-duc-tai

Post on 04-Oct-2015

29 views

Category:

Documents


14 download

DESCRIPTION

Vba Trong Excel

TRANSCRIPT

VBA TRONG EXCEL

VBA TRONG EXCEL1. To hm tch h v tn:

Chn View -> Macros -> View Macros -> Xut hin hp thoi Macro: trong phn Macro name nhp tn hm cn to (name) v chn Create, xut hin ca s VAB vit code:Private Function name (ten As String, lg As Integer)Dim j As IntegerTent=Trim(ten)For j=len(Tent) To 1 Step -1If Mid(Tent,j,1)= ThenIf lg= 1 ThenName=Right(Tent, Len(Tent)-j)ElseName=Left(Tent,j)End IfExit ForEnd IfNextEnd FunctionSau khi nhp xong n nt lu v thot khi VBA tr li Excel.

Mun tch h m ta s dng hm =name(, 1)

Mun tch tn ta s dng hm =name(, 0)

2. Hm c s ra ch:Function UnicodeChar(UniCharCode As String) As String

On Error GoTo Loi

Dim str

Dim desStr As String

Dim i

If Mid(UniCharCode, 1, 1) = ";" Then

UniCharCode = Mid(UniCharCode, 2)

End If

If Right(UniCharCode, 1) = ";" Then

UniCharCode = Mid(UniCharCode, 1, Len(UniCharCode) - 1)

End If

str = UniCharCode

str = Split(str, ";")

For i = LBound(str) To UBound(str)

desStr = desStr & ChrW$("&H" & str(i))

Next

UnicodeChar = desStr

Loi:

Exit Function

End Function

Function SoRaChu(ByVal NumCurrency As Currency) As String

Static CharVND(9) As String, BangChu As String, i As Integer

Dim SoLe, SoDoi As Integer, PhanChan, Ten As String

Dim DonViTien As String, DonViLe As String

Dim NganTy As Integer, Ty As Integer, Trieu As Integer, Ngan As Integer

Dim Dong As Integer, Tram As Integer, Muoi As Integer, DonVi As Integer

DonViTien = ";111;1ED3;6E;67" ' ngDonViLe = ";78;75" ' xu

If NumCurrency = 0 Then

SoRaChu = UnicodeChar(";4B;68;F4;6E;67;20" & DonViTien)

Exit Function

End If

If NumCurrency > 922337203685477# Then ' s ln nht ca loi CURRENCY

SoRaChu = UnicodeChar(";4B;68;F4;6E;67;20;111;1ED5;69;20;111;1B0;1EE3;63;20;73" & _

";1ED1;20;6C;1EDB;6E;20;68;1A1;6E;20;39;32;32;2C;33;33;37" & _

";2C;32;30;33;2C;36;38;35;2C;34;37;37")

Exit Function

End If

CharVND(1) = ";6D;1ED9;74" ' MtCharVND(2) = ";68;61;69" ' hai

CharVND(3) = ";62;61" ' ba

CharVND(4) = ";62;1ED1;6E" ' bnCharVND(5) = ";6E;103;6D" ' nmCharVND(6) = ";73;E1;75" ' suCharVND(7) = ";62;1EA3;79" ' byCharVND(8) = ";74;E1;6D" ' tmCharVND(9) = ";63;68;ED;6E" ' chnSoLe = Int((NumCurrency - Int(NumCurrency)) * 100) ' 2 ch sPhanChan = Trim$(str$(Int(NumCurrency)))

PhanChan = Space(15 - Len(PhanChan)) + PhanChan

NganTy = Val(Left(PhanChan, 3))

Ty = Val(Mid$(PhanChan, 4, 3))

Trieu = Val(Mid$(PhanChan, 7, 3))

Ngan = Val(Mid$(PhanChan, 10, 3))

Dong = Val(Mid$(PhanChan, 13, 3))

If NganTy = 0 And Ty = 0 And Trieu = 0 And Ngan = 0 And Dong = 0 Then

BangChu = ";6B;68;F4;6E;67;20" + DonViTien + ";20"

i = 5

Else

BangChu = ""

i = 0

End If

'-----------------------------------------------------

' Bt u i'-----------------------------------------------------

While i 1 And DonVi = 1 Then

BangChu = BangChu + ";6D;1ED1;74;20" + Ten + ";20"

Else

BangChu = BangChu + IIf(DonVi 0, Trim(CharVND(DonVi)) + ";20" + Ten, Ten) + ";20"

End If

End If

Else

BangChu = BangChu + IIf(i = 4, DonViTien + "", "")

End If

i = i + 1

Wend

If SoLe = 0 Then

BangChu = BangChu + IIf(Right(BangChu, 3) = ";20", "", ";20") + ";63;68;1EB5;6E"

End If

BangChu = UnicodeChar(BangChu)

'i sang ting vit Unicode

' i ch ci u tin thnh ch hoaMid$(BangChu, 1, 1) = UCase$(Mid$(BangChu, 1, 1))

SoRaChu = BangChu

End Function

3. G password cho sheetn phi chut ti sheet cn g pass chn View code v nhp on code sau vo:

Sub PasswordBreaker()Dim i As Integer, j As Integer, k As IntegerDim l As Integer, m As Integer, n As IntegerDim i1 As Integer, i2 As Integer, i3 As IntegerDim i4 As Integer, i5 As Integer, i6 As IntegerOn Error Resume NextFor i = 65 To 66: For j = 65 To 66: For k = 65 To 66For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126ActiveSheet.Unprotect Chr(i) & Chr(j) & Chr(k) & _Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & Chr(i3) & _Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)If ActiveSheet.ProtectContents = False ThenActiveWorkbook.Sheets(1).SelectRange(a1).FormulaR1C1 = Chr(i) & Chr(j) & _Chr(k) & Chr(l) & Chr(m) & Chr(i1) & Chr(i2) & _Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)Exit SubEnd IfNext: Next: Next: Next: Next: NextNext: Next: Next: Next: Next: Next

End SubChn Run -> chn RunSub/UserFormi chy 1 lc l c