Nhờ viết giúp code vba chuyển đổi ngày tháng sang chữ

Liên hệ QC

heonuong00

Thành viên mới
Tham gia
20/5/20
Bài viết
5
Được thích
1
Tìm trên mạng toàn thấy viết 02/01/2020 ra thành ngày 2 tháng 1 năm 2020.
nhờ các sư phụ viết giúp chuyển đổi 02/01/2020 ra thành ngày 02 tháng 01 năm 2020
 
Tìm trên mạng toàn thấy viết 02/01/2020 ra thành ngày 2 tháng 1 năm 2020.
nhờ các sư phụ viết giúp chuyển đổi 02/01/2020 ra thành ngày 02 tháng 01 năm 2020
Làm thử thế này:
Chọn vùng cần xử lý
Nhấn ctrl+1 --> number --> custom. trong mục type nhập như sau: "ngày "dd" tháng "mm" năm "yyyy --> ok
 
Upvote 0
Function ngay(so As Date)
If so = 0 Then
ngay = ", ngày ...... tháng ...... n" & ChrW(259) & "m .........."
Exit Function
ElseIf Val(so) > 0 Then
ngay = Day(so)
If ngay < 10 Then ngay = "0" & ngay Else ngay = ngay
thang = Month(so)
If thang < 3 Then thang = "0" & thang Else thang = thang
nam = Year(so)
End If
ngay = "ngày " & ngay & " th" & ChrW$(225) & "ng " & thang & " n" & ChrW$(259) & "m " & nam
End Function

tìm ra đó
 
Upvote 0
Coide ấy luộm thuộm lắm.

Function ngay(so As Date)
Const DOTS = "......"
ngay = "ngày <ng> tháng <th> n" & ChrW(259) & "m <nm>"
If so = 0 Then
ngay = ", " & Replace(Replace(Replace(ngay, "<ng>", DOTS), "<th>", DOTS), "<nm>", DOTS & DOTS)
ElseIf Val(so) > 0 Then
ngay = Replace(Replace(Replace(ngay, "<ng>", Format(so, "dd")), "<th>", Format(so, IIf(Month(so) <= 2, "mm", "m"))), "<nm>", Format(so, "yyyy"))
Else
ngay = "???"
End If
End Function
 
Upvote 0
Coide ấy luộm thuộm lắm.

Function ngay(so As Date)
Const DOTS = "......"
ngay = "ngày <ng> tháng <th> n" & ChrW(259) & "m <nm>"
If so = 0 Then
ngay = ", " & Replace(Replace(Replace(ngay, "<ng>", DOTS), "<th>", DOTS), "<nm>", DOTS & DOTS)
ElseIf Val(so) > 0 Then
ngay = Replace(Replace(Replace(ngay, "<ng>", Format(so, "dd")), "<th>", Format(so, IIf(Month(so) <= 2, "mm", "m"))), "<nm>", Format(so, "yyyy"))
Else
ngay = "???"
End If
End Function
Dùng một hàm format được không bác Vet ơi, cháu nghĩ tới việc định dạng trong excel cho bài này nên nghĩ bụng vậy.
 
Upvote 0
Dùng một hàm format được không bác Vet ơi, cháu nghĩ tới việc định dạng trong excel cho bài này nên nghĩ bụng vậy.
Thì cứ thử đi.
Vào immediate window, gõ ? fomrmat(now(), "thử mọi format có thể tưởng tượng ra")
Cỡ vài chục thử sau thì biết chứ gì.
 
Upvote 0
Thì cứ thử đi.
Vào immediate window, gõ ? fomrmat(now(), "thử mọi format có thể tưởng tượng ra")
Cỡ vài chục thử sau thì biết chứ gì.
1592371154832.png

Function DinhDang(s)
DinhDang = VBA.Format(Now(), s)
End Function

Không lẽ có những lúc nó sẽ chạy sai bác ơi.
 
Upvote 0
Mình có 1 ô là thời gian là 07h50 giờ muốn chuyển thành 07 giờ 50 phút
tìm trên mạng có cái code này nhưng nó lại hiện là 7 giờ 50 phút

Function HGio(Dulieu As Range)
Dim Gio As String
Dim Phut As String
If Dulieu > 100 Then
Phut = Right(Dulieu, 2)
Gio = Left(Dulieu, Len(Dulieu) - 2)
HGio = Gio & " gi" & ChrW(7901) & " " & Phut & " phút"
Else
HGio = "..... gi" & ChrW(7901) & "..... phút"
End If
End Function
Bạn nào chỉnh lại giúp
 
Upvote 0
Mình có 1 ô là thời gian là 07h50 giờ muốn chuyển thành 07 giờ 50 phút
tìm trên mạng có cái code này nhưng nó lại hiện là 7 giờ 50 phút

Function HGio(Dulieu As Range)
Dim Gio As String
Dim Phut As String
If Dulieu > 100 Then
Phut = Right(Dulieu, 2)
Gio = Left(Dulieu, Len(Dulieu) - 2)
HGio = Gio & " gi" & ChrW(7901) & " " & Phut & " phút"
Else
HGio = "..... gi" & ChrW(7901) & "..... phút"
End If
End Function
Bạn nào chỉnh lại giúp
Dùng hàm TEXT thế này:
Mã:
=TEXT(A1,"hh"" giờ ""mm ""phút""")
Với cell A1 chưa dữ liệu time. Sao phải viết code đối với những thứ có thể làm được bằng cách thông thường?
 
Upvote 0
Phải nói là code "tìm trên mạng" của bạn dở như hạch.

Trên cách chung của lập trình thì gần như ngôn ngữ nào cũng có hàm sử lý chuỗi.
Đại khái thì muốn trình bày một số (dương) dưới dạng 2 chữ số thì cộng số ấy cho 100, và dùng hàm chuỗi lấy hai ký tự sau cùng.
Như vậy , với VBA:
RIGHT(số + 100, 2)

Riêng với các ngôn ngữ có loại hàm định dạng thì dùng hàm ấy. Hàm định dạng trong VBA là hàm Format.
VBA:
Format(số, "0#") ' định dạng số thành 01, 02, 03,..., 10, 11, ...
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom