Chuyên mục xử lý, gỡ rối code VBA (3 người xem)

Liên hệ QC

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

Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,957
Gỡ rối code VBA

Private Sub CommandButton2_Click()
Dim cell As Range, r As Range
Dim cll As Range, s As Range
Dim ir As Long, ic As Long
Dim sodong As Integer


Application.ScreenUpdating = False
Application.Calculation = xlManual
Application.EnableEvents = False


Set r = Sheet4.Range("C59:C50000")
For Each cell In r.Cells
If cell.Value <> "" Then
ir = cell.Row: ir = ir + 1: ic = cell.Column
Do While Cells(ir, ic).Value <> ""
ir = ir + 1
Loop
ir = ir - 1
If Cells(ir, ic).Value <> "" And Cells(ir - 1, ic + 1).Value <> "" Then
For sodong = 1 To 54
Cells(ir, ic).EntireRow.Insert
' Selection.EntireRow.Insert
Next sodong
End If
End If
Next


Set s = Sheet4.Range("C59:C50000")
For Each cll In s.Cells
If cll.Value <> "" Then
Sheet4.Range("H4:AK58").Copy
Cells(cll.Row - 1, cll.Column + 5).Select
ActiveSheet.Paste
End If
Next


MsgBox "KET THUC CHEN BIEU MAU PHAN TICH DON GIA"
Application.Calculate
Application.ScreenUpdating = True
Application.Calculation = xlAutomatic
Application.EnableEvents = True


End Sub
Nhờ các cao thủ giải thích giúp mình đoạn mã trên với. thank you nhiều
 
Upvote 0
Ngồi không Rảnh hơi quậy Bộ Office của Bác Bill ...Vô tình tìm thấy đoạn code sau...
Phải chăng Bác Bill sử dụng Dic để RemoveDuplicates

Code Như Sau bao gồm cả Ghi chú của Bác Bill
PHP:
'-------------------------------------------------------------------------------'   RemoveDuplicates''   Remove duplicate entries from a one dimensional array'-------------------------------------------------------------------------------Function RemoveDuplicates(Array)
    Dim Item
    Dim dicNoDupes
    Set dicNoDupes = CreateObject("Scripting.Dictionary")
    For Each Item in Array
        If Not dicNoDupes.Exists(Item) Then dicNoDupes.Add Item, Item
    Next 'Item
    RemoveDuplicates = dicNoDupes.Keys
End Function 'RemoveDuplicates
 
Upvote 0
Nhờ mod xóa giùm bài này.
 
Lần chỉnh sửa cuối:
Upvote 0
______________________________________________________
 
Lần chỉnh sửa cuối:
Upvote 0
Chào các bác
cho em hỏi là em có một macro A. Nếu A gặp sự kiện B có thể rẽ nhánh theo C,D,E,F (sử dụng useform lựa chọn tùy ý người dùng) còn không gặp B thì thực hiện bình thường.vậy làm thế nào để cái useform ấy nhận biến từ macro đang thực hiện vậy ạ.
em xin chân thành cảm ơn !
 
Upvote 0
Em có code trong file sau ko thể nào lấy được số liệu của cả 3 sheet, chỉ lấy được khi em thay For I = 1 To 1 hoặc For I = 2 To 2 hoặc For I=3 To 3 ... như vậy nếu em có 31 sheet thì 31 lần thay thủ công. Mong các Thầy giúp cho ah!
 
Lần chỉnh sửa cuối:
Upvote 0
Các Thầy ơi, em làm ra được rồi ah. Em làm được rồi, tại em không sắp xếp đúng trình tự, tuyệt cú mèo. thanks GPE.
 
Upvote 0
Xin thân chào toàn thể các anh, chị, em giaiphapexcel. Kính chúc mọi người luôn được vui khỏe, hạnh phúc, vạn an. Tôi nay "có chút bối rối" mong được trợ giúp...Vừa qua các cháu nhà tôi cài lại Win 10, bộ office 2013 thì các bảng tính Excel của tôi báo lỗi như trong hình đính kèm. (Đoạn mã TachHoTen này trước đây tôi học được của anh PhamDuyLong trên giaiphapexcel mà tôi hằng yêu quý, nhân đây xin được cảm ơn anh Long nhiều lắm). Rất, rất mong được sự "giải cứu binh nhì..." (càng cụ thể càng tốt). Xin cảm ơn nhiều nhiều...
 

File đính kèm

  • Hoi Ham tach ho ten.jpg
    Hoi Ham tach ho ten.jpg
    11.9 KB · Đọc: 48
Upvote 0
Chào ACE,
Mình có file excel VBA đính kèm bên dưới
Mình down file này từ GPE, nhưng mình muốn biết mã code VBA mà code này đã được đặt mật khẩu
Mình chỉ muốn tìm hiểu code VBA này thôi, mình muốn ứng dụng thêm chứ không có chủ đích xấu

mình chỉ học hỏi cách hoạt động của code này thôi, không có ý gì xấu hết

Mong ACE nào biết pass code VBA này thí giúp mình, còn không thì giải mã cho mình cũng được

Chân thành cảm ơn các ACE
 

File đính kèm

Upvote 0
Chào ACE,
Mình có file excel VBA đính kèm bên dưới
Mình down file này từ GPE, nhưng mình muốn biết mã code VBA mà code này đã được đặt mật khẩu
Mình chỉ muốn tìm hiểu code VBA này thôi, mình muốn ứng dụng thêm chứ không có chủ đích xấu

mình chỉ học hỏi cách hoạt động của code này thôi, không có ý gì xấu hết

Mong ACE nào biết pass code VBA này thí giúp mình, còn không thì giải mã cho mình cũng được

Chân thành cảm ơn các ACE

Bạn làm gì mà 1 vấn đề của bạn lại đi hỏi ở 3 topic vậy?
-------------------------------------------------------------
Chưa kể hỏi Pass code VBA cũng là không đúng rồi...Bó tay cho bạn.
 
Upvote 0
Nhờ A/C code giúp e với
VBA xuất từ excel sang pdf với điều kiện như sau:
Đặt tên file xuất sang pdf theo tên thay đổi theo giá trị tại ô G10 (G10 là giá trị nằm trong danh sách)
vd: Nếu ô G10 là A thì xuất đặt tên file pdf là A.pdf
Nếu ô G10 là B thì xuất đặt tên file pdf là B.pdf
Nếu ô G10 là C thì xuất đặt tên file pdf là C.pdf

Chân thành cám ơn
 
Upvote 0
Nhờ mọi người coi dùm mình code trong Module 3 của file đính kèm.

Chức năng của đoạn code này là khi mình nhấn vào nút "update" thì thông tin được chỉnh sửa trên sheet "TraCuu" se tự động cập nhật vào sheet "Total".

Mấy tháng nay xài thì không sao, không biết hôm nay bị gì mà khi nhấn "Update", nó hiện lên báo lỗi tại dòng số 9

tracuu = [a4].CurrentRegion.value

Mong mọi người giúp đỡ

Cám ơn mọi người
 

File đính kèm

Upvote 0
Nhờ mọi người coi dùm mình code trong Module 3 của file đính kèm.

Chức năng của đoạn code này là khi mình nhấn vào nút "update" thì thông tin được chỉnh sửa trên sheet "TraCuu" se tự động cập nhật vào sheet "Total".

Mấy tháng nay xài thì không sao, không biết hôm nay bị gì mà khi nhấn "Update", nó hiện lên báo lỗi tại dòng số 9

tracuu = [a4].CurrentRegion.value

Mong mọi người giúp đỡ

Cám ơn mọi người
Bạn thử xóa Cells B17 ... Sheets("tracuu:) đi coi xong chạy code là thấy lỗi do cái Gì
 
Upvote 0
Nhờ mọi người coi dùm mình code trong Module 3 của file đính kèm.

tracuu = [a4].CurrentRegion.value
Mình luôn dị ứng với cách viết Code của bạn (Hay của người nào đã giúp)

Hiện tại macro của bạn có tên là 'tracuu' lại trùng với tên 1 biến đã khai báo. Làm chuyện như vậy làm chi vậy?
Mà Tên macro hay tên biến cũng nên viết 'TraCuu' có ngứa mắt với bạn chăng?
Nếu bạn sửa tên macro theo mình đề xuất; Lúc đó tên biến cũng đổi theo, => 'TraCuu' cho mà xem!

Với mình bao giờ cũng có câu Option Explicit ở trong chương trình.
Khai báo biến cũng nên tường minh; Hơn nữa, biến cùng loại nên để trên cùng dòng cho dễ trong quản lí & sử dụng.
Ví dụ:
PHP:
Dim Arr(), Sh As Object, Rng As Range
Dim J as long, Rws As Long
Dim StrC As String

Làm vậy cũng chả ai dám đánh giá thập khả năng BVA của bạn cả!
 
Upvote 0
Cám ơn bạn nhiều nha, mình không có xóa cells B17, chỉ định dạng lại nó thành general thì nó không báo lỗi nữa.

Nhưng mà bây giờ code vba đó không chạy được, mình nhấn nút update thì nó vẫn báo là update rồi, nhưng mà thực tế là không có thông tin

Bạn thử xóa Cells B17 ... Sheets("tracuu:) đi coi xong chạy code là thấy lỗi do cái Gì
 
Upvote 0
Mình luôn dị ứng với cách viết Code của bạn (Hay của người nào đã giúp)

Hiện tại macro của bạn có tên là 'tracuu' lại trùng với tên 1 biến đã khai báo. Làm chuyện như vậy làm chi vậy?
Mà Tên macro hay tên biến cũng nên viết 'TraCuu' có ngứa mắt với bạn chăng?
Nếu bạn sửa tên macro theo mình đề xuất; Lúc đó tên biến cũng đổi theo, => 'TraCuu' cho mà xem!

Với mình bao giờ cũng có câu Option Explicit ở trong chương trình.
Khai báo biến cũng nên tường minh; Hơn nữa, biến cùng loại nên để trên cùng dòng cho dễ trong quản lí & sử dụng.
Ví dụ:
PHP:
Dim Arr(), Sh As Object, Rng As Range
Dim J as long, Rws As Long
Dim StrC As String

Làm vậy cũng chả ai dám đánh giá thập khả năng BVA của bạn cả!


Cám ơn bạn góp ý. Code này là mình được giúp nên mình giữ nguyên luôn
 
Upvote 0
Em xin chào các cao thủ. Em đang có 1 vấn đề rắc rối mong mọi người tháo gỡ giúp em.
Em có 1 data gồm các cột :life number, policy number, inception date, sum assured, risk type. Có 5 loại risk type mỗi một life number có thể có 1 hoặc nhiều risk type. Giờ em muốn copy những dòng life number có cùng risk type mà tổng sum assured lớn hơn 800 triệu với điều kiện tháng inception date được cộng dồn. Tức là inception date bắt đầu từ tháng 12/2014 sẽ copy data của những life number có cùng 1 risk type trong tháng 12 mà tổng sum lớn hơn 800 là 1 kết quả. Sau đó, đến tháng 1/2015 có thể life number của tháng 12 /2014 sẽ xuất hiện lại ở tháng 1 thì phải lấy lại những dòng đó với điều kiện như trên và copy hết vào tháng 1. Có thể có những life chưa xuất hiện trong sheet kết quả của tháng 12 nhưng đến tháng 1 lại có vì lúc này tổng tiền cộng dồn trên 1 risk của life này đã lớn hơn 800 vì tháng 1 có phát sinh thêm cùng risk đó.




Đại loại dữ liệu trong sheet "Data" và kết quả ở 2 sheets "12-2014" và "1-2015".




mong các cao thủ vba giúp em với ah.

em xin chân thành cám ơn
 

File đính kèm

Upvote 0
@ChanhTQ: mỗi người có một phong cách viết code khác nhau mà bạn, nhưng càng ngắn ngọn, xúc tích, nghĩa rõ ràng càng tốt. chứ ko nhất thiết phải theo ai.
Dim Arr(), Sh As Object, Rng As Range
Dim J as long, Rws As Long
Dim StrC As String
Bạn đưa ra ví dụ ở trên, nói thật mình chưa thấy ai dùng phong cách khai báo biến như bạn, chắc đó là phong cách của bạn thôi. Thường mình thấy mọi người khai báo biến dùng định dạng lạc đà (camel), còn hàm thì dùng kiểu pascal...
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom