Viết code để chuyển 1 sheet theo ý thích đến trước 1 sheet mà ta chọn

Liên hệ QC

nhunguyet0103

Thành viên chính thức
Tham gia
7/2/09
Bài viết
56
Được thích
6
Ví dụ: em có 1 file excel có các sheet với tên là: 6a, 6B, 6C, 6D. Em muốn tạo 1 Form có dạng:

Để khi gõ 1 tên lớp bất kỳ vào ô chọn lớp cần chuyển và gõ tên 1 lớp khác vào ô Chuyển đến trước lớp sau đó bấm nút Thực hiện thì lớp cần chuyển sẽ chuyển đến phía trước lớp ta đã chọn. Vậy muốn làm được như thế ta phải viết code cho nút: Thực hiện như thế nào ạ! Thanks!!!
 
Ví dụ: em có 1 file excel có các sheet với tên là: 6a, 6B, 6C, 6D. Em muốn tạo 1 Form có dạng:

Để khi gõ 1 tên lớp bất kỳ vào ô chọn lớp cần chuyển và gõ tên 1 lớp khác vào ô Chuyển đến trước lớp sau đó bấm nút Thực hiện thì lớp cần chuyển sẽ chuyển đến phía trước lớp ta đã chọn. Vậy muốn làm được như thế ta phải viết code cho nút: Thực hiện như thế nào ạ! Thanks!!!
1. Tạo các đối tượng:
- ComboBox1: Lớp cần chuyển
- ComboBox2: Chuyển đến trước lớp này
- CommandButton1: Nút Thực hiện
2. Đưa danh sách các lớp vào ComboBox:
PHP:
Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To Sheets.Count
        ComboBox1.AddItem Sheets(i).Name
        ComboBox2.AddItem Sheets(i).Name
    Next
End Sub
3. Code để di chuyển sheet:
PHP:
Private Sub CommandButton1_Click()
    If ComboBox1 = "" Or ComboBox2 = "" Then
        MsgBox "Chua chon du thong tin"
    Else
        Sheets(ComboBox1.Value).Move Before:=Sheets(ComboBox2.Value)
    End If
End Sub
Bạn tham khảo trong file nhé.
 

File đính kèm

  • Di chuyen sheet.rar
    15.1 KB · Đọc: 46
Em cảm ơn anh nhiều ...nhiều...!!! Vậy mà trước đây em mò mẫm mãi chẳng được.
 
2. Đưa danh sách các lớp vào ComboBox:
PHP:
Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To Sheets.Count
        ComboBox1.AddItem Sheets(i).Name
        ComboBox2.AddItem Sheets(i).Name
    Next
End Sub
anh cho em hỏi thêm với!
Trong Code: Đưa danh sách các lớp vào ComboBox Ví dụ em muốn lớp 6c không hiện trong ComboBox1 và ComboBox2 thì sửa lại code trên như thế nào ạ! Thanks!!!
 
anh cho em hỏi thêm với!
Trong Code: Đưa danh sách các lớp vào ComboBox Ví dụ em muốn lớp 6c không hiện trong ComboBox1 và ComboBox2 thì sửa lại code trên như thế nào ạ! Thanks!!!
bạn xem lớp 6c đứng ở vị trí thứ mấy từ trái qua rồi thêm vào đoạn ... vào là ok

PHP:
Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To Sheets.Count
     IF i <> .... then
      ComboBox1.AddItem Sheets(i).Name
        ComboBox2.AddItem Sheets(i).Name
     else 
     end if
    Next
End Sub
 
Lần chỉnh sửa cuối:
bạn xem lớp 6c đứng ở vị trí thứ mấy từ trái qua rồi thêm vào đoạn ... vào là ok

PHP:
Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To Sheets.Count
     IF i <> .... then
      ComboBox1.AddItem Sheets(i).Name
        ComboBox2.AddItem Sheets(i).Name
     else 
     end if
    Next
End Sub
Cái vụ xem sheet 6C đứng ở vị trí thứ mấy nghe chừng không ổn. Bởi vì chúng ta đang xét bài toán di chuyển sheet, và người dùng sử dụng chức năng này không chỉ 1 lần, có nghĩa là lần trước nó nằm ở đó, không chắc lần sau nó cũng nằm ở đó nữa.
Theo mình thì thay vì If i<>... Then..., ta sử dụng điều kiện If Sheets(i).Name <> "6C" Then... sẽ phù hợp hơn.
 
Cảm ơn các anh đã trợ giúp! Chúc các anh và gia đình luôn mạnh khỏe, hạnh phúc...!!!
 
Web KT
Back
Top Bottom