Dùng API thôi. Thằng nào có window handle là "nắm cổ" được hết. Hên thằng ListView này có (ListView1.hWnd)
Công việc gần giống với thay đổi màu Text trên thanh tiêu đề nào đó (UserForm hoặc Excel)
Ẹc... Ẹc...
--------------------------
Dùng API thôi. Thằng nào có window handle là "nắm cổ" được hết. Hên thằng ListView này có (ListView1.hWnd)
Công việc gần giống với thay đổi màu Text trên thanh tiêu đề nào đó (UserForm hoặc Excel)
Ẹc... Ẹc...
--------------------------
Có thể máy em có vấn đề về tải tập tin .rar từ diễn đàn. (Xin lỗi vì đã lạc đề trong topic này).
Mới bị sáng này, đối với các tập tin khác .rar thì tải được, không biết có ai gặp trường hợp này không xin hướng dẫn dùm.
Đã thiết lập đuôi mở rộng trong IDM, bỏ proxy trong mạng Lan, đã thử các trình duyệt Explorer, Co rom, Chrome.
Có thể máy em có vấn đề về tải tập tin .rar từ diễn đàn. (Xin lỗi vì đã lạc đề trong topic này).
Mới bị sáng này, đối với các tập tin khác .rar thì tải được, không biết có ai gặp trường hợp này không xin hướng dẫn dùm.
Đã thiết lập đuôi mở rộng trong IDM, bỏ proxy trong mạng Lan, đã thử các trình duyệt Explorer, Co rom, Chrome.
Dùng API thôi. Thằng nào có window handle là "nắm cổ" được hết. Hên thằng ListView này có (ListView1.hWnd)
Công việc gần giống với thay đổi màu Text trên thanh tiêu đề nào đó (UserForm hoặc Excel)
Ẹc... Ẹc...
Dùng API thôi. Thằng nào có window handle là "nắm cổ" được hết. Hên thằng ListView này có (ListView1.hWnd)
Công việc gần giống với thay đổi màu Text trên thanh tiêu đề nào đó (UserForm hoặc Excel)
Ẹc... Ẹc...
--------------------------
Từ lúc em xài thằng 2013 rồi hạ xuống 2010 bị thằng em ListView nó "hành hạ" khổ sở giữa máy cơ quan xài thằng 2003 rồi em xài thằng 2010, lưu qua lưu lại bị lỗi như bài này đã nói:
Chính vì các Control 6.0 rất "cà giựt", với file Excel 2003 lưu có ListView chẳng hạn, rồi sau đó sử dụng file đó trên Excel 2010 và lưu lại, sau đó dùng file đó sử dụng lại trên Excel 2003 thì bị lỗi không sử dụng được ListView, vã lại, các controls loại này thường không sử dụng được với Unicode Tiếng Việt, và còn phải tải về và cài đặt nữa chứ, nên tôi phải dùng các controls khác để thực hiện mà không bị "cà giựt" như thế nữa!
Cho nên em đã không còn hứng thú với cái ListView nói riêng và các controls 6.0 nói chung nữa!
Và vì thế em đã "chế" ra cái List mới từ 3 loại controls: FRAME, LABEL & LISTBOX. Để thực hiện chúng, em để ý từng cách chúng hoạt động và lợi dụng những sự kiện của chúng, em đã dùng tiểu xảo và dùng code để chạy sự kiện, như thế, chúng chạy rất mượt mà!
Như thế, thứ nhất nó có TIÊU ĐỀ nhờ các LABEL, thứ hai các tiêu đề nó trượt dài trên FRAME và chạy theo SCROLL ngang, và đương nhiên với LISTBOX, ta có thể dễ dàng nạp cho nó bằng LIST (ARRAY) hoặc ROWSOURCE (RANGE); hơn nữa nó không kén UNICODE!
Tạo một cái FORM thủ công thì OK rồi, giờ tôi muốn thực hiện bằng code cho nhanh, nhưng bị vướng 1 vấn đề, nhờ các cao thủ giúp tôi.
Tôi muốn tạo một form với 1 frame, một listbox và một số label bên trong frame, cái vướng của tôi là tạo chúng quá dễ, nhưng làm sao mà tạo được các label và cái listbox nó nằm bên trong cái frame thì chẳng biết phải làm thế nào.
Code như thế này:
Mã:
Sub CreateNewUserForm()
On Error Resume Next
Dim UsfName As String
UsfName = "Nghia1"
With ThisWorkbook.VBProject
If .VBComponents(UsfName) Is Nothing Then
.VBComponents.Add(vbext_ct_MSForm).Name = UsfName
With .VBComponents(UsfName)
With .Designer.Controls.Add("Forms.Frame.1", "FrameList")
.SpecialEffect = fmSpecialEffectSunken
End With
'' With .Designer.Controls.Add("Forms.Label.1", "ColHeader")
'' .Caption = "Nghia"
'' .SpecialEffect = fmSpecialEffectRaised
'' .Top = 0
'' .Left = 0
'' End With
End With
Else
MsgBox "Trùng tên! Ban phai dat ten khac cho UserForm."
End If
End With
End Sub
tạo một cái form thủ công thì ok rồi, giờ tôi muốn thực hiện bằng code cho nhanh, nhưng bị vướng 1 vấn đề, nhờ các cao thủ giúp tôi.
Tôi muốn tạo một form với 1 frame, một listbox và một số label bên trong frame, cái vướng của tôi là tạo chúng quá dễ, nhưng làm sao mà tạo được các label và cái listbox nó nằm bên trong cái frame thì chẳng biết phải làm thế nào.
Code như thế này:
Mã:
sub createnewuserform()
on error resume next
dim usfname as string
usfname = "nghia1"
with thisworkbook.vbproject
if .vbcomponents(usfname) is nothing then
.vbcomponents.add(vbext_ct_msform).name = usfname
with .vbcomponents(usfname)
with .designer.controls.add("forms.frame.1", "framelist")
.specialeffect = fmspecialeffectsunken
end with
'' with .designer.controls.add("forms.label.1", "colheader")
'' .caption = "nghia"
'' .specialeffect = fmspecialeffectraised
'' .top = 0
'' .left = 0
'' end with
end with
else
msgbox "trùng tên! Ban phai dat ten khac cho userform."
end if
end with
end sub
Trời, lạy à! Cũng là Control 6.0 mà thằng em 2003 xài xong chẳng lỗi nào, qua 2010 xài tiếp, lưu lại, chuyển lại mở qua 2003 thì báo lỗi. Lạ lùng chưa?
Cho nên mình cứ vận dụng những gì Excel tích hợp sẳn mà làm thôi cho chắc ăn!
Cuối cùng nhiều người đa ra giống cái tác giả mà tác giả vẫn chưa đưa ra đáp án thì có thể quy về các tội như sau:
1. Mình không biết dùng Control gì đưa ra đố để biết
2. Muốn hỏi có những control nào làm được như thế nhưng lại ngại hỏi đàng đưa ra câu đố
Chiếu theo tội trên, tác giả tự tra để biết mức án nhé
ẹc ẹc.. nói vui thôi nhé
Thân.
Tạo một cái FORM thủ công thì OK rồi, giờ tôi muốn thực hiện bằng code cho nhanh, nhưng bị vướng 1 vấn đề, nhờ các cao thủ giúp tôi.
Tôi muốn tạo một form với 1 frame, một listbox và một số label bên trong frame, cái vướng của tôi là tạo chúng quá dễ, nhưng làm sao mà tạo được các label và cái listbox nó nằm bên trong cái frame thì chẳng biết phải làm thế nào.
Code như thế này:
Mã:
Sub CreateNewUserForm()
On Error Resume Next
Dim UsfName As String
UsfName = "Nghia1"
With ThisWorkbook.VBProject
If .VBComponents(UsfName) Is Nothing Then
.VBComponents.Add(vbext_ct_MSForm).Name = UsfName
With .VBComponents(UsfName)
With .Designer.Controls.Add("Forms.Frame.1", "FrameList")
.SpecialEffect = fmSpecialEffectSunken
End With
'' With .Designer.Controls.Add("Forms.Label.1", "ColHeader")
'' .Caption = "Nghia"
'' .SpecialEffect = fmSpecialEffectRaised
'' .Top = 0
'' .Left = 0
'' End With
End With
Else
MsgBox "Trùng tên! Ban phai dat ten khac cho UserForm."
End If
End With
End Sub
Sub CreateNewUserForm()
' On Error Resume Next
Dim UsfName As String, frame As Object
Dim form As Object
UsfName = "Nghia1"
Set form = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
If Not form Is Nothing Then
form.name = UsfName
With form.Designer.Add("Forms.Frame.1", "FrameList")
.Left = 20
.Top = 20
.SpecialEffect = fmSpecialEffectSunken
With .Controls.Add("Forms.Label.1", "ColHeader")
.Caption = "Nghia"
.Left = 0
.Top = 0
.SpecialEffect = fmSpecialEffectRaised
End With
End With
End If
End Sub
Cuối cùng nhiều người đa ra giống cái tác giả mà tác giả vẫn chưa đưa ra đáp án thì có thể quy về các tội như sau:
1. Mình không biết dùng Control gì đưa ra đố để biết
2. Muốn hỏi có những control nào làm được như thế nhưng lại ngại hỏi đàng đưa ra câu đố
Chiếu theo tội trên, tác giả tự tra để biết mức án nhé
ẹc ẹc.. nói vui thôi nhé
Thân.
Xin thưa với anh là cái tôi hỏi ở bài #29 là mới phát sinh thôi nhé, còn chuyện tôi "chế" ra cái controls kết hợp với 3 controls Frame, Label & ListBox hình ảnh, cũng như video đã nói lên tất cả rồi nhé!
Và vì thế em đã "chế" ra cái List mới từ 3 loại controls: FRAME, LABEL & LISTBOX. Để thực hiện chúng, em để ý từng cách chúng hoạt động và lợi dụng những sự kiện của chúng, em đã dùng tiểu xảo và dùng code để chạy sự kiện, như thế, chúng chạy rất mượt mà!
Sub CreateNewUserForm()
' On Error Resume Next
Dim UsfName As String, frame As Object
Dim form As Object
UsfName = "Nghia1"
Set form = ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_MSForm)
If Not form Is Nothing Then
form.name = UsfName
With form.Designer.Add("Forms.Frame.1", "FrameList")
.Left = 20
.Top = 20
.SpecialEffect = fmSpecialEffectSunken
With .Controls.Add("Forms.Label.1", "ColHeader")
.Caption = "Nghia"
.Left = 0
.Top = 0
.SpecialEffect = fmSpecialEffectRaised
End With
End With
End If
End Sub
OH, cám ơn Thầy rất nhiều! Em thề có trời làm chứng là hồi chiều em cũng đã làm như Thầy mà nó lại bị lỗi liên tục, cho nên em mới đưa bài lên hỏi. Hay tại em không Set nhỉ? Nhưng như thế cũng không đúng, Set hay With đều ổn mà ta? Mà rất lạ là đưa code Thầy vào thì chạy được!!!
OH, cám ơn Thầy rất nhiều! Em thề có trời làm chứng là hồi chiều em cũng đã làm như Thầy mà nó lại bị lỗi liên tục, cho nên em mới đưa bài lên hỏi. Hay tại em không Set nhỉ? Nhưng như thế cũng không đúng, Set hay With đều ổn mà ta? Mà rất lạ là đưa code Thầy vào thì chạy được!!!
With [B][COLOR=#ff0000].Designer[/COLOR][/B].Controls.Add("Forms.Label.1", "ColHeader")
Tôi có
Mã:
With .Controls.Add("Forms.Label.1", "ColHeader")
Cái chuyện "Set form =" là chuyện phụ. Nếu trong code của tôi bạn sửa
Mã:
With .Controls.Add("Forms.Label.1", "ColHeader")
thành
Mã:
With [B][COLOR=#ff0000].Designer[/COLOR][/B].Controls.Add("Forms.Label.1", "ColHeader")
thì bạn sẽ thấy sai. Bạn "tắt" On Error Resume Next đi thì bạn mới biết những chỗ sai trong code.
Mà tôi nghĩ là nếu code có nhiều "With ... End With" lồng nhau thì code sẽ rất "tối", đọc rất mệt và khi cần tìm lỗi trong một đoạn code dài sẽ rất mất thời gian.
Trời, lạy à! Cũng là Control 6.0 mà thằng em 2003 xài xong chẳng lỗi nào, qua 2010 xài tiếp, lưu lại, chuyển lại mở qua 2003 thì báo lỗi. Lạ lùng chưa?
Cho nên mình cứ vận dụng những gì Excel tích hợp sẳn mà làm thôi cho chắc ăn!
Thích màu mè thì ráng chịu thôi
Tôi thì khác, nghiên cứu chơi để xem như "mình cũng biết" chứ chả mấy đời xài! Với tôi: ĐUA XE TỐC ĐỘ + AN TOÀN VỀ NHÀ mới là thứ quan trọng nhất
Lúc trước cũng chính chú mày là người khen Listview hết lời, giờ "ngán" rồi sao?
Ẹc... Ẹc...
Thích màu mè thì ráng chịu thôi
Tôi thì khác, nghiên cứu chơi để xem như "mình cũng biết" chứ chả mấy đời xài! Với tôi: ĐUA XE TỐC ĐỘ + AN TOÀN VỀ NHÀ mới là thứ quan trọng nhất
Lúc trước cũng chính chú mày là người khen Listview hết lời, giờ "ngán" rồi sao?
Ẹc... Ẹc...
Ngán thì em chả ngán, chỉ có điều máy em được chú LDT trang bị Win & Off cao cấp quá mà máy ở CQ lại tệ quá, thậm chí Office 2000 vẫn còn dùng, nên em muốn nghiên cứu cái gì đó cho nó "hòa đồng dân tộc" mà thôi Thầy ơi!
Nếu máy nào cũng đồng bộ thì chả ngán thằng tây nào hết á!
Xin thưa với anh là cái tôi hỏi ở bài #29 là mới phát sinh thôi nhé, còn chuyện tôi "chế" ra cái controls kết hợp với 3 controls Frame, Label & ListBox hình ảnh, cũng như video đã nói lên tất cả rồi nhé!
Vậy là em cũng đã trả lời được 1/3 câu hỏi của anh rồi. Vì mới vào gia đình GPE nên để làm như của anh thì hơi khó. Em còn phải học hỏi các anh, chị và các thầy rất nhiều. Mong mọi người (cười) khi hướng dẫn giúp em, em sẽ cố gắng tìm hiểu để hỏi những câu ra "trò" và đầy ngớ ngẩn, thì mọi người cũng đừng khó chịu nhé. Hì hì...