Xin các bạn giải thích giúp mình phần activate sheet (1 người xem)

Người dùng đang xem chủ đề này

minhtungph

None
Tham gia
18/9/13
Bài viết
198
Được thích
78
Private Sub CommandButton19_Click()
Worksheets(2).Activate
Worksheets(2).Select
Range("b3").Value = "demo"
'ActiveSheet.Range("b3").Value = "demo"
End Sub

- mình có đoạn code như trên, cho mình hỏi là tuy đã thiết lập activate là sheet thứ 2, vậy mà dùng lệnh Range("b3").Value = "demo" tại sao nó vẫn ghi chữ demo vào ô B3 của sheet thứ nhất, chẳng lẽ dòng nào mình cũng phải dùng 'ActiveSheet.Range("b3").Value = "demo"

- Mong các bạn giúp đỡ , thank
 
Sao bạn không thử sử dụng

Mã:
Private Sub CommandButton19_Click()
    Sheet2.[B3].Value = "demo"
End Sub

Khỏi phải active
 
Lần chỉnh sửa cuối:
Upvote 0
Sao bạn không thử sử dụng

Mã:
Private Sub CommandButton19_Click()
    Sheet2.[B3].Value = "demo"
End Sub

Khỏi phải active

- cám ơn bạn , nhưng cái phần activate, mình đã chọn activate rồi mà gán dữ liệu vô không được vậy activate làm gì bạn ?
- tại mình muốn tìm hiểu cho rõ sự khác biệt của 2 phương thức này
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Tại vì lý do nào đó, bạn đặt cái Sheet mà bạn gọi là thứ nhất sau một sheet nào đó, như vậy đối với bảng tính, sheet này là sheet thứ 2.
Đối với collection Worksheets, chỉ số được tính theo vị trí của sheet.

Muốn thử nghiệm, bạn đặt thêm lệnh này trước khi end sub:

MsgBox "Worksheets(2).Name = " & Worksheets(2).Name
 
Upvote 0
mình gõ code như bạn VietMini thì hiện ra sheet2, mình có gửi file đính kèm, bên sheet1 có 2 nút, 1 nút mình làm đúng theo yêu cầu, 1 nút mình thắc mắc sự kiện activate của sheet, các bạn giúp mình nha, pass code vba là: 123
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
mình gõ code như bạn VietMini thì hiện ra sheet2, mình có gửi file đính kèm, bên sheet1 có 2 nút, 1 nút mình làm đúng theo yêu cầu, 1 nút mình thắc mắc sự kiện activate của sheet, các bạn giúp mình nha, pass code vba là: 123

Đơn giản thế này

- Bạn cắt toàn bộ nội dung Sub đó (Sub CommandButton20_Click) nằm trong 2 từ khoá Sub.. EndSub nhé
- sang Module1 chẳng hạn, rồi tạo
PHP:
Sub TamTam()
'' paste (dán) toàn bộ nội dung cắt trên vào đây
End Sub

- trở lại Sub CommandButton20 ==> bạn cho lệnh Call TamTam như thế này
PHP:
Private Sub CommandButton20_Click()
    Call TamTam
End Sub

===> bấm nút 20 đó chạy thử , báo kết quả và rút ra Lý do tại sao ở đây??
 
Lần chỉnh sửa cuối:
Upvote 0
Đơn giản thế này

- Bạn cắt toàn bộ nội dung Sub đó (Sub CommandButton20_Click) nằm trong 2 từ khoá Sub.. EndSub nhé
- sang Module1 chẳng hạn, rồi tạo
PHP:
Sub TamTam()
'' paste (dán) toàn bộ nội dung cắt trên vào đây
End Sub

- trở lại Sub CommandButton20 ==> bạn cho lệnh Call TamTam như thế này
PHP:
Private Sub CommandButton20_Click()
    Call TamTam
End Sub

===> bấm nút 20 đó chạy thử , báo kết quả và rút ra Lý do tại sao ở đây??
cám ơn bạn nhiều lắm, có phải code mình để trong sheet1 thì dù sheet activate là sheet2 đi chăng nữa thì nó vẫn gọi những vùng của sheet chứa code
 
Upvote 0
cám ơn bạn nhiều lắm, có phải code mình để trong sheet1 thì dù sheet activate là sheet2 đi chăng nữa thì nó vẫn gọi những vùng của sheet chứa code

Đúng thế vì code cũ bạn đang viết ở Sheetcode của Sheet1 nên mọi thành phần con (như range, cells thường được viết Me. hoặc không cần khi thuộc sheet1) không chỉ rõ thuộc sheet khác (không dắt tay) thì nó coi như thuộc sheet1 (chủ nhà).

Nhưng nếu đang ở sân đình làng chung (module) thì khác (nếu ai đang được chỉ thị tách đám đông (ativate hay select) thì cái nào không ghi rõ thì thuộc kẻ đó
 
Upvote 0
Ờ, tôi quên không nhìn cái từ "Private" chình ình ngay đầu Sub cho nên cứ ngỡ nó là code chung. Thấy bạn nhắc mới nhận ra tại nó là code của sheet.

Thực ra chủ thớt làm việc từ sheet này sang sheet nọ thì nên cắt cả cụm hàm trên cho vào module chung và cắt bỏ từ "private".
 
Upvote 0

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

Back
Top Bottom