Click chuột vào nut Commandbutton để cập nhật công thức trong bảng tính excell (1 người xem)

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

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

canthoq

Thành viên chính thức
Tham gia
10/2/11
Bài viết
62
Được thích
4
Xin các sư phụ giúp dùm em, nhấp nút cập nhật số liệu, khi định công thức sẳn. Trân thành cảm ơn các sư phụ nhiều.
 

File đính kèm

Xin các sư phụ giúp dùm em, nhấp nút cập nhật số liệu, khi định công thức sẳn. Trân thành cảm ơn các sư phụ nhiều.
Bạn dùng code sau và tùy chỉnh vị trí ô nguồn, ô đích nhé, khỏi dùng công thức.
PHP:
Sub CapNhat()
    Dim i As Byte
    Sheet6.Move After:=Sheets(Sheets.Count)
    For i = 1 To Sheets.Count - 1
        Sheet6.Cells(i, 1) = Sheets(i).Name
        Sheet6.Cells(i, 2) = Sheets(i).[T6]
    Next
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Sao bài này không ai xem giúp mình hết vậy ta.
Không hiểu Bạn muốn gì làm sao giúp.
Bạn phải tạo mẫu cho sheet Thongke, công thức gì ở cột nào cần code...?
Bạn đưa một cái Bảng trống hoác và ví dụ sơ sài quá đấy!
Với ví dụ đơn giản như Bạn tôi cũng có ví dụ đơn giản không cần code như sau:
 

File đính kèm

Upvote 0
Trước hết cảm ơn các Bác, Tuy nhiên bác nghĩa phúc ơi, sẳn giúp thì giúp cho chót. Thí dụ như trong code là t6, vậy bây giờ em muốn 1 vùng nào đó Vd như (T6:y43), thì sao bác há nghĩa phúc.
 
Upvote 0
Trước hết cảm ơn các Bác, Tuy nhiên bác nghĩa phúc ơi, sẳn giúp thì giúp cho chót. Thí dụ như trong code là t6, vậy bây giờ em muốn 1 vùng nào đó Vd như (T6:y43), thì sao bác há nghĩa phúc.
Thì bạn sửa lại code như sau:
PHP:
Sub CapNhat()
    Dim i As Byte
    Sheet6.Move After:=Sheets(Sheets.Count)
    For i = 1 To Sheets.Count - 1
        Sheet6.Cells((i - 1) * 38 + 1, 1) = Sheets(i).Name
        Sheet6.Cells((i - 1) * 38 + 1, 2).Resize(38, 6).Value = Sheets(i).[T6:Y43].Value
    Next
End Sub
 
Upvote 0
Thí dụ như mở rộng vùng thêm nữa thì lúc này mình chỉ thay đổi vùng T6:Y43 thôi phải không anh Phúc, Hay là có sửa code nữa không vậy anh phúc.
 
Upvote 0
Thí dụ như mở rộng vùng thêm nữa thì lúc này mình chỉ thay đổi vùng T6:Y43 thôi phải không anh Phúc, Hay là có sửa code nữa không vậy anh phúc.
Trong code trên có 2 câu này:
Mã:
Sheet6.Cells((i - 1) * [B][COLOR=red]38[/COLOR][/B] + 1, 1) = Sheets(i).Name
Sheet6.Cells((i - 1) * [COLOR=red][B]38[/B][/COLOR] + 1, 2).Resize([B][COLOR=red]38[/COLOR][/B], [B][COLOR=blue]6[/COLOR][/B]).Value = Sheets(i).[[B][COLOR=magenta]T6:Y43[/COLOR][/B]].Value
Ở 2 câu trên, số 38 và số 6 chính là kích thước của vùng T6:Y43. Do đó, khi mở rộng vùng thì bạn cần phải thay đổi 2 số này cho phù hợp.
 
Upvote 0
Cảm ơn anh nhiều, ý em như gì nè anh phúc, Sheet thống kê em nhập sẳn công thức nhưng khi chưa tạo lớp thêm thì công thức này chưa chạy được, mà muốn chạy được thì phải vào cell đó rồi enter thì bảng tính lúc này mới có hiệu lực, Nhưng bảng tính em khóa lại thì làm sao mà enter được, Vậy có cách nào mình tạo cái nút giống như Enter vào các cell cho nó hoạt động được các công thức, mà không cần code như nảy giờ mình làm, được không anh phúc. cảm ơn anh nhiều
 
Upvote 0
Cảm ơn anh nhiều, ý em như gì nè anh phúc, Sheet thống kê em nhập sẳn công thức nhưng khi chưa tạo lớp thêm thì công thức này chưa chạy được, mà muốn chạy được thì phải vào cell đó rồi enter thì bảng tính lúc này mới có hiệu lực, Nhưng bảng tính em khóa lại thì làm sao mà enter được, Vậy có cách nào mình tạo cái nút giống như Enter vào các cell cho nó hoạt động được các công thức, mà không cần code như nảy giờ mình làm, được không anh phúc. cảm ơn anh nhiều
Bạn thử nghiên cứu cách của anh Ba Tê xem có được không. Nhưng mình dám chắc một điều là nếu được thì file cũng nặng nề hơn là việc mình chạy code. Với code, tại các ô chỉ là giá trị chứ không có công thức nên kích thước file cũng sẽ nhẹ nhàng hơn. Hơn nữa, khi nào cần lấy kết quả thống kê, chỉ cần nhấn nút là có ngay kết quả mà Excel không cần phải tính thường xuyên mỗi khi có sự thay đổi dữ liệu.
Còn vấn đề sheet bị khóa thì VBA hoàn toàn can thiệp được. Bạn chỉ cần thêm 2 câu lệnh này vào trước và sau vòng For-Next trong code trên là được:
Mã:
Sheet6.Unprotect "GPE"
'Vòng lặp For-Next
Sheet6.Protect "GPE"
 
Upvote 0

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

Back
Top Bottom