Sử dụng MultiPage trong VBA Excel

Liên hệ QC

Blad01

Thành viên thường trực
Tham gia
6/10/07
Bài viết
344
Được thích
28
Kính mong các thầy, cô, anh chị trong diễn đàn giúp đỡ:
Em đang học về VBA. Em sử dụng MultiPage để làm form nhập dữ liệu gồm 22 page. Em chưa biết phải viết code ra sao để khi hiện Form thì Listbox page1 hiển thị thông tin từ range("A6:H dòng cuối) của sheets("TT_B1) và có thể thực hiện nhập dữ liệu của page1 vào sheets(TT_B1); tương tự, khi chuyển đổi qua lại giữa các page thì dữ liệu của các page đó sẽ hiển thị trên listbox và có thể nhập dữ liệu của page đang chọn. Ở trong file đính kèm em lấy ví dụ hai page. Thông tin của Page2 là sheets(TT_B2), listbox sẽ nhận danh sách từ range(A4:G dòng cuối)
Kính mong thầy, cô, anh chị giúp đỡ. Em đã tìm và đọc nhưng chưa hiểu cách thực hiện. Code trong form là em đang viết cho Page1
 

File đính kèm

  • TK_2020.rar
    41 KB · Đọc: 28
Code lỗi tùm lum, chả test được. Mò thử cái Multipage_Change() xem thế nào nhé!
 
Upvote 0
Code lỗi tùm lum, chả test được. Mò thử cái Multipage_Change() xem thế nào nhé!
Cảm ơn vu_tuan_manh_linh đã quan tâm. Em thử rồi nhưng chưa biết cách làm. Cơ bản là em muốn biết cách để khi chuyển đổi các page thì code của page nào sẽ hoạt động cho page đó. Ví dụ khi em bấm hiện form thì mặc định page1 hiển thị dữ liệu trên listbox và khi chuyển sang page2 thì dữ liệu của page2 sẽ hiển thị trên listbox. Tương tự với các Page còn lại. Em đã sử dụng sự kiện Multipage_Change() nhưng khi bấm chọn Page 2 thì dữ liệu không hiển thị, khi quay lại page 1 thì dữ liệu page1 cũng không hiển thị. hix
 
Upvote 0
Cảm ơn vu_tuan_manh_linh đã quan tâm. Em thử rồi nhưng chưa biết cách làm. Cơ bản là em muốn biết cách để khi chuyển đổi các page thì code của page nào sẽ hoạt động cho page đó. Ví dụ khi em bấm hiện form thì mặc định page1 hiển thị dữ liệu trên listbox và khi chuyển sang page2 thì dữ liệu của page2 sẽ hiển thị trên listbox. Tương tự với các Page còn lại. Em đã sử dụng sự kiện Multipage_Change() nhưng khi bấm chọn Page 2 thì dữ liệu không hiển thị, khi quay lại page 1 thì dữ liệu page1 cũng không hiển thị. hix
Kiểm tra page bằng câu lệnh MultiPage1.Value. VD Page1 thì .Value=0, Page2 thì .Value=1. Mỗi điều kiện cho 1 cái Elseif, trong cái Elseif đấy là các lệnh bạn muốn thực hiện cho page đó.
 
Upvote 0
Mong thầy cô, anh chị trong diễn đàn xem và sửa giúp đoạn code chuyển đổi giữa hai Page trong MultiPage mà sao nó cứ báo lỗi hoài. Em cho hiện Form và bấm chọn Page có tên Biểu 1, code chạy được nhưng chậm; tiếp theo bấm chọn Page2, code chạy được; rồi quay lại bấm chọn Page1 thì nó báo lỗi. Em không hiểu và không biết cách sửa, mọi người có cách nào giúp em với, làm sao để sửa lỗi và cho code chạy nhanh hơn.
Một vấn đề nữa, em muốn khi click chuột chọn trên listbox thì thông tin trên listbox sẽ truyền xuống các textbox, combobox phía dưới. Ví dụ chọn dòng 2 của listbox thì họ và tên đảng viên sẽ hiện vào textbox họ và tên,... em chưa biết sử dụng các câu lệnh của Multipage, mong mọi người giúp đỡ
Em cảm ơn nhiều.
 

File đính kèm

  • TK_2020.rar
    29.1 KB · Đọc: 20
Upvote 0
Tôi không tìm hiểu lỗi, chỉ sửa:
PHP:
Private Sub MultiPage1_Click(ByVal Index As Long)

Dim lr1 As Long
With lstDS
        .ColumnCount = 46
        .ColumnWidths = "1, 50, 150, 150, 180, 150, 140, 140"
        .BoundColumn = 1
        .TextColumn = 2
    If uf_Nhaplieu.MultiPage1.Value = 1 Then
        lr1 = sh1.Range("B" & Rows.Count).Row
        .RowSource = "A3:AT" & lr1
    ElseIf uf_Nhaplieu.MultiPage1.Value = 2 Then
        .RowSource = "DSB2"
    End If
End With
End Sub
 
Upvote 0
Select Case MultiPage1.Value
Case 0
' code cho page 0
Case 1
' code cho page 1
End Select
cảm ơn các anh đã giúp đỡ. Nhưng không hiểu sao em làm theo cả hai cách của anh PTM và vetmini mà kết quả khi chạy chuyển đổi giữa hai page listbox đều trả về danh sách củ sheet(“TT_B2) là sao. Em không hiểu nữa.
 
Upvote 0
cảm ơn các anh đã giúp đỡ. Nhưng không hiểu sao em làm theo cả hai cách của anh PTM và vetmini mà kết quả khi chạy chuyển đổi giữa hai page listbox đều trả về danh sách củ sheet(“TT_B2) là sao. Em không hiểu nữa.
Bài của tôi sửa thủ tục Multipage1_Click, Bài anh VetMini gợi ý cho thủ tục listbox lstDS_Click và trả lời câu 2 của bạn: "Một vấn đề nữa, em muốn khi click chuột chọn trên listbox thì thông tin trên listbox sẽ truyền xuống các textbox, combobox phía dưới"
 
Upvote 0
Bài của tôi sửa thủ tục Multipage1_Click, Bài anh VetMini gợi ý cho thủ tục listbox lstDS_Click và trả lời câu 2 của bạn: "Một vấn đề nữa, em muốn khi click chuột chọn trên listbox thì thông tin trên listbox sẽ truyền xuống các textbox, combobox phía dưới"
Cảm ơn anh em làm được rồi, nhưng anh xem lại chỗ này giúp em
Mã:
lr1 = sh1.Range("B" & Rows.Count).Row
        .RowSource = "A3:AT" & lr1
Có vấn đề là nếu em chuyển sheet trên trang tính xcel thì code trên mặc định nó nhận giá trị của trang tính được Activate thì phải. Em thử thay ""A3:AT" & lr1" bằng "DSB1" là tên vùng của sheet TT_B1 thì code báo lỗi. Có cách nào khắc phục không anh ?
 
Upvote 0
Sửa thành RowSource = "TT_B1!DBS1"
hoặc RowSource = "TT_B1!A3:AT" & lr1
Tức là phải có tên sheet
Nhưng sao sửa file: trong khi nút nhấn mở form nằm ở sheet 1 mà sheet 2 active được?
 
Upvote 0
Cảm ơn anh em làm được rồi, nhưng anh xem lại chỗ này giúp em
Mã:
lr1 = sh1.Range("B" & Rows.Count).Row
        .RowSource = "A3:AT" & lr1
Có vấn đề là nếu em chuyển sheet trên trang tính xcel thì code trên mặc định nó nhận giá trị của trang tính được Activate thì phải. Em thử thay ""A3:AT" & lr1" bằng "DSB1" là tên vùng của sheet TT_B1 thì code báo lỗi. Có cách nào khắc phục không anh ?
Ai giúp em với được không, tìm hiểu mà chưa biết khắc phục thế nào. Tại sao sử dụng RowSource cho cả hai điều kiện 1 và 2 lại báo lỗi "Could not set the RowSource property. Invalid property value"?
Bài đã được tự động gộp:

Sửa thành RowSource = "TT_B1!DBS1"
hoặc RowSource = "TT_B1!A3:AT" & lr1
Tức là phải có tên sheet
Nhưng sao sửa file: trong khi nút nhấn mở form nằm ở sheet 1 mà sheet 2 active được?
Em cũng không hiểu nữa. Vẫn bị lỗi như vậy anh ơi. Xem giúp em với
 

File đính kèm

  • TK_2020.rar
    79.6 KB · Đọc: 33
Upvote 0
Ai giúp em với được không, tìm hiểu mà chưa biết khắc phục thế nào. Tại sao sử dụng RowSource cho cả hai điều kiện 1 và 2 lại báo lỗi "Could not set the RowSource property. Invalid property value"?
Bài đã được tự động gộp:


Em cũng không hiểu nữa. Vẫn bị lỗi như vậy anh ơi
Tôi chạy thử không bị gì cả. À, tôi gợi ý "phải có tên sheet" thì Case 2 cũng phải sửa giống vậy. Bạn sửa chưa?
Còn 1 chuyện là bạn có đổi tên sheet không? Nếu có đổi thì phải sửa nữa:
RowSource = sh1.Name & "!DBS1"
hoặc RowSource = sh1.Name & "!A3:AT" & lr1

Lỗi invalid property value chính là chỗ name range ở sheet khác, đứng ở sheet này chạy mà không gọi đủ tên sheet

File mới đưa lên bài 13 lỗi tè le, nhưng trước khi lỗi gây tắt Excel vẫn chạy được những chỉnh sửa trên. (Edit bài và đưa file lên sau khi tôi trả lời)
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT
Back
Top Bottom