Xác định mã font của một ô đang sử dụng một hàm tự viết (User Defined Function)

Liên hệ QC

phamduylong

-
Thành viên đã mất
Tham gia
30/12/06
Bài viết
918
Được thích
2,368
Nghề nghiệp
Giáo viên
Để viết hàm đọc số tiếng Việt, việc xác định bảng mã đang sử dụng rất quan trọng trong việc tự động chọn bảng mã phù hợp. Nhưng thực tế trong một sheet lại có thể có nhiều bảng mã.
Ví dụ ô A2=123 font .VnTime, ô B2=DOCSO(A2) font Arial
Kết quả trả về B2 là một trăm hai mươi ba với bảng mã Unicode chứ không thể theo ô A2 bảng mã là ABC-TCVN3
Xác định tên font của đối số A2 tôi viết như sau:
PHP:
Function DOCSO(txt As Range) As String
Dim FontName As String
Dim FontName As String
FontName = txt.Font.Name
......
End Function
Nhưng xác định font của ô B2 (ô chứa công thức) chưa làm được.
Nhờ các bạn hỗ trợ phần này.
 
Như thế này anh ạ
Mã:
Function GetCurrFontName() As String

     GetCurrFontName = Application.Caller.Font.Name

End Function
 
Upvote 0
Với FontName = txt.Font.Name thì ta chỉ mới biết được định dạng Font trong vùng chọn mà thôi. Làm sao để kiểm tra được nội dung hay công thức trong vùng đó được ghi theo Font nào.
VD Vùng A1:A10 định dạng là Arial, nhưng khi nhập nội dung thì ta lại gõ theo Font .vnArial.
Làm sao ta biết được nội dung được ghi dưới Font .vnArial.
 
Upvote 0
Việc xác định font loại nào thì có thể làm được, nhưng khi áp dụng thì nó sẽ làm cho tốc độ xử lý rất chậm vì trước khi convert nó luôn phải kiểm tra trước. Vậy nên nếu ứng dụng hàm này trong việc convert dữ liệu với số lượng lớn thì không nên.
 
Upvote 0
hoangdanh282vn đã viết:
Với FontName = txt.Font.Name thì ta chỉ mới biết được định dạng Font trong vùng chọn mà thôi. Làm sao để kiểm tra được nội dung hay công thức trong vùng đó được ghi theo Font nào.
VD Vùng A1:A10 định dạng là Arial, nhưng khi nhập nội dung thì ta lại gõ theo Font .vnArial.
Làm sao ta biết được nội dung được ghi dưới Font .vnArial.
Với code của TuanVNUNI, thì FontName = txt.Font.Name với txt là đối số (txt As Range) không còn cần thiết nữa. Vì mình chỉ cần xác định font của ô đang chứa công thức thôi.
Tôi định ứng dụng vào hàm đọc số tự nhận dạng bảng mã, nó sẽ xác định bảng mã của ô chứa công thức của hàm DocSo

PHP:
Function DocSo(number As Double) As String
Dim FontName As String, txt As String
FontName = Application.Caller.Font.Name
Select Case Left(FontName, 3)
Case "VNI"
  .......
  .......
  txt= .....
Case ".Vn"
  .......
  .......
  txt= .....
Case Else
  .......
  .......
  txt= .....
End Select
DocSo = txt
End Function

TuanVNUNI đã viết:
Việc xác định font loại nào thì có thể làm được, nhưng khi áp dụng thì nó sẽ làm cho tốc độ xử lý rất chậm vì trước khi convert nó luôn phải kiểm tra trước. Vậy nên nếu ứng dụng hàm này trong việc convert dữ liệu với số lượng lớn thì không nên.
Dùng cho đọc số thì được, vì 1 bảng tính thường chỉ 1 ô dùng hàm này thôi.
 
Upvote 0
Function DocSo(number As Double) As String
Dim FontName As String, txt As String
FontName = Application.Caller.Font.Name
Select Case Left(FontName, 3)
Case "VNI"
.......
.......
txt= .....
Case ".Vn"
.......
.......
txt= .....
Case Else
.......
.......
txt= .....
End Select
DocSo = txt
End Function

Thầy ơi, cái này dùng được khi định dạng cell và nội dung cell có cùng một kiểu Font. Có rất nhiều trường hợp Font cell và Font nội dung cell khác nhau, cái mà ta cần kiểm tra là Font nội dung cell cơ. Vậy có cách nào kiểm tra được không thầy.
 
Upvote 0
Ở đây chỉ cần xác định font của cell thôi để hiển thị kết quả của hàm đổi số sang chữ, có nhiều trường hợp trong 1 cell lại chứa nhiều font khác nhau nhưng trong trường hợp này thì chỉ có 1 font thôi chứ, làm sao mà có thể gán nhiều font cho kết quả của 1 hàm được.
 
Upvote 0
Web KT

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

Back
Top Bottom