Nhờ giúp ghép 3 nút bấm thành 1 nút. (1 người xem)

  • Thread starter Thread starter iloveit
  • Ngày gửi Ngày gửi
Liên hệ QC

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

iloveit

Thành viên thường trực
Tham gia
2/3/13
Bài viết
212
Được thích
52
Giới tính
Nam
Nghề nghiệp
Tự do
Vấn để tôi đã nêu chi tiết trong file, mong các anh, chị giúp đỡ. Chân thành cảm ơn.
 

File đính kèm

Theo mình nghĩ, cái này có thể tạo macro sự kiện tại 1 ô có Validation;
Ô Validation này có thể chọn 1 trong 3 trường hợp bạn nêu.
 
Upvote 0
Bạn nêu yêu cầu hơi nhùng nhằng khó hiểu. Có lẽ theo tôi nên như sau.Khi nhấn nút sẽ tự kiểm tra và thực hiện:

1/Nếu dòng chọn trống cột B thì chẳng làm gì cả vì chưa có tên.
2/Nếu cột B có tên mà cột D trống thì điền giờ vào cột D.
3/Nếu cột B, D có dữ liệu thì điền giờ ra cột E.
4/Nếu cột B,D,E có đủ thì hỏi lại cho chắc trước khi xóa.

Bạn thử code sau

Mã:
Sub GPE()
Dim eR
eR = ActiveCell.Row
If eR<11 Or eR>40 then Exit Sub
If Cells(eR, "B") <> "" And Cells(eR, "D") = "" Then
Cells(eR, "D") = Now()
ElseIf Cells(eR, "B") <> "" And Cells(eR, "D") <> "" And Cells(eR, "E") = "" Then
Cells(eR, "E") = Now()
ElseIf Cells(eR, "B") <> "" And Cells(eR, "D") <> "" And Cells(eR, "E") <> "" Then
If MsgBox("Dong du du lieu, ban can xoa", vbOKCancel, "XOA DONG DU LIEU") = vbOK _
Then Cells(eR, "B").Resize(, 4).ClearContents
Else
Exit Sub
End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn nêu yêu cầu hơi nhùng nhằng khó hiểu. Có lẽ theo tôi nên như sau.Khi nhấn nút sẽ tự kiểm tra và thực hiện:

1/Nếu dòng chọn trống cột B thì chẳng làm gì cả vì chưa có tên.
2/Nếu cột B có tên mà cột D trống thì điền giờ vào cột D.
3/Nếu cột B, D có dữ liệu thì điền giờ ra cột E.
4/Nếu cột B,D,E có đủ thì hỏi lại cho chắc trước khi xóa.

Bạn thử code sau

Mã:
Sub GPE()
Dim eR
eR = ActiveCell.Row
If eR<11 Or eR>40 then Exit Sub
If Cells(eR, "B") <> "" And Cells(eR, "D") = "" Then
Cells(eR, "D") = Now()
ElseIf Cells(eR, "B") <> "" And Cells(eR, "D") <> "" And Cells(eR, "E") = "" Then
Cells(eR, "E") = Now()
ElseIf Cells(eR, "B") <> "" And Cells(eR, "D") <> "" And Cells(eR, "E") <> "" Then
If MsgBox("Dong du du lieu, ban can xoa", vbOKCancel, "XOA DONG DU LIEU") = vbOK _
Then Cells(eR, "B").Resize(, 4).ClearContents
Else
Exit Sub
End If
End Sub

Dạ, hay quá chú ơi. Ý con là vậy đó mà con muốn mỗi dòng là 1 nút bấm như vậy và trên nút ấy có hiện chữ nữa. Ví dụ trước khi ta nhấn lệnh để thực hiện xóa thì nút đó sẽ có chữ Reset.

Ngoài ra, khi bấm vào nút ở dòng nào thì sẽ tự động điền thông tin trên dòng đó mà không cần phải select dòng đó.
 
Upvote 0
Tạm tham khảo file ví dụ (ý mình là chỉ cần 1 cái thôi rồi di chuyển nó theo là được, cứ chọn dòng trong vùng và có tên thì có nút), mình chưa sử lý được đổi text cho Shape đang nhận Focus
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Vấn để tôi đã nêu chi tiết trong file, mong các anh, chị giúp đỡ. Chân thành cảm ơn.
Bài này gần giống với bài tuỳ chọn in của mình :) mình chọn liên tục bằng msgbox hết, cứ Ok thì điền hoặc xoá, cancel thì next hoặc endsub :). Vì mình thấy cách đấy khá dễ hiểu :)
 
Upvote 0
Thể theo yêu cầu của bạn, tôi thêm bằng 30 command button sử dụng chung 1 Macro có tham số.
Tham khảo file kèm
 

File đính kèm

Upvote 0
Dạ, bị lỗi run_time error và vàng ở dòng này ạ Shapes.Range("Button " & i).TextFrame.Characters.Text = Cap

Kỳ thật, mình tải lại file chạy vẫn bình thường mà. Ai đó ghé qua bớt chút thời gian test giùm chút nha. Thank.
 
Upvote 0
Sao mình làm mãi mà nó không được.
bạn làm như thế nào? vụ nầy phải làm đúng thao tác mới được
bước 1: không dùng file bạn làm không được, tải lại file của mình, và làm từ đầu để dợt thao tác cho chuẩn.
bước 2: copy code
Mã:
Private Sub Button[COLOR=#ff0000]1[/COLOR]_Click()
ActiveSheet.Shapes("Button [COLOR=#ff0000]1[/COLOR]").Select
Call Main
End Sub
dán phía dưới và sửa lại
Mã:
Private Sub Button[COLOR=#ff0000]3[/COLOR]_Click()
ActiveSheet.Shapes("Button [COLOR=#ff0000]3[/COLOR]").Select
Call Main
End Sub
làm tương tự cho đủ code của Buuton1 đến 30 chẳng hạn
Bước 3: ra ngoài Excel, Inset Button kiểm tra tên Botton phải liên tục và tên code phù hợp không
nhớ không được delete bất kỳ booton nào
 
Upvote 0
Bạn thay dòng lỗi màu vàng

Shapes.Range("Button " & i).TextFrame.Characters.Text = Cap

Bằng dòng sau là được

Sheet1.Shapes("Button " & i).TextFrame.Characters.Text = Cap

Mình sử dụng Exc 2010 nên không phát hiện khác biệt với các Ver trước phải nhờ máy khác mới biết, thông cảm nha.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thay dòng lỗi màu vàng

Shapes.Range("Button " & i).TextFrame.Characters.Text = Cap

Bằng dòng sau là được

Sheet1.Shapes("Button " & i).TextFrame.Characters.Text = Cap

Mình sử dụng Exc 2010 nên không phát hiện khác biệt với các Ver trước phải nhờ máy khác mới biết, thông cảm nha.

Dạ, chú nói vậy con ngại quá ạ. Chú giúp con là tuyệt vời lắm rồi. Chúc chú buổi tối vui vẻ.
 
Upvote 0
Web KT

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

Back
Top Bottom