Tìm kiếm

Danh mục
Hàng mới
Liên hệ: Minh
0987.28.80.81
0976.775.168
Quảng cáo






Thanh công cụ 

LẬP TRÌNH VBA

Các hàm xử lý chuỗi trong VBA
InStr: Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ trái sang phải.
InstrRev: Trả về lần xuất hiện đầu tiên của chuỗi con được chỉ định. Tìm kiếm xảy ra từ bên phải sang trái.
Lcase: Trả về chuỗi chữ hoa của chuỗi được chỉ định.
Ucase: 
Trả về chuỗi chữ thường của chuỗi được chỉ định.
Ltrim: Trả về một chuỗi sau khi loại bỏ các khoảng trống ở phía bên trái của chuỗi được chỉ định.
Rtrim: Trả về một chuỗi sau khi loại bỏ các khoảng trống ở phía bên phải của chuỗi được chỉ định.
Len: Trả về độ dài của chuỗi đã cho.
Replace: Trả về một chuỗi sau khi thay thế một chuỗi với một chuỗi khác.
Space: Điền vào một chuỗi với số ký tự space được chỉ định.



Điền vào một chuỗi với số ký tự space được chỉ định.






Nếu... Thì...: If ... Then ...
Nếu... Và... Thì...: If ... And... Then ...

Hàm 1 biến:

Function hammotbien(x)
hammotbien = x * 8 & " ok"
End Function
Hàm 2 biến:
Function hamhaibien(x, y)
hamhaibien = x * 4 + 3 * y
End Function
Hàm if đơn:
Function vnd(x)
If x = 1 Then
vnd = "m?t"
End If
 
If x = 2 Then
vnd = "hai"
End If
 End Function

Bài toán kinh điển: Viết code đọc số thành chữ cho một số bất kỳ (chứa tối đa 15 chữ số).
Phân tích bài toán: 
Bài toán tưởng chừng đơn giản này là nguyên nhân ra đời vô vàn ý tưởng. Mỗi ý tưởng lại được các lập trình viên giải bằng những dòng code khác nhau. Nếu bạn có thể sử dụng những câu lệnh do chính mình nghĩ ra để giải quyết được bài toán này thì bạn đã có một lượng kiến thức kha khá rồi đấy. Hãy cùng chúng tôi phân tích cái hay của những dòng Code nhé.
Gọi số cần đọc là: abcdefghiklmnop. Trong đó: a, b, c, d, e, f, g, h, i, k, l, m, n, o, p là các số tự nhiên từ 0 đến 9.

Ý tưởng 1: Có công mài sắt có ngày nên kim.
Định nghĩa lần lượt: số cần đọc (x): x = 1 -------- "một", x = 2 -------- "hai", ..., x = 99999...999 ------ "chín.....chín".
Ý tưởng 2: 
- Dùng hàm RIGHT để tách lấy chữ số hàng đơn vị p. Sau đó dùng hàm 1 (tự đặt tên) để định nghĩa cách đọc từ 0 đến 9, có sử dụng kết hợp hàm LEN và so sánh với số 21 (vì hàng chục lớn hơn 1 thì cách đọc của số 1 có khác đi. VD: (11) mười một. (21) hai mươi mốt.
- Dùng hàm RIGHT kết hợp LEFT hoặc hàm MID kết hợp LEN để tách lấy chữ số hàng chục o. Sau đó dùng hàm 2 (tự đặt tên) để định nghĩa cách đọc từ 0 đến 9, có sử dụng kết hợp hàm LEN.

Ý tưởng 3: Font VNI abcdefghijklmop = x = BaoNhieu
Ý tưởng này sẽ tách lớp: abc (nghìn tỷ), def (tỷ), ghi (triệu), jkl (nghìn), mop (đơn vị). Tùy vào x cụ thể, lớp có thể gồm 0, 1, 2 hoặc 3 chữ số. 


- Hàm số: VND. Biến số chính: BaoNhieu. Biến phụ: KetQua, SOTIEN, NHOM, Chu, Dich, S1, S2, S3.

- Định nghĩa: x = 0 -> 
KetQua = "Khoâng ñoàng". Trường hợp Giá trị tuyệt đối phần nguyên của x lớn hơn 15 chữ số -> KetQua = "Soá Quùa Lôùn". Trường hợp x là số nguyên âm -> KetQua = "Tröø" & Space(1). Các trường hợp khác để nguyên, các chữ số đứng sát nhau. 
- Giá trị tuyệt đối của SOTIEN được định dạng dưới dạng: ###############. Tính từ bên phải sang, lấy 15 ký tự của phần nguyên -> SOTIEN = Right(Space(15) & SOTIEN, 15).
- Hàng, cách đọc, cách đếm được khai báo theo mảng -> Hang = Array("None", "traêm", "möôi", "gì ñoù"). DOC = Array("None", "ngaøn tyû,", "tyû,", "trieäu,", "ngaøn,", "ñoàng "). DEM = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chín"). Cái hay của việc khai báo khi sử dụng hàm Array sẽ cho tương ứng với các số những cụm từ tương ứng, giảm thiểu tối đa việc định nghĩa các số.
- Biến I chạy từ 1 đến 5 (Vòng lặp For next). NHOM sẽ lấy 3 ký tự giữa căn cứ vào biến SOTIEN, bắt đầu từ ký tự phục thuộc biến I theo công thức: NHOM = Mid(SOTIEN, I * 3 - 2, 3). NHOM ở đây có tác dụng tách lớp: mop (lớp đơn vị) jkl (lớp nghìn) ghi (lớp triệu) def (lớp tỷ) abc (lớp nghìn tỷ) . Trường hợp NHOM khác 3 ký tự. Thực hiện một nhóm các câu lệnh theo NHOM. Lệnh 1:
- S1 là chữ số đầu tiên của mỗi nhóm. S2 là chữ số giữa của mỗi nhóm. S3 là chữ số cuối của mỗi nhóm. S lấy từng chữ số trong NHOM tùy thuộc vào biến J theo công thức: 
S = Val(Mid(NHOM, J, 1)). Nếu S > 0, đếm S, Dịch theo công thức: Dich = DEM(S) & Space(1) & Hang(J) & Space(1)
- Thực hiện một nhóm các câu lệnh theo J:
- Nếu lớp có hàng chục bằng 1, dịch là: 
Dich = "möôøi" & Space(1). Tại lớp đơn vị, nếu chữ số hàng chục bằng 0 thì dịch là: Dich = "leû" & Space(1). 
- Nếu lớp có số hàng đơn vị bằng 0, dịch là: 
Case 3 And S = 0 And NHOM <> Space(2) & "0"
Dich = Hang(J) & Space(1)
- Nếu lớp có hàng đơn vị bằng 5, hàng chục khác 0, thì đọc là "lăm": Dich = "1" & Mid(Dich, 2) '(Kyù töï e lờ). øTrường hợp lớp có hàng chục bằng 0, hàng đơn vị khác 0, thì dịch là "linh" -> Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or (S1 = "0" And I = 3) Or _
(S1 = "0" And I = 4) Then
Dich = "linh" & Space(1).
- Nếu lớp có hàng trăm bằng 0, trước hàng đó vẫn còn số hoặc chữ số hàng đơn vị dịch là "không trăm". 



Function VND(BaoNhieu)

Dim KetQua, SOTIEN, NHOM, Chu, Dich, S1, S2, S3 As String
Dim I, J, Vitri As Byte, S As Double
Dim Hang, DOC, DEM
If BaoNhieu = 0 Then
KetQua = "Khoâng ñoàng"
Else
If Abs(BaoNhieu) > 1E+15 Then
KetQua = "Soá Quùa Lôùn"
Else
If BaoNhieu < 0 Then
KetQua = "Tröø" & Space(1)
Else
KetQua = Space(0)
End If
SOTIEN = Format(Abs(BaoNhieu), "###############")
SOTIEN = Right(Space(15) & SOTIEN, 15)
Hang = Array("None", "traêm", "möôi", "gì ñoù")
DOC = Array("None", "ngaøn tyû,", "tyû,", "trieäu,", "ngaøn,", "ñoàng ")
DEM = Array("None", "moät", "hai", "ba", "boán", "naêm", "saùu", "baûy", "taùm", "chín")
For I = 1 To 5
NHOM = Mid(SOTIEN, I * 3 - 2, 3)
If NHOM <> Space(3) Then
Select Case NHOM
Case "000"
If I = 5 Then
Chu = "ñoàng chaün " & Space(1)
Else
Chu = Space(0)
End If
Case Else
S1 = Left(NHOM, 1)
S2 = Mid(NHOM, 2, 1)
S3 = Right(NHOM, 1)
Chu = Space(0)
Hang(3) = DOC(I)
For J = 1 To 3
Dich = Space(0)
S = Val(Mid(NHOM, J, 1))
If S > 0 Then
Dich = DEM(S) & Space(1) & Hang(J) & Space(1)
End If
Select Case J
Case 2 And S = 1
Dich = "möôøi" & Space(1)
Case 2 And S2 = "0" And S3 <> "0" And S1 >= "0" And I = 5
Dich = "leû" & Space(1)
Case 3 And S = 0 And NHOM <> Space(2) & "0"
Dich = Hang(J) & Space(1)
Case 3 And S = 5 And S2 <> Space(1) And S2 <> "0"
Dich = "1" & Mid(Dich, 2) 'Kyù töï en lôø
Case 2 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or (S1 = "0" And I = 3) Or _
(S1 = "0" And I = 4) Then
Dich = "linh" & Space(1)
End If

Case 1 And S = 0 And S3 <> "0"
If (S1 >= "1" And S1 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or _
(S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then
Dich = "khoâng traêm" & Space(1)
End If
Case 1 And S = 0 And S3 = "0"
If (S1 >= "1" And S2 <= "9") Or (S1 = "0" And I = 1) Or (S1 = "0" And I = 2) Or _
(S1 = "0" And I = 3) Or (S1 = "0" And I = 4) Or (S1 = "0" And I = 5) Then
Dich = "khoâng traêm" & Space(1)
End If
End Select
Chu = Chu & Dich
Next J
End Select
Vitri = InStr(1, Chu, "möôi moät", 1)
If Vitri > 0 Then Mid(Chu, Vitri, 9) = "möôi moát"
KetQua = KetQua & Chu
End If
Next I
End If
End If
VND = UCase(Left(KetQua, 1)) & Mid(KetQua, 2)
End Function

Đăng nhập
Giỏ hàng
Bạn đang có 0 sản phẩm trong giỏ hàng
Xem giỏ hàng
Hàng bán chạy
Thống kê
Lượt truy cập : 940193
Số người online : 72
+ Khách : 72
+ Thành viên : 0
Quảng cáo




Trang chủGiới thiệuSản phẩmInsight EnglishBHXHDatabaseTiện íchGiải tríKhoảng trờiWall Web
Email : tianangdep@gmail.com
Điện thoại : 0987.28.80.81
Nội dung : Phạm Văn Minh
Xây dựng : Vũ Quang Hiệu
Blog : tianangdep.blogspot.com
       © 2017 - 2018 : Tia Nắng Đẹp