Nhờ hướng dẫn lấy giá trị của Editbox trong Ribbon Custom

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

minhmee2610

Thành viên mới
Tham gia
18/9/20
Bài viết
26
Được thích
6
Em chào các anh chị.
Em đang gặp khó khăn khi lấy giá trị của Editbox trong thanh công cụ tạo thêm. Hiện tại em không tìm ra được cách nào để lấy các giá trị của các ô đó khi nhập vào để đưa vào các Sub. Rất mong các anh chị hướng dẫn em phần này.
Em có để code cho anh chị không thích tải file có chứa Macro về.
--
HTML:
<!--RibbonX Visual Designer 1.94 for Microsoft Excel 16.0. XML Code produced on 2023/05/30-->
<customUI  xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
    <ribbon >
        <tabs >
            <tab
                id="tabtool"
                label="Tool">
                <group
                    id="grtool"
                    imageMso="PivotSwitchRowColumn"
                    label="Tool">
                    <button
                        enabled="true"
                        id="btnlogin"
                        imageMso="AcceptInvitation"
                        label="Login"
                        showImage="true"
                        showLabel="false"
                        size="large"
                        onAction="btnlogin_onAction"/>
                    <button
                        enabled="true"
                        id="btninbound"
                        imageMso="RmsNavigationBarHome"
                        label="Inbound"
                        showImage="true"
                        showLabel="false"
                        size="large"
                        onAction="btninbound_onAction"/>
                    <editBox
                        enabled="true"
                        id="txtboxfrom"
                        imageMso="AccessListEvents"
                        label="From:"
                        onChange="txtboxfrom_Change"
                        getText="txtboxfrom_getText"/>
                        
                    <editBox
                        enabled="true"
                        id="txtboxto"
                        imageMso="AccessListEvents"
                        label="To:"
                        onChange="txtboxto_Change"
                        getText="txtboxto_getText"/>
                        
                </group >
            </tab >
        </tabs >
    </ribbon >
</customUI >

Các Sub:
Mã:
Public Sub txtboxfrom_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
End Sub
Public Sub txtboxto_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
End Sub
 

File đính kèm

  • Ribbon.xlsm
    14.6 KB · Đọc: 11
Em chào các anh chị.
Em đang gặp khó khăn khi lấy giá trị của Editbox trong thanh công cụ tạo thêm. Hiện tại em không tìm ra được cách nào để lấy các giá trị của các ô đó khi nhập vào để đưa vào các Sub. Rất mong các anh chị hướng dẫn em phần này.
Em có để code cho anh chị không thích tải file có chứa Macro về.
--
HTML:
<!--RibbonX Visual Designer 1.94 for Microsoft Excel 16.0. XML Code produced on 2023/05/30-->
<customUI  xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
    <ribbon >
        <tabs >
            <tab
                id="tabtool"
                label="Tool">
                <group
                    id="grtool"
                    imageMso="PivotSwitchRowColumn"
                    label="Tool">
                    <button
                        enabled="true"
                        id="btnlogin"
                        imageMso="AcceptInvitation"
                        label="Login"
                        showImage="true"
                        showLabel="false"
                        size="large"
                        onAction="btnlogin_onAction"/>
                    <button
                        enabled="true"
                        id="btninbound"
                        imageMso="RmsNavigationBarHome"
                        label="Inbound"
                        showImage="true"
                        showLabel="false"
                        size="large"
                        onAction="btninbound_onAction"/>
                    <editBox
                        enabled="true"
                        id="txtboxfrom"
                        imageMso="AccessListEvents"
                        label="From:"
                        onChange="txtboxfrom_Change"
                        getText="txtboxfrom_getText"/>
                       
                    <editBox
                        enabled="true"
                        id="txtboxto"
                        imageMso="AccessListEvents"
                        label="To:"
                        onChange="txtboxto_Change"
                        getText="txtboxto_getText"/>
                       
                </group >
            </tab >
        </tabs >
    </ribbon >
</customUI >

Các Sub:
Mã:
Public Sub txtboxfrom_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
End Sub
Public Sub txtboxto_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
End Sub
Thử code này.
Mã:
Private Tu As String, Den As String
Public Sub txtboxfrom_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
    Tu = text
End Sub
Public Sub txtboxto_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
    Den = text
End Sub
Sub txtboxto_Change(control As IRibbonControl, text As String)
    Den = text
End Sub
Sub txtboxfrom_Change(control As IRibbonControl, text As String)
    Tu = text
End Sub
Public Sub XemGT()
    MsgBox Tu
    MsgBox Den
End Sub
 
Upvote 0
Thử code này.
Mã:
Private Tu As String, Den As String
Public Sub txtboxfrom_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
    Tu = text
End Sub
Public Sub txtboxto_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
    Den = text
End Sub
Sub txtboxto_Change(control As IRibbonControl, text As String)
    Den = text
End Sub
Sub txtboxfrom_Change(control As IRibbonControl, text As String)
    Tu = text
End Sub
Public Sub XemGT()
    MsgBox Tu
    MsgBox Den
End Sub
cảm ơn anh đã hỗ trợ nhưng nếu thay đổi giá trị trong ô Editbox thì giá trị Tu và Den trở thành rỗng ""
 
Upvote 0
Em chào các anh chị.
Em đang gặp khó khăn khi lấy giá trị của Editbox trong thanh công cụ tạo thêm. Hiện tại em không tìm ra được cách nào để lấy các giá trị của các ô đó khi nhập vào để đưa vào các Sub. Rất mong các anh chị hướng dẫn em phần này.
Em có để code cho anh chị không thích tải file có chứa Macro về.
--
HTML:
<!--RibbonX Visual Designer 1.94 for Microsoft Excel 16.0. XML Code produced on 2023/05/30-->
<customUI  xmlns="http://schemas.microsoft.com/office/2006/01/customui" >
    <ribbon >
        <tabs >
            <tab
                id="tabtool"
                label="Tool">
                <group
                    id="grtool"
                    imageMso="PivotSwitchRowColumn"
                    label="Tool">
                    <button
                        enabled="true"
                        id="btnlogin"
                        imageMso="AcceptInvitation"
                        label="Login"
                        showImage="true"
                        showLabel="false"
                        size="large"
                        onAction="btnlogin_onAction"/>
                    <button
                        enabled="true"
                        id="btninbound"
                        imageMso="RmsNavigationBarHome"
                        label="Inbound"
                        showImage="true"
                        showLabel="false"
                        size="large"
                        onAction="btninbound_onAction"/>
                    <editBox
                        enabled="true"
                        id="txtboxfrom"
                        imageMso="AccessListEvents"
                        label="From:"
                        onChange="txtboxfrom_Change"
                        getText="txtboxfrom_getText"/>
                       
                    <editBox
                        enabled="true"
                        id="txtboxto"
                        imageMso="AccessListEvents"
                        label="To:"
                        onChange="txtboxto_Change"
                        getText="txtboxto_getText"/>
                       
                </group >
            </tab >
        </tabs >
    </ribbon >
</customUI >

Các Sub:
Mã:
Public Sub txtboxfrom_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
End Sub
Public Sub txtboxto_getText(control As IRibbonControl, ByRef text)
    text = Format(Date, "dd.mm.yyyy")
End Sub
Tôi cũng vừa mới tìm cách trên mạng xong. Bạn khai báo 1 biến toàn cục MyDate rồi dùng biến đó lấy đối số text trong callback OnChange của Editbox
Sub Gettext_OnChange(ctrl as IRibbonControl, ByRef text)
MyDate = text
End Sub

Bạn sẽ lấy được giá trị hiện có trên Editbox, bất kể là có sẵn hay vừa nhập xong
 
Upvote 0
Làm việc với ribbon phải biết điều này, copy code xong lưu lại, dóng file và mở lại.
Cảm ơn anh. Hình như ổn hơn chút rồi.
Tôi cũng vừa mới tìm cách trên mạng xong. Bạn khai báo 1 biến toàn cục MyDate rồi dùng biến đó lấy đối số text trong callback OnChange của Editbox
Sub Gettext_OnChange(ctrl as IRibbonControl, ByRef text)
MyDate = text
End Sub

Bạn sẽ lấy được giá trị hiện có trên Editbox, bất kể là có sẵn hay vừa nhập xong
Cảm ơn anh
--
Hai anh cho em hỏi cái sự kiện OnChange này hình như chỉ hoạt động sau khi em nhập ngày, rồi bấm Enter, nếu nhập xong mà không bấm Enter thì không được luôn. Em còn ngu muội chỗ này quá.
 
Upvote 0
Cứ thử sẽ biết ngay thôi, thử món này có mất gì đâu mà không thử lai phải đi hỏi nhỉ.
Không phải em không thử, mà em thử rồi nhưng không biết cái em thấy có đúng là như vậy không nên mới hỏi hai anh là "hình như" đấy.
Em thấy phải bấm Enter thì sự kiện OnChange mới nhận giá trị mới. Anh có cách nào khi mình sửa xong không cần phải mất thêm thao tác bấm Enter được không anh? Giá mà nó dễ sử dụng như Userform thì hay biết mấy @@
 
Upvote 0
Không phải em không thử, mà em thử rồi nhưng không biết cái em thấy có đúng là như vậy không nên mới hỏi hai anh là "hình như" đấy.
Em thấy phải bấm Enter thì sự kiện OnChange mới nhận giá trị mới. Anh có cách nào khi mình sửa xong không cần phải mất thêm thao tác bấm Enter được không anh? Giá mà nó dễ sử dụng như Userform thì hay biết mấy @@
Bạn thử kiểu gì mà lạ vậy nhỉ? Tôi chỉ cần gõ hoặc xóa ký tự, không Enter cũng chẳng cần phải rời con trỏ khỏi Editbox thì đã thấy giá trị mới được cập nhật vào biến rồi
 
Upvote 0
Sự kiện onChange chỉ xảy ra khi mình thay đổi giá trị của EditBox (Khi thay đổi xong, còn lúc đang gõ nó không xảy ra sự kiện này), vậy thay đổi giá trị khi nào mới xong (khi đó có sẽ chạy sự kiện)? Khi mình có thay đổi giá trị và kết thúc nhập liệu? vậy khi nào mới kết thúc nhập liệu? khi EditBox mất Focus.
Vậy khi bạn đang nhập liệu trên EditBox thì sự kiện không xảy ra, nhưng khi bạn nhập xong (kết thúc bằng Enter, nhấn phím Tab, nháy chuột vào một ô trên trang tính, nói chung là EditBox mất Focus...) thì sự kiện này sẽ xảy ra.
 
Upvote 0
Sự kiện onChange chỉ xảy ra khi mình thay đổi giá trị của EditBox (Khi thay đổi xong, còn lúc đang gõ nó không xảy ra sự kiện này), vậy thay đổi giá trị khi nào mới xong (khi đó có sẽ chạy sự kiện)? Khi mình có thay đổi giá trị và kết thúc nhập liệu? vậy khi nào mới kết thúc nhập liệu? khi EditBox mất Focus.
Vậy khi bạn đang nhập liệu trên EditBox thì sự kiện không xảy ra, nhưng khi bạn nhập xong (kết thúc bằng Enter, nhấn phím Tab, nháy chuột vào một ô trên trang tính, nói chung là EditBox mất Focus...) thì sự kiện này sẽ xảy ra.
1692952173818.png


Cho cháu hỏi cái này cái, là cài textbox from dùng để nhập ngày tháng, thế nếu người dùng nhập sai ngày tháng, hoặc nhập 1 chuỗi "abc" nào đó, thì sẽ code như nào để excel thông báo tình trạng nhập sai, và yêu cầu nhập lại? hoặc bất cứ 1 cách nào có thể dùng để giải quyết vấn đề nhập sai? cháu cảm ơn bác @giaiphap .
 
Upvote 0
View attachment 294237


Cho cháu hỏi cái này cái, là cài textbox from dùng để nhập ngày tháng, thế nếu người dùng nhập sai ngày tháng, hoặc nhập 1 chuỗi "abc" nào đó, thì sẽ code như nào để excel thông báo tình trạng nhập sai, và yêu cầu nhập lại? hoặc bất cứ 1 cách nào có thể dùng để giải quyết vấn đề nhập sai? cháu cảm ơn bác @giaiphap .
Cái này bác hỏi tui thấy nó hơi kỳ kỳ, đáng lẽ bác phải hỏi chủ topic này xử lý ra sao chứ.
Đi đường vòng một chút.
Mã:
Function CheckDate(ByVal s As String) As Boolean
    Dim formatDate As Date
    s = Replace(s, ".", "/")
    On Error GoTo Loi
    formatDate = CDate(s)
    CheckDate = True
    Exit Function
Loi:
    CheckDate = False
End Function
hoặc
Mã:
If VBA.IsDate(Replace(Tu, ".", "/")) Then
 
Upvote 0
Web KT

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

Back
Top Bottom