Làm sao bỏ dấu phẩy trên ;Chr(39);

  • Thread starter Thread starter kelvin
  • Ngày gửi Ngày gửi
Liên hệ QC

kelvin

Thành viên thường trực
Tham gia
24/6/06
Bài viết
202
Được thích
184
Nghề nghiệp
Tư vấn xây dựng, kinh doanh in ấn
Để thêm dấu phẩy trên ;Chr(39);mình thường dùng đoạn code sau:
Mã:
Sub AddTicksToSelection() 'Add Tick To Text:ok
    Dim Z As Variant, X As Variant
    Z = Selection.Address   'Get the address
        For Each X In ActiveSheet.Range(Z)  'Do while
            If Len(X) > 0 Then      'Find cells with something
                X.FormulaR1C1 = Chr(39) & X.Text    '39 is code for tick
            Else
                X.FormulaR1C1 = ""  'If empty do not put tick
            End If
        Next
    End Sub
Bây giờ tại Selection có vài cell đã có Chr(39) , vài cell không có.Mình muốn có 1 đoạn code duyệt qua Selection, nếu có Chr(39) ở đầu hàng thì không làm gì cả, còn nếu khg có thì thêm Chr(39) vào đầu hàng ?
Vấn đề là Excel đã chọn Chr(39) là ký tự format text, nên các hàm LEN,MID.. không kể đến nó .Cả lệnh Find cũng khg kiếm được
 
Public Function find39(ByVal t As String) As Boolean
t39 = Left(t, 1)
If InStr(t39, Chr(39)) <> 0 Then find39 = True Else find39 = False
End Function

Hàm này nếu có chr(39) thì trả về TRUE,còn kô thì trả về FALSE
 
Upvote 0
Mình thử rồi nó toàn trả về False thôi,
Có thêm vào đoạn code của bạn dòng : Dim t39 As String
 
Upvote 0
Mình thử rồi nó toàn trả về False thôi,
Có thêm vào đoạn code của bạn dòng : Dim t39 As String
Em thấy nếu nó có Chr(39) rồi mà chạy thì nó cũng đâu them vào thành 2 đâu. Còn không Anh dùng hàm Clean của Excel xóa trước rồi thêm vào.
X=worksheetfunction.clean(X)
Đại loại như vậy.
 
Upvote 0
Co phai như thế này kô bạn
Nhưng sao tôi làm thì lại toàn ra FALSE không vậy

Em thấy nếu nó có Chr(39) rồi mà chạy thì nó cũng đâu them vào thành 2 đâu. Còn không Anh dùng hàm Clean của Excel xóa trước rồi thêm vào.
X=worksheetfunction.clean(X)
Đại loại như vậy.
Ừ nhỉ, mà sao khi có Chr(39) rồi thì nó khg thêm vào 2 cái ta?
Cái hàm clean nầy hay đấy !!!|||||
Mình cũng mới nghĩ ra dùng hàm MID để xóa Chr(39), nhưng cả cách này lẫn của Thu Nghi cũng thấy không "đã" lắm.
Mã:
Sub RemoveTickAndAdd()
 strAddress = Selection.Address   'Get the address
        For Each rng_element In ActiveSheet.Range(strAddress)  'Do while
            If Len(rng_element) > 0 Then      'Find cells with something
                rng_element.FormulaR1C1 = Mid(rng_element, 1, Len(rng_element))   'maát daáu '
                rng_element.FormulaR1C1 = Chr(39) & rng_element.Text    '39 is code for tick
            'Else
            '    .FormulaR1C1 = ""  'If empty do not put tick
            End If
        Next
End Sub

Co phai như thế này kô bạn
Bây giờ thì phần của bạn nó cũng thành FALSE tất cả , có lẻ do bạn dùng công thức, copy value mà chưa evaluate lại (F2,Enter)
 

File đính kèm

Upvote 0
Excel không nhận ký tự ' là value bác ạ, em đã thử cái này nhưng chưa tìm được nguyên nhân:

PHP:
Sub Test()
    Range("B4") = "'"
    MsgBox Range("B4").Value
    ' và Formular ..... đều không nhận
End Sub
 
Upvote 0
Excel không nhận ký tự ' là value bác ạ, em đã thử cái này nhưng chưa tìm được nguyên nhân:

PHP:
Sub Test()
    Range("B4") = "'"
    MsgBox Range("B4").Value
    ' và Formular ..... đều không nhận
End Sub
Anh ơi, M$ Excel quy định ô nào đánh dấu phẩy trên (') đầu câu thì các ký tự đánh tiếp theo được hiểu là chuỗi ký tự. Nếu muốn có dấu phảy trên thì đánh liên tiếp >=2 dấu phẩy nhé!
 
Upvote 0
Anh ơi, M$ Excel quy định ô nào đánh dấu phẩy trên (') đầu câu thì các ký tự đánh tiếp theo được hiểu là chuỗi ký tự. Nếu muốn có dấu phảy trên thì đánh liên tiếp >=2 dấu phẩy nhé!

Đúng là tôi vẫn sử dụng ' ở trước để nhập giá trị giống công thức cho excel khỏi nhầm thành công thức. Không rõ có thể thay đổi được kiểu quy định đó không vậy? Nếu thay đổi được thành ký tự là ổn.
 
Upvote 0
Web KT

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

Back
Top Bottom