Làm việc với CommandButton

Liên hệ QC

thesaintzero

Thành viên hoạt động
Tham gia
16/3/09
Bài viết
158
Được thích
8
Em chào các thầy và các tiền bối...... khuya này em không ngủ vì cái thằng này làm em suy nghĩ hoài mà không ngủ đc. Em mong ai có cao kiến có thể giúp em với được không? em có kèm theo file đính kèm.
 

File đính kèm

Ah! mình làm được rùi các thầy vs các bạn ơi! các bạn có thể làm thế này: ( không biết đúng không nhưng mình thấy mình làm được ^^)
Đầu tiên bạn tạo 1 Commandbuttton với name cmd1
bạn viết nút lệnh cho nút lệnh này :

Public sub cmd1_click()
msgbox"Da nhan dien duoc Commandbutton"
End sub

Bạn chú ý dùm mình là nếu chọn "Private sub" thay vì "Publlic sub" thì mình làm hoài không được, nếu ai bik thì diễn giải dùm mình nhé.
Sau đó bạn tạo 1 macro với button name là Goicmd1

Sub Goicmd1()
sheet1.cmd1_click
end sub

Sau đó bạn add macro vào menu vừa tạo, thế là có 1 cái menu gọi được lệnh trong Commandbutton
Nếu bạn muốn ẩn nút Commandbutton thì trong muc visible=false là nút này sẽ ẩn đi.....
Cách của mình là thế ai có cao kiến hay hơn thì cho mình 1 cái nhận xét nhé. Thanks
 
Ah! mình làm được rùi các thầy vs các bạn ơi! các bạn có thể làm thế này: ( không biết đúng không nhưng mình thấy mình làm được ^^)
Đầu tiên bạn tạo 1 Commandbuttton với name cmd1
bạn viết nút lệnh cho nút lệnh này :

Public sub cmd1_click()
msgbox"Da nhan dien duoc Commandbutton"
End sub

Bạn chú ý dùm mình là nếu chọn "Private sub" thay vì "Publlic sub" thì mình làm hoài không được, nếu ai bik thì diễn giải dùm mình nhé.
Sau đó bạn tạo 1 macro với button name là Goicmd1

Sub Goicmd1()
sheet1.cmd1_click
end sub

Sau đó bạn add macro vào menu vừa tạo, thế là có 1 cái menu gọi được lệnh trong Commandbutton
Nếu bạn muốn ẩn nút Commandbutton thì trong muc visible=false là nút này sẽ ẩn đi.....
Cách của mình là thế ai có cao kiến hay hơn thì cho mình 1 cái nhận xét nhé. Thanks
Bạn nói rằng "Sau đó bạn add macro vào menu vừa tạo" nghĩa là bạn đang có 1 cái menu, đúng không? Vậy thì việc vẽ cái CommandButton lên bảng tính có tác dụng gì? Đàng nào bạn cũng đâu có dùng đến
 
Mình biết là vậy, nhưng không biết cái excel của mình bị gì mà không gọi lệnh trực tiếp được nên mình mới phải gọi lệnh qua cmdbutton...... chỉ vì vậy đó mà suy nghĩ hoài.... mà Bác Ndu ơi sao cái menu mình vừa tạo bên excel 2003 sao mình ko cho nó hiển thị bên 2007 được , mà cái menu add-ins trong 2007 nó không có hiện ra. Bác có cách nào không chỉ giúp mình với...( mình xài 2007 Fortable ) không biết có phải vì vậy mà không làm được không?
Thêm 1 câu hỏi nữa hôm bữa có nhờ 1 người trong GPE làm giúp cái vùng dữ liệu nhưng sao khi xóa hết dữ liệu mà mình nhập lại theo vùng thì không đươc. Nếu bác Ndu có rảnh thi xem giúp em với.... em cám ơn nhiều..( em có kèm theo file )
 

File đính kèm

Mình biết là vậy, nhưng không biết cái excel của mình bị gì mà không gọi lệnh trực tiếp được nên mình mới phải gọi lệnh qua cmdbutton...... chỉ vì vậy đó mà suy nghĩ hoài.... mà Bác Ndu ơi sao cái menu mình vừa tạo bên excel 2003 sao mình ko cho nó hiển thị bên 2007 được , mà cái menu add-ins trong 2007 nó không có hiện ra. Bác có cách nào không chỉ giúp mình với...( mình xài 2007 Fortable ) không biết có phải vì vậy mà không làm được không?
Thêm 1 câu hỏi nữa hôm bữa có nhờ 1 người trong GPE làm giúp cái vùng dữ liệu nhưng sao khi xóa hết dữ liệu mà mình nhập lại theo vùng thì không đươc. Nếu bác Ndu có rảnh thi xem giúp em với.... em cám ơn nhiều..( em có kèm theo file )
Thay Code này cho code Nút <XONG>
Private Sub CommandButton1_Click()
Sheets("S1").Range("A" & [G1] * 12 - 9).Resize(10, 5).Value = Sheets("S1").Range("AA1:AE10").Value
End Sub
 
Lần chỉnh sửa cuối:
Chính xác rùi. Em cám ơn bác Ba Tê rất nhiều, đúng với yêu cầu của em rùi!...... ^^
 
Làm sao để tại ô G1 chọn 1 số nó lấy bảng dữ liệu tương ứng sang vùng AA - AE vậy.
 
thì bạn coi trong code đó : cụ thể là đoạn code này

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G1]) Is Nothing Then
Dim Rws As Long
Rws = 12 * Target.Value - 9
Cells(Rws, "A").Resize(10, 5).Copy Destination:=Sheet1.[AA1]
End If
End Sub
 
thì bạn coi trong code đó : cụ thể là đoạn code này

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [G1]) Is Nothing Then
Dim Rws As Long
Rws = 12 * Target.Value - 9
Cells(Rws, "A").Resize(10, 5).Copy Destination:=Sheet1.[AA1]
End If
End Sub

Nếu mình muốn vùng dữ liệu lấy ở 1 sheet khác thì sửa code thế nào hả bạn. Tức là mỗi bảng nằm ở 1 sheet khác nhau ấy. Và cũng lấy được các định dạng về font, màu chữ, màu nền, kích thước dòng, cột của vùng dữ liệu đó.
 
Lần chỉnh sửa cuối:
thì bạn thay cái dòng này này
Cells(Rws, "A").Resize(10, 5).Copy Destination:=Sheet1.[AA1]---------->>>>>
Cells(Rws, "A").Resize(10, 5).Copy Destination:=Sheet2.[A1]
vậy là xong..... mình lúc trước cũng như bạn vì 1 sheet là nhập 1 sheet là xử lý dữ liệu nên mình cũng tìm hiểu mà :)
 
Vậy bây giờ, khi lấy dữ liệu từ sheet khác được rồi, sau đó mình sửa và mình muốn xuất dữ liệu sang sheet tương ứng với bảng dữ liệu đó thì làm thế nào?
Giả sử vùng dữ liệu là A1:AH30 ở các sheet 2,3,4,5,.... Sheet 1 là sheet dùng để xem dữ liệu lấy từ các sheet 2,3,4,5...Sau khi lấy được dữ liệu ở 1 sheet rồi, bây giờ muốn sửa và update nó ngược lại sheet tương ứng.
 
Vậy bây giờ, khi lấy dữ liệu từ sheet khác được rồi, sau đó mình sửa và mình muốn xuất dữ liệu sang sheet tương ứng với bảng dữ liệu đó thì làm thế nào?
Giả sử vùng dữ liệu là A1:AH30 ở các sheet 2,3,4,5,.... Sheet 1 là sheet dùng để xem dữ liệu lấy từ các sheet 2,3,4,5...Sau khi lấy được dữ liệu ở 1 sheet rồi, bây giờ muốn sửa và update nó ngược lại sheet tương ứng.
Bạn muốn gì thì cũng đưa file ví dụ lên để người khác hiểu bạn muốn gì chứ.
Không có File thì sheet2,3,4,5... mặt mũi nó ra sao?
Mọi người phải tưởng tượng cùng Bạn sao.
Cố làm mọi chuyện rõ ràng hơn và kết quả sẽ có mau hơn.
 
Bạn nói lung tung quá, trong cái file của mình chỉ có sheet1 là sheet xem dữ liệu thui còn sheet2 dùng để update dữ liệu------->>> chứ làm gì có sheet3,4 đâu nữa nếu bạn có vấn đề thì đưa file lên------------>>> còn không thì cập nhật từ sheet2--->> sheet1
thì cũng trong cái sheet2 đó tạo 1 cái nút cập nhật sang sheet1:
Private Sub CommandButton1_Click()
Sheets("S1").Range("A" & [G1] * 12 - 9).Resize(10, 5).Value = Sheets("sheet2").Range("A1:A10").Value
End Sub
 
Đây là file ví dụ, các yêu cầu mình viết chi tiết trong file.

Trong Sheet Module của sheet TH, bạn chỉ cần thủ tục sau:

PHP:
Private Sub CommandButton1_Click()
    On Error Resume Next
    Sheets("Sheet" & Range("C7").Value).Range("A1:E10").Copy Range("E7")
End Sub

Nếu đặt theo tên sheet thì Validation List ghi tên các sheet cần copy, code làm như sau:

PHP:
Private Sub CommandButton1_Click()
    On Error Resume Next
    Sheets(Range("C7").Value).Range("A1:E10").Copy Range("E7")
End Sub
 
Lần chỉnh sửa cuối:
Đoạn code không hoạt động, vấn đề lấy dữ liệu từ các sheet về sheet TH đã xong. Còn lại vấn đề trả ngược dữ liệu khi có thay đổi ở bảng dữ liệu về sheet tương ứng. Mong các bạn giúp :d
 

File đính kèm

Đây của bạn đây.......... code vẫn chạy bình thường .....
Ah! cái bạn này thiệt là ----->>>> bạn chú ý dùm mình cái cell G1 nha! ở sheet(S1) đó
phải chọn cái đó nó mới cập nhật lại------>>>>>
 

File đính kèm

Lần chỉnh sửa cuối:
Mình gửi nhầm file, đây là file ví dụ. file bạn làm gần đúng nhưng chưa đủ
 

File đính kèm

Mình gửi nhầm file, đây là file ví dụ. file bạn làm gần đúng nhưng chưa đủ
Lâu lâu phải ôn bài, hông thôi quên hết
Trong file của bạn dữ liệu là giả định, bố trí hơi lạ, nếu có cấu trúc giống như thật sẽ làm chính xác hơn. Hổng sao, có gì sửa lại
Thân
 

File đính kèm

Web KT

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

Back
Top Bottom