• Thứ Ba, 17/07/2007 09:46 (GMT+7)

    Macro đổi giờ quốc tế sang giờ Việt Nam

    Câu hỏi :
    1. Làm thế nào để tạo hyperlink trong mục lục của file Word, khi nhấn sẽ nhảy đến phần nội dung tương ứng.

     2. Xin hướng dẫn viết macro hoặc hàm trong Excel để khi nhập giờ chuẩn thế giới vào một ô thì nó quy đổi ra giờ VN ở một ô khác (nghĩa là giờ UTC+7 sẽ ra giờ VN), nếu sang ngày hôm sau thì thêm dấu + đứng sau. VD: 18.27h (UTC) thì ô chuyển đổi sẽ là 01.27+.
     

    Trả lời :

    1. Bạn có thể dùng khả năng hyperlink của Word để tạo mối liên kết siêu văn bản đến bất kỳ file nào hay đến bất kỳ vị trí nào trong tài liệu Word hiện hành. Qui trình điển hình tạo mối liên kết đến 1 vị trí trong tài liệu Word như sau:

     • dời chuột đến vị trí cần liên kết đến, chọn menu Insert.Bookmark, nhập tên bookmark nhận dạng vị trí rồi ấn button Add.
     • dời chuột đến vị trí cần tạo mối liên kết, chọn menu Insert.Hyperlink, ấn button Bookmark, duyệt và chọn tên bookmark cần liên kết đến, nhập chuỗi miêu tả mối liên kết rồi ấn OK.

     2. Bạn có thể viết 1 hàm user-defined để giải quyết yêu cầu riêng của mình. Cụ thể bạn hãy tiến hành các thao tác sau:
     • chạy Excel, mở file Excel cần làm việc.
     • vào menu Tools.Macro.Visual Basic Editor để mở cửa sổ soạn code VBA. Ấn phải chuột trong cửa sổ Project, chọn menu Insert.Module để tạo ra Module VBA mới (tên mặc định là Module1) rồi nhập hàm TimeVn() như sau:
     
     'hàm đổi chuỗi miêu tả giờ UTC theo định dạng hh:mm:ss thành giờ VN theo yêu cầu của bạn
     Public Function TimeVn(t As String) As String
     Dim i As Integer
     Dim l As String
     Dim r As String
     'tìm vị trí ký tự : trong chuỗi
     i = InStr(1, t, ":")
     'tách chuỗi miêu tả giờ
     l = Left(t, i - 1)
     'tách phần còn lại
     r = Mid(t, i)
     'đổi chuỗi miêu tả giờ thành số
     i = CInt(l)
     'tăng giờ thêm 7 đơn vị
     j = (i + 7) Mod 24
     'tạo chuỗi kết quả
     If i < j Then
     TimeVn = CStr(j) & r
     Else
     TimeVn = CStr(j) & r & "+"
     End If
     End Function
     
     'hàm đổi giờ UTC (kiểu Date) thành chuỗi miêu tả giờ VN theo yêu cầu của bạn
     Public Function TimeVn1(d As Date) As String
     Dim t As String
     Dim i As Integer
     Dim l As String
     Dim r As String
     'đổi giá trị thời gian thành chuỗi
     t = Format(d, "hh:mm:ss")
     'tìm vị trí ký tự : trong chuỗi
     i = InStr(1, t, ":")
     'tách chuỗi miêu tả giờ
     l = Left(t, i - 1)
     'tách phần còn lại
     r = Mid(t, i)
     'đổi chuỗi miêu tả giờ thành số
     i = CInt(l)
     'tăng giờ thêm 7 đơn vị
     j = (i + 7) Mod 24
     'tạo chuỗi kết quả
     If i < j Then
     TimeVn1 = CStr(j) & r
     Else
     TimeVn1 = CStr(j) & r & "+"
     End If
     End Function
     
     Sau khi đã viết xong hàm used-defined trên, bạn có thể gọi nó bất kỳ ở đâu và lúc nào trong khi đang làm việc trên file Excel hiện hành (giống y như gọi hàm sẵn có của Excel). 
     

    Chuyên mục: Ứng dụng văn phòng