Trang 2 của 2 Đầu tiênĐầu tiên 12
Kết quả 11 đến 15 của 15

Chủ đề: Làm sao để tạo menu cùng cấp trong Excel 2007

  1. #11
    phale Guest
    Dạ cảm ơn thầy nhiều. Giờ thì em đã sáng và cv đã thông ra rồi. Chúc thầy và toàn thể các thành viên có 1 năm đầy sức khoẻ, và nhiều tài lộc. Em xin chân thành cảm ơn thầy

  2. #12
    Ngày tham gia
    Aug 2015
    Bài viết
    4
    [QUOTE="siwtom"]Tôi không muốn tải tập tin của bạn - với tập tin như thế mà tôi ngồi tạo cho bạn XLM hoàn chỉnh thì có mà điên.

    Khi bạn làm việc với Custom UI Editor thì bạn thấy nó tạo ra một cái "sườn" những Macro cho bạn.
    Bạn thấy là nó tự thêm vào một tham số control As IRibbonControl. Có nghĩa là gì?
    Khi bạn Click Button thì Macro gán cho Button đó sẽ được gọi để thực thi. Và lúc đó thì đối tượng button đó được truyền vào Macro ở dạng tham số control. Vậy thì nếu trong code mà bạn viết bạn đọc ra control.id thì nó chính là cái id mà bạn gán cho button trong XLM. Nếu trong XLM bạn gán cho button thuộc tính Tag thì khi đọc control.tag bạn sẽ có giá trị tag mà bạn gán cho button trong XLM.

    vd. Trong XLM

    Mã:
    Sub OperationMacro(control As IRibbonControl)
        OPERATION_MANAGEMENT_GARMENT_CALCULATION(Arr1(control.tag))
    End Sub
    Tương tự cho các nhóm khác (gọi cùng 1 sub nhưng thông số khác nhau)</div>

    </div>
    </div>
    </div>
    dạ thưa thầy vấn đề này em đã làm được rõ ràng và ok lắm, em muốn hỏi thêm về vấn đề này nữa( vấn đề này vẫn chưa sảy ra nhưng em muốn chặn trước nếu sau này có sảy ra thì mình cũng biết làm)
    nếu như bài trước thì chỉ khác nhau 1 tham số. mình chỉ truyền 1 thẻ tag=1...
    còn nếu như gặp trường hợp các hàm khác nhau 2 hoặc 3, hoặc 4 tham số thì mình truyền như thế nào? em xin chân thành cảm ơn thầy

  3. #13
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi phihndhsp
    dạ thưa thầy vấn đề này em đã làm được rõ ràng và ok lắm, em muốn hỏi thêm về vấn đề này nữa( vấn đề này vẫn chưa sảy ra nhưng em muốn chặn trước nếu sau này có sảy ra thì mình cũng biết làm)
    nếu như bài trước thì chỉ khác nhau 1 tham số. mình chỉ truyền 1 thẻ tag=1...
    còn nếu như gặp trường hợp các hàm khác nhau 2 hoặc 3, hoặc 4 tham số thì mình truyền như thế nào? em xin chân thành cảm ơn thầy
    Nếu bạn suy nghĩ thì tôi chắc là bạn cũng làm được.

    Vì nói chung chung quá nên cũng khó chỉ hướng cụ thể cho bạn.
    Những tham số đó là gì? Chắc không chỉ là số tự nhiên. Cũng có thể là chuỗi.

    Vd. có 4 tham số (n tham số cũng được).

    1. Nếu tất cả các macro đều gọi chung một sub/function chỉ có điều chọn button này thì tập 4 tham số là thế này còn nếu chọn button khác thì lại tập 4 tham số khác ... Nếu thế thì gán cho chúng một macro duy nhất vd. DoSomething

    2. Về tag thì tùy bạn bố trí các giá trị tham số ấy ở đâu. Giả sử bạn có sub Sum2Cells(rng1 as Range, rng2 as Range) mà DoSomething sẽ gọi. Nếu thế thì bạn có thể sửa thành (chỉ là vd.) sub Sum2Cells(rowcell1 As Long, colcell1 As Long, rowcell2 As Long, colcell2 As Long). Tức bạn cần 4 tham số dạng Long.

    Lúc đó thì bạn hãy thử (tôi chưa thử)


    Mã:
    <button id="ButtonOperation1" label="..." onAction="DoSomething" tag="3_3_7_11"
    ...
    <button id="ButtonOperation100" label="..." onAction="DoSomething" tag="1_4_9_33"
    Tôi không thử nhưng tin là ký tự "_" được phép. Nếu không thì dùng ký tự khác. Sau đó đọc ra control.tag rồi dùng Split tách thành 3, 3, 7, 11 hoặc 1, 4, 9, 33 rồi gọi Sum2Cells(Arr(0), Arr(1), Arr(2), Arr(3)). Thế thôi.

    Những số 3, 3, 7, 11 cũng có thể là chỉ số trong một mảng nào đấy, vd. như mảng Arr1 ở bài trước, mà ta sẽ nhẩy tới đó để lấy tham số.

    Tag thực chất là 1 STRING. Bạn hãy biến tấu cái String đó thành dạng mà bạn có thể "tuồn" tham số vào

    vd. nếu dùng phiên bản 1 của sub Sum2Cells thì

    Mã:
    <button id="ButtonOperation1" label="..." onAction="DoSomething" tag="C3_D11"
    ...
    <button id="ButtonOperation100" label="..." onAction="DoSomething" tag="A1_F33"
    đọc control.tag và lọc ra các chuỗi "C3", "D11", "A1", "F33" rồi biến chúng thành Range C3, D11, A1, F33. Thế thôi

    Láu cá một chút đi bạn.

  4. #14
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    dạ để em thử em nghỉ là được vì có hàm Split này và cách gọi tag="3_3_7_11" như thế này. em xin cảm ơn thầy nhiều

  5. #15
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi siwtom
    Nếu bạn suy nghĩ thì tôi chắc là bạn cũng làm được.

    Vì nói chung chung quá nên cũng khó chỉ hướng cụ thể cho bạn.
    Những tham số đó là gì? Chắc không chỉ là số tự nhiên. Cũng có thể là chuỗi.

    Vd. có 4 tham số (n tham số cũng được).

    1. Nếu tất cả các macro đều gọi chung một sub/function chỉ có điều chọn button này thì tập 4 tham số là thế này còn nếu chọn button khác thì lại tập 4 tham số khác ... Nếu thế thì gán cho chúng một macro duy nhất vd. DoSomething

    2. Về tag thì tùy bạn bố trí các giá trị tham số ấy ở đâu. Giả sử bạn có sub Sum2Cells(rng1 as Range, rng2 as Range) mà DoSomething sẽ gọi. Nếu thế thì bạn có thể sửa thành (chỉ là vd.) sub Sum2Cells(rowcell1 As Long, colcell1 As Long, rowcell2 As Long, colcell2 As Long). Tức bạn cần 4 tham số dạng Long.

    Lúc đó thì bạn hãy thử (tôi chưa thử)


    <div class="bbcode_container">
    <div class="bbcode_description">Code:
    </div>
    </div>
    Dạ em đã làm được cảm ơn thầy nhiều vì đã khai sáng sử dụng Split vấn đề này của em xem như đã đạt đúng mọi yêu cầu trong công việc. và kết thúc tại đây, em xin cảm ơn thầy nhiều

Trang 2 của 2 Đầu tiênĐầu tiên 12

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •