Tự tạo File sưu tầm bài hay của GPE

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

sealand

Thành viên gạo cội
Tham gia
16/5/08
Bài viết
4,883
Được thích
7,688
Giới tính
Nam
Nghề nghiệp
Kế Toán
Thường mình gặp những bài hay trên diễn đàn là mình chép về để đâu đó khi cần tìm không ra, trong khi không phải lúc nào cũng nên mạng được. Trong khi tham gia thảo luận bài với các bạn có liên quan vấn đề này, mình chợt nảy ra ý định tại sao không tao cho mình mình 1 file sưu tầm nhỉ.
Vậy la suốt tối đến giờ sản phẩm sơ bộ hoàn thành mình load lên các bạn tham khảo nhé. Trong file còn nhiều lỗi và hạn chế. Thậm chí cả hàm Filter cực phù hợp cho nó mình cũng chưa đưa vào. Hướng dẫn mình ghi cụ thể trong file rồi.
Đối với những bài dài thanh cuộn chưa hiện ra, bạn đặt con trỏ vào rồi dùng phím mũi tên lượt xuống dưới là thanh cuộn hiện ra.
 

File đính kèm

Lần chỉnh sửa cuối:
Sao mình bấm vào tìm theo chủ đề lại bị lỗi. Nếu được bạn nên thêm tìm nội dung trong file nữa.

Bạn thêm giùm câu khai báo biến
Dim i, j as Long vào đầu Sub lỗi với.

Cám ơn các bạn đã test lỗi giùm. Mình đã load lại file rồi
 
Upvote 0
Ý mình là vậy đó, nhưng không hiểu sao mình mở không nên được. Mình kiểm tra code và Image vẫn có.
Mình phải xem lại xem lý do ra sao. Cám ơn domfootwear nhé.
Em tìm ra nguyên nhân là đoạn code trên chỉ chạy được trên win Vista còn XP thì không chạy được +-+-+-+
 
Upvote 0
anh có thể làm thêm một thanh cuộn scroll bar

To sealand
Anh có thể làm thêm 1 thanh cuộn bên phần dử liệu mình đọc được không vì dử liệu nhiều mà không có thanh cuộn cũng hơn khó đọc. Và mình có thể làm thêm 3 nút option nữa tìm kiếm theo theo ngày, tháng, năm được không anh vì em cũng đang có làm form để tìm kiếm ngày tháng năm mà không biết làm sao nhân dịp này mong anh giúp đỡ.Thanks+-+-+-++-+-+-++-+-+-++-+-+-+ . Nhân đây mình cũng xin gửi các bạn nào yêu thích bóng đá file world cup 2010 ơ Nam Phi mình load từ trang excely.com
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em tìm ra nguyên nhân là đoạn code trên chỉ chạy được trên win Vista còn XP thì không chạy được +-+-+-+
Vậy có thể sửa để đoạn code này có thể chạy được trên Win XP không? Chức năng hay như vậy mà đa số người dùng không được chiêm ngưỡng thì uổng quá.
Mình và rất nhiều người khác đang mong chờ lời giải của domfootwear đó.
Xin cảm ơn rất nhiều!
 
Upvote 0
Vậy có thể sửa để đoạn code này có thể chạy được trên Win XP không? Chức năng hay như vậy mà đa số người dùng không được chiêm ngưỡng thì uổng quá.
Mình và rất nhiều người khác đang mong chờ lời giải của domfootwear đó.
Xin cảm ơn rất nhiều!

Mình đã sửa code theo ý bạn, tham khảo ở file đính kèm nhé.

P/S: nó chạy cả ở Win XP và Vista. Lưu ý là phải đóng hết các file Excel đi rồi mới mở file này nhé.
 

File đính kèm

Upvote 0
Đạt đấy a Dom à, việc chuyển đổi giữa các Window sẽ đơn giản hơn nhiều.
 
Upvote 0
Đạt đấy a Dom à, việc chuyển đổi giữa các Window sẽ đơn giản hơn nhiều.
Còn 1 vấn đề nữa theo em nghĩ mình cần phải cải tiến là thêm cái menu (Click Phải chuột) vào trong Textbox để khi copy, cắt, dán code mình rê chuột quét khối rồi sẵn tay right click menu hiện ra chọn copy, cut, dán luôn mà khỏi cần nhấn dùng bàn phím.
 
Lần chỉnh sửa cuối:
Upvote 0
To minhthien321:
Bất cứ 1 Object nào cũng được xác định và phân định phần trên Form theo các thông số:

-Top.
-Left.
-Height.
-Width.
Ta lấy thông số cực đại so với thông số khi Zoom của Form để điều chỉnh kích thước cho phù hợp và cân đối. Toàn bộ code này đặt vào Sub UserForm_Resize(). Như vậy khi Form to nhỏ thì các TextBox, List, Combo cũng to nhỏ theo, nhưng ta cố định mức nhỏ nhất là baonhiêu chứ không cho Zoom quá mức. Đây là cách mình thích , chứ mình không thích cách Zoom của Window là chỉ hy sinh khoảng nhìn còn các đối tượng vẫn giữ nguyên. Thậm chí, để thực sự thì còn phải chỉnh cả cỡ của Font nũa. Nói chung là cũng phức tạp.

Cái này theo em nghĩ phải đụng tới Class thôi anh à, để em tìm thử.
 
Upvote 0
Còn 1 vấn đề nữa theo em nghĩ mình cần phải cải tiến là thêm cái menu (Click Phải chuột) vào trong Textbox để khi copy, cắt, dán code mình rê chuột quét khối rồi sẵn tay right click menu hiện ra chọn copy, cut, dán luôn mà khỏi cần nhấn dùng bàn phím.

1). Class module:
Đây là class (CTextBox_ContextMenu) của menu Cut, Copy và Paste:

Mã:
Option Explicit

Private Const mEDIT_CONTEXTMENU_NAME = "ajpiEditContextMenu"
Private Const mCUT_TAG = "CUT"
Private Const mCOPY_TAG = "COPY"
Private Const mPASTE_TAG = "PASTE"

Private m_cbrContextMenu As CommandBar
Private WithEvents m_txtTBox As MSForms.TextBox
Private WithEvents m_cbtCut As CommandBarButton
Private WithEvents m_cbtCopy As CommandBarButton
Private WithEvents m_cbtPaste As CommandBarButton
Private m_objDataObject As DataObject
Private m_objParent As Object



Private Function m_CreateEditContextMenu() As CommandBar
'
' Build Context menu controls.
'
    Dim cbrTemp As CommandBar
    Const CUT_MENUID = 21
    Const COPY_MENUID = 19
    Const PASTE_MENUID = 22
    
    Set cbrTemp = Application.CommandBars.Add(mEDIT_CONTEXTMENU_NAME, Position:=msoBarPopup)
    With cbrTemp
        With .Controls.Add(msoControlButton)
            .Caption = "Cu&t"
            .FaceId = CUT_MENUID
            .Tag = mCUT_TAG
        End With
        With .Controls.Add(msoControlButton)
            .Caption = "&Copy"
            .FaceId = COPY_MENUID
            .Tag = mCOPY_TAG
        End With
        With .Controls.Add(msoControlButton)
            .Caption = "&Paste"
            .FaceId = PASTE_MENUID
            .Tag = mPASTE_TAG
        End With
    End With
    
    Set m_CreateEditContextMenu = cbrTemp

End Function
Private Sub m_DestroyEditContextMenu()
    On Error Resume Next
    Application.CommandBars(mEDIT_CONTEXTMENU_NAME).Delete
    Exit Sub
End Sub
Private Function m_GetEditContextMenu() As CommandBar

    On Error Resume Next
    
    Set m_GetEditContextMenu = Application.CommandBars(mEDIT_CONTEXTMENU_NAME)
    If m_GetEditContextMenu Is Nothing Then
        Set m_GetEditContextMenu = m_CreateEditContextMenu
    End If
    
    Exit Function
    
End Function

Private Function m_ActiveTextbox() As Boolean
'
' Make sure this instance is connected to active control
' May need to drill down through container controls to
' reach ActiveControl object
'
    Dim objCtl As Object
    On Error GoTo ErrActivetextbox
    Set objCtl = m_objParent.ActiveControl
    Do While UCase(TypeName(objCtl)) <> "TEXTBOX"
        If UCase(TypeName(objCtl)) = "MULTIPAGE" Then
            Set objCtl = objCtl.Pages(objCtl.Value).ActiveControl
        Else
            Set objCtl = objCtl.ActiveControl
        End If
    Loop
    m_ActiveTextbox = (StrComp(objCtl.Name, m_txtTBox.Name, vbTextCompare) = 0)
    
ErrActivetextbox:
    Exit Function
    
End Function

Public Property Set Parent(RHS As Object)
    Set m_objParent = RHS
End Property

Private Sub m_UseMenu()
    
    Dim lngIndex As Long
    
    For lngIndex = 1 To m_cbrContextMenu.Controls.Count
        Select Case m_cbrContextMenu.Controls(lngIndex).Tag
        Case mCUT_TAG
            Set m_cbtCut = m_cbrContextMenu.Controls(lngIndex)
        Case mCOPY_TAG
            Set m_cbtCopy = m_cbrContextMenu.Controls(lngIndex)
        Case mPASTE_TAG
            Set m_cbtPaste = m_cbrContextMenu.Controls(lngIndex)
        End Select
    Next
    
End Sub
Public Property Set TBox(RHS As MSForms.TextBox)
    Set m_txtTBox = RHS
End Property


Private Sub Class_Initialize()
    
    Set m_objDataObject = New DataObject
    Set m_cbrContextMenu = m_GetEditContextMenu
    
    If Not m_cbrContextMenu Is Nothing Then
        m_UseMenu
    End If
    
End Sub

Private Sub Class_Terminate()

    Set m_objDataObject = Nothing
    m_DestroyEditContextMenu
    
End Sub


Private Sub m_cbtCopy_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)

    ' check active textbox is this instance of CTextBox_ContextMenu
    If m_ActiveTextbox() Then
        With m_objDataObject
            .Clear
            .SetText m_txtTBox.SelText
            .PutInClipboard
        End With
    End If
    
End Sub

Private Sub m_cbtCut_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)

    ' check active textbox is this instance of CTextBox_ContextMenu
    If m_ActiveTextbox() Then
        With m_objDataObject
            .Clear
            .SetText m_txtTBox.SelText
            .PutInClipboard
            m_txtTBox.SelText = vbNullString
        End With
    End If
    
End Sub


Private Sub m_cbtPaste_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    
    ' check active textbox is this instance of CTextBox_ContextMenu
    On Error GoTo ErrPaste
    
    If m_ActiveTextbox() Then
        With m_objDataObject
            .GetFromClipboard
            m_txtTBox.SelText = .GetText
        End With
    End If
    
ErrPaste:
    Exit Sub
End Sub


Private Sub m_txtTBox_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    
    If Button = 2 Then
        ' right click
        m_cbrContextMenu.ShowPopup
    End If

End Sub
2.) Userform

Mã:
Option Explicit
Private m_colContextMenus As Collection
Private Sub UserForm_Initialize()
Dim clsContextMenu As CTextBox_ContextMenu

    Set m_colContextMenus = New Collection

    Set clsContextMenu = New CTextBox_ContextMenu
    With clsContextMenu
        Set .TBox = [COLOR=Green][B]UserForm1.TextBox1[/B][/COLOR] ' Ten Userform va Ten Textbox
        Set .Parent = Me
    End With
    m_colContextMenus.Add clsContextMenu, CStr(m_colContextMenus.Count + 1)
    
End Sub
Như vậy muốn cắt, copy hoặc dán nó thuận tiện hơn nhiều.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Sao bạn không bỏ pass di để anh em tham khảo nhỉ :-D
 
Upvote 0
PHP:
Sub napTD()
Dim i, j As Long
If Me.ListBox1.ListCount > 0 Then Me.ListBox1.Clear
j = 0
For i = 2 To Dg
If DT.Cells(i, 1) = Me.ComboBox1 Then
Me.ListBox1.AddItem Str(i)
Me.ListBox1.List(j, 1) = DT.Cells(i, 2)
j = j + 1
End If
Next
If Me.ListBox1.ListCount > 0 Then Me.ListBox1.ListIndex = 0
End Sub

Code bị lỗi tại Sub này bạn ơi! Nó báo lỗi tại Str(i). Nó báo lỗi: Can't find project or library.
Mình vào Refrences... bỏ Missing... mới hết lỗi, không biết bị lỗi gì.
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom