Xin hỏi về cách nhận biết định dạng text hay số trong ô excel

Liên hệ QC

ThangAcc

Thành viên hoạt động
Tham gia
27/11/06
Bài viết
137
Được thích
53
Em có 1 đoạn code như thế này

Mã:
    Dim X As Double
    Dim i As Integer
    Dim Y As String
          
    For i = 93 To 295
    
        Cells(i, "A").Select
        [COLOR=red]X = ActiveCell.Value[/COLOR]
        Y = ActiveCell.Formula
        If Left(Y, 4) <> "=SUM" Then
        If X <> 0 Then
             ActiveCell.FormulaR1C1 = "=" + Str(X) + "*FACTOR"
        End If
        End If
        
   Next i
End Sub

Vấn đề là trong số các cell hàng từ A93 đến A295 có một số ô đang ở định dạng text (tiêu đề của bảng), nên khi chạy đến những ô đó hàm này báo lỗi "Data type mismatch" ở đoạn code em bôi đỏ. Em phải khai báo biến X như thế nào, hay em phải đặt đoạn code nào vào để excel hiểu ô đấy là ô text và bỏ qua không cần gán giá trị?
 
Em có 1 đoạn code như thế này

Mã:
    Dim X As Double
    Dim i As Integer
    Dim Y As String
          
    For i = 93 To 295
    
        Cells(i, "A").Select
        [COLOR=red]X = ActiveCell.Value[/COLOR]
        Y = ActiveCell.Formula
        If Left(Y, 4) <> "=SUM" Then
        If X <> 0 Then
             ActiveCell.FormulaR1C1 = "=" + Str(X) + "*FACTOR"
        End If
        End If
        
   Next i
End Sub
Vấn đề là trong số các cell hàng từ A93 đến A295 có một số ô đang ở định dạng text (tiêu đề của bảng), nên khi chạy đến những ô đó hàm này báo lỗi "Data type mismatch" ở đoạn code em bôi đỏ. Em phải khai báo biến X như thế nào, hay em phải đặt đoạn code nào vào để excel hiểu ô đấy là ô text và bỏ qua không cần gán giá trị?

Ý bạn có phải như code sau không?

Mã:
Sub test()
[COLOR=red] Dim X As Variant[/COLOR]
    Dim i As Integer
    Dim Y As String
    For i = 93 To 295
    
        Cells(i, "A").Select
        X = ActiveCell.Value
        Y = ActiveCell.Formula
        If Left(Y, 4) <> "=SUM" Then
       [COLOR=red] If IsNumeric(X) = True Then[/COLOR]
             ActiveCell.FormulaR1C1 = "=" + Str(X) + "*FACTOR"
        End If
        End If
        
   Next i
End Sub
 
Upvote 0
Đúng rồi bác ạ. Chính xác đoạn em cần là

Cells(i, "A").Select
If IsNumeric(ActiveCell.Value) = True Then
X = ActiveCell.Value
Y = ActiveCell.Formula
If Left(Y, 1) <> "=" Then
If X <> 0 And X <> 2009 And X <> 2010 Then
ActiveCell.FormulaR1C1 = "=" + Str(X) + "*FACTOR"
End If
End If
End If

Code đã chạy ngon, thanks bác nhiều
 
Upvote 0
Web KT

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

Back
Top Bottom