Giả sử ô A1 A2 ... Có giá trị là VbBlu, vbGreen, ... Làm thế nào để sử dụng các giá trị trong các ô A1,A2...trong vòng lặp For.
For i=1 to 5 Cells(i, 2).Interior.Color=Cells(i, 1).Value Next
Nó không hiểu đó là hằng số. Xin mọi người giúp đỡ.
Bạn làm thế để làm gì vậy?
Sao bạn không nhập thẳng số màu vào cell nhỉ. Có nhất thiết phải để là vbBlue, vbgreen không? Nếu bắt buộc phải dùng thì bạn nên có bảng tra trung gian
Tặng Kiệu Kiệu nè: Sub ToMau() For i = 1 To 20 If IsNumeric(Cells(i, 1).Value) Then mau = Cells(i, 1).Value Else Select Case Cells(i, 1).Value Case "Dark red" mau = 192 Case "Red" mau = 255 Case "Orange" mau = 49407 Case "Yellow" mau = 65535 Case "Light green" mau = 5296274 Case "Green" mau = 5287936 Case "Light blue" mau = 15773696 Case "Blue" mau = 12611584 Case "Dark Blue" mau = 6299648 Case "Purple" mau = 10498160 Case Else mau = 0 End Select End If Cells(i, 2).Interior.Color = mau Next End Sub
Hôm bữa có đọc thấy phải làm 1 cái sub riêng để biến string thành lệnh thực thi trong vba. Mà thấy ít va chạm cái này quá nên ngại nghiên cứu tiếp
Không sử dụng được. Vì khi dùng như vậy VBA không có cách nào (built-in) để chuyển từ giá trị của 1 cell - VD: "vbRed" sang hằng số kiểu Long vbRed mà VBA hiểu.
Bạn có thể lưu HEX value của những màu đó vào ô trên Excel rồi sử dụng vòng lặp. Muốn tìm Hex value của 1 màu thì dùng lệnh Hex(vbRed). Rồi tô màu cho 1 cell như sau:
[A1].Interior.color = "&H" & Hex(vbRed) hoặc [A1].Interior.color = "&HFF"
(Hex value của vbRed là "FF")
Public Sub Execute()
Dim ObjectName As String Dim Object As Object ObjectName = txtObject.Text Set Object = ObjectName Object.Execute
End Sub
Đọc được 1 hướng dẫn là dùng vba tạo 1 sub có dòng string đó. Sau đó chạy sub rồi xóa sub. Mà làm theo nó cứ báo lỗi method add vbcomponents @@