Làm sao hiện bảng màu và lấy chỉ số màu từ bảng ấy

Liên hệ QC

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,952
Trong VB6, để lấy chỉ số màu từ bảng màu, tôi viết code như sau:
PHP:
Private Sub Cmd_Click()
  ''COMDLG32.OCX References
  With New CommonDialog
    .ShowColor
     Red = .Color Mod 256
     Green = ((.Color - Red) Mod 65536) / 256
     Blue = (.Color - Red - Green * 256) / 65536
     MsgBox "RGB(" & Red & "," & Green & "," & Blue & ")", vbOKOnly, "Result"
  End With
End Sub
Thế mà tôi chẳng tài nào "chuyển thể" nó sang VBA được
Các bạn ai biết cách viết code trong Excel tương tự như thế này vui lòng hướng dẩn tôi với
Tôi gữi file đính kèm (VB) để các bạn biết nó hoạt động thế nào nhé
(Điểm quan trọng là tôi không thể Show được CommonDialog)
 

File đính kèm

Ndu tham khảo cách này xem. (Mình sưu tầm ở đâu không rõ nữa)
 

File đính kèm

Upvote 0
Ndu tham khảo cách này xem. (Mình sưu tầm ở đâu không rõ nữa)
Ai chà... không ngờ nó cũng chẳng dể tí nào
Em vẫn thắc mắc rằng: trong Excel VBA, em dùng đoạn code này:
PHP:
Sub Test()
  With CreateObject("UserAccounts.CommonDialog")
    .ShowOpen
  End With
End Sub
Là có thể Show hộp Open
Ấy thế mà sửa .ShowOpen thành .ShowColor nó không chịu ---> Thế mới kỳ chứ (Đàng nào nó cũng là CommonDialog cơ mà)
 
Upvote 0
Để hiện bảng màu của Excel thì được nhưng mình chả biết lấy thông số ra làm sao. Ndu thử dòng lệnh này xem

PHP:
Application.Dialogs(161).Show
 
Lần chỉnh sửa cuối:
Upvote 0
Ndu tham khảo cách này xem. (Mình sưu tầm ở đâu không rõ nữa)
Code trong file của anh có đoạn:
PHP:
Public Enum CHOOSE_COLOR_FLAGS
CC_RGBINIT = &H1&
CC_FULLOPEN = &H2&
CC_PREVENTFULLOPEN = &H4&
CC_SHOWHELP = &H8&
CC_ENABLEHOOK = &H10&
CC_ENABLETEMPLATE = &H20&
CC_ENABLETEMPLATEHANDLE = &H40&
CC_SOLIDCOLOR = &H80&
CC_ANYCOLOR = &H100&
End Enum
không biết để làm gì ---> Em xóa hết nó vẫn chạy tốt anh à, chỉ cần sửa đoạn
flags As CHOOSE_COLOR_FLAGS
thành
flags As Long
là xong!
Cuối cùng em biến đổi thế này:
PHP:
Private Type CHOOSECOLOR
    lStructSize As Long
    hwndOwner As Long
    hInstance As Long
    rgbResult As Long
    lpCustColors As String
    flags As Long
    lCustData As Long
    lpfnHook As Long
    lpTemplateName As String
End Type
PHP:
Private Declare Function CHOOSECOLOR Lib "comdlg32.dll" Alias _
         "ChooseColorA" (pChoosecolor As CHOOSECOLOR) As Long
PHP:
Private Sub Picker_Click()
  Dim PickColor As CHOOSECOLOR
  Dim Red, Green, Blue
  Dim ColorRef(15) As Long
  With PickColor
    .lStructSize = Len(PickColor)
    .lpCustColors = VarPtr(ColorRef(0))
     If CHOOSECOLOR(PickColor) Then
       Red = .rgbResult Mod 256
       Green = ((.rgbResult - Red) Mod 65536) / 256
       Blue = (.rgbResult - Red - Green * 256) / 65536
       Me.Sample.BackColor = .rgbResult
       Me.Result.Caption = "RGB: " & Red & ", " & Green & ", " & Blue
     End If
  End With
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Như mình đã nói,đây là code mình sưu tầm được trên mạng về việc sử dụng hàm API (Cả về xác định máy in khả dụng, các cổng, thông tin về máy tính v.v..). Mình thấy người ta viết vậy nhưng không hiểu
 
Upvote 0
Web KT

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

Back
Top Bottom