Chỉnh sửa và bổ sung code. (1 người xem)

Liên hệ QC

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

matran25251325

Thành viên tiêu biểu
Tham gia
13/1/11
Bài viết
424
Được thích
39
Em có lưu macro cho 1 mã hiệu ở sheet "DG DT XD TT" nhưng loay hoay mãi không tìm ra vấn đề. Các bác rút ngắn code giùm em và khi sheet "TL DT" có nhiều mã hiệu chạy được nhiều mã hiệu (giống như tô đậm cột A11 đến S11 rồi kéo xuống vậy)
http://www.mediafire.com/?g6ichhmh85sjwb8
 
Dạ vì trước giờ em toàn xài hàm để tính toán, giờ em muốn chuyển sang code để file nhẹ đơn giả và nhẹ đi. Ở hàng A11 sheet "DG DT TRUOCTHUE" em có ghi lại macro để tính toán (delete hàng A1 đi, vị trí A11 bấm Ctr+a sẽ ra cách tính toán). Macro này em chỉ ghi cho 1 mã hiệu, giờ em muốn nhờ mấy anh nếu sheet TLuong DT có nhiều mã hiệu thì khi qua sheet "DG DT TRUOCTHUE" chỉ cần nhấp vào commandbutton thì sẽ chạy các mã hiệu đó. Trước giờ em thường để lại hàng A11 rồi sau đó dùng nút lệnh để fill xuống các công việc. Giờ e muốn xoá hàng A1 đó và chạy code, các bác giúp và hướng dẫn em với.
 
Upvote 0
Em có lưu macro cho 1 mã hiệu ở sheet "DG DT XD TT" nhưng loay hoay mãi không tìm ra vấn đề. Các bác rút ngắn code giùm em và khi sheet "TL DT" có nhiều mã hiệu chạy được nhiều mã hiệu (giống như tô đậm cột A11 đến S11 rồi kéo xuống vậy)
http://www.mediafire.com/?g6ichhmh85sjwb8
Làm biếng xem công thức Bạn muốn gì.
Thôi thì để lại công thức mẫu của bạn trên dòng 10, đừng xóa dòng này, chỉ ẩn đi thôi.
Lấy công thức xong gán giá trị trở lại.
Mỗi lần mở sheet có cái tên dài thoòng thì code chạy.
 

File đính kèm

Upvote 0
Dạ ý em là vậy đó, chỉ cần mở sheet là chạy. Dạ hình như xảy ra lỗi, nếu sheet TLuong DT có 1 mã hiệu thì qua sheet DGDT TT báo lỗi ( sArr = .Range(.[A10], .[A65000].End(xlUp)).Value ).
 
Lần chỉnh sửa cuối:
Upvote 0
trời ạ, bắt bẽ từ ngữ quá, em nói là nói thế chứ cũng mong mọi người xem và giúp em.
 
Upvote 0
có bác nào vào giúp em với, sao em tìm 1 mã hiệu ở sheet TLuong DT thì bên sheet DG TTHUE code không hoạt động. tìm 2 mã hiệu trở lên thì code mới hoạt động. &&&%$R
 
Lần chỉnh sửa cuối:
Upvote 0
có bác nào vào giúp em với, sao em tìm 1 mã hiệu ở sheet TLuong DT thì bên sheet DG TTHUE code không hoạt động. tìm 2 mã hiệu trở lên thì code mới hoạt động. &&&%$R

Muốn người ta giúp thì phải hỏi rõ ràng chớ ban!. Code nào không hoạt động?. Thà rằng bạn muốn gì nói ra người ta tìm hướng giải quyết cho nhanh, khỏi đi sửa của bạn.

Có phải bạn muốn mỗi khi tìm mã hiệu, bên sheet "DG DT XD TRUOC THUE" tự động thêm một dòng, từ cột A đến cột G giống với sheet "TLuong DT" phải không?. Nếu đúng vậy thì xem file thử được chưa, còn không thì tôi bó tay, không hiểu.

Tìm mã hiệu xong, bạn qua Sheet "DG DT XD TRUOC THUE" xem.
 

File đính kèm

Upvote 0
File bài số 5 của anh Ba Tê kìa anh, anh Ba Tê đã viết cho em code ở sheet "DG DT XD TRUOC THUE" có Sub LUXUBU. File này đúng yêu cầu của em nhưng nó có 1 lỗi là nếu sheet TLuong DT chỉ tra 1 mã hiệu thì qua sheet "DG DT XD TRUOC THUE" nó không copy công thức (công thức gốc là hàng 10). Nếu tìm 2 mã hiệu trở lên thì nó mới copy.
 
Upvote 0
File bài số 5 của anh Ba Tê kìa anh, anh Ba Tê đã viết cho em code ở sheet "DG DT XD TRUOC THUE" có Sub LUXUBU. File này đúng yêu cầu của em nhưng nó có 1 lỗi là nếu sheet TLuong DT chỉ tra 1 mã hiệu thì qua sheet "DG DT XD TRUOC THUE" nó không copy công thức (công thức gốc là hàng 10). Nếu tìm 2 mã hiệu trở lên thì nó mới copy.

À, bây giờ mình mới hiểu nhưng thắc mắc và đề nghị:
- Sao không có cột STT?
- Dù muốn hay không thì Sheet "DG DT XD TRUOC THUE" cũng phải là công thức chớ không nên là giá trị, để khi ta chỉnh sửa nội dung công việc, định mức ... bên Sheet "TLuong DT" thì Sheet "DG DT XD TRUOC THUE" nó tự nhảy theo, không phải lúc nào cũng để nguyên tên CV và định mức, giá vật tư ...
- Bạn không được đặt tên sheet bằng TV có dấu, nhiều khi code không hiểu.
- ...
Bạn nghiên cứu đi, có gì mai mọi người giúp tiếp.
 
Lần chỉnh sửa cuối:
Upvote 0
À, bây giờ mình mới hiểu nhưng thắc mắc và đề nghị:
- Sao không có cột STT?
- Dù muốn hay không thì Sheet "DG DT XD TRUOC THUE" cũng phải là công thức chớ không nên là giá trị, để khi ta chỉnh sửa nội dung công việc, định mức ... bên Sheet "TLuong DT" thì Sheet "DG DT XD TRUOC THUE" nó tự nhảy theo, không phải lúc nào cũng để nguyên tên CV và định mức, giá vật tư ...
- Bạn không được đặt tên sheet bằng TV có dấu, nhiều khi code không hiểu.
- ...
Bạn nghiên cứu đi, có gì mai mọi người giúp tiếp.
- Thứ nhất là em thấy không cần số thứ tự .
- Thứ 2 là với code của bác Ba Tê thì nếu có thay đổi định mức, công việc, giá vật tư .... thì chỉ cần bấm qua sheet nào đó và bấm lại sheet DG DT TRUOC THUE thì nó tự cập nhập (đã test thử). Em cũng định nhờ mọi người copy luôn công thức để nếu có đưa xếp kiểm tra thì đỡ phải hỏi lại số này đâu ra --=0.
- Thứ 3 là chỉ có tên sheet Trang chủ là em đặt tiếng việt (sheet này không đụng đến code nên ko sao)
 
Upvote 0
Em có chỉnh sửa thủ công theo code bài số 5:
Public Sub TRUOCTHUE()
On Error Resume Next
Application.Calculation = xlCalculationManual
.....
sArr = .Range(.[A9], .[A65000].End(xlUp)).Value
...
thì chạy không báo lỗi nữa nhưng bên sheet DGDTTRUOCTHUE em phải để trống thêm 1 hàng A11 nữa (hàng A10 là hàng công thức mẫu), có cách nào sửa code mà không cần để trống hàng A11 không mà code vẫn chạy đúng với 1 mã hiệu không?
+ File còn 2 sheet làm cũng tương tự như thế nên e lấy code bài 5 chế 1 tí, nhưng em không hiểu khi chế ở sheet GT DT CPXD theo đúng công thức thì giá trị vị trí E11 sheet "GT DT CPXD" sẽ = S13 sheet "DG DTTRUOCTHUE" (nhưng đàng này nó lại lấy giá trị cột S15). Vậy em sẽ chỉnh sửa thế nào để nó lấy giá trị đúng.
http://www.mediafire.com/?8bwdd0y3odo3jbd
 
Upvote 0
Em có chỉnh sửa thủ công theo code bài số 5:
Public Sub TRUOCTHUE()
On Error Resume Next
Application.Calculation = xlCalculationManual
.....
sArr = .Range(.[A9], .[A65000].End(xlUp)).Value
...
thì chạy không báo lỗi nữa nhưng bên sheet DGDTTRUOCTHUE em phải để trống thêm 1 hàng A11 nữa (hàng A10 là hàng công thức mẫu), có cách nào sửa code mà không cần để trống hàng A11 không mà code vẫn chạy đúng với 1 mã hiệu không?
+ File còn 2 sheet làm cũng tương tự như thế nên e lấy code bài 5 chế 1 tí, nhưng em không hiểu khi chế ở sheet GT DT CPXD theo đúng công thức thì giá trị vị trí E11 sheet "GT DT CPXD" sẽ = S13 sheet "DG DTTRUOCTHUE" (nhưng đàng này nó lại lấy giá trị cột S15). Vậy em sẽ chỉnh sửa thế nào để nó lấy giá trị đúng.
http://www.mediafire.com/?8bwdd0y3odo3jbd
Thay code ở bài #5 thành code này thử xem.
PHP:
Public Sub LUXUBU()
Application.Calculation = xlCalculationManual
Dim sArr(), dArr(), Arr(), I As Long, K As Long, J As Long
Arr = Sheets("DG DT XD TRUOC THUE").[A10:S10].FormulaR1C1
With Sheets("TLuong DT")
    sArr = .Range(.[A9], .[A65000].End(xlUp)).Resize(, 3).Value
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 19)
For I = 1 To UBound(sArr, 1)
    If sArr(I, 1) <> "" Then
        K = K + 1
        For J = 1 To 3
            dArr(K, J) = sArr(I, J)
        Next J
        If sArr(I, 3) <> "" Then
            For J = 4 To 19
                dArr(K, J) = Arr(1, J)
            Next J
        End If
    End If
Next I
With Sheets("DG DT XD TRUOC THUE")
    .[A11:S1000].ClearContents
    If K Then
    .[A11].Resize(K, 19).Value = dArr
    .[A11].Resize(K, 19).Value = .[A11].Resize(K, 19).Value '' Bo Cong thuc
    End If
End With
Application.Calculation = xlCalculationAutomatic
End Sub
Nếu muốn lấy công thức luôn thì xoá dòng này đi
PHP:
.[A11].Resize(K, 19).Value = .[A11].Resize(K, 19).Value '' Bo Cong thuc
 
Lần chỉnh sửa cuối:
Upvote 0
-\\/. oke rồi anh. Em còn 2 sheet trên file bài 15, mong anh giúp giùm em 2 sheet đó luôn. Em cảm ơn nhiều. Cách làm cũng giống như sheet DGDTTRUOCTHUE. Em cảm ơn nhiều.
 
Upvote 0
-\\/. oke rồi anh. Em còn 2 sheet trên file bài 15, mong anh giúp giùm em 2 sheet đó luôn. Em cảm ơn nhiều. Cách làm cũng giống như sheet DGDTTRUOCTHUE. Em cảm ơn nhiều.
Đã biết là cách làm tương tự thì bạn thử làm đi, khi nào không được hãy nhờ người khác.
 
Upvote 0
Bên trên:
Arr = Sheets("GIA TRI DT CP XD").[A9:L9].FormulaR1C1
Như vậy mảng Arr chỉ có 12 phần tử.
Bạn phải thây tất cả các số 19 trong code thành 12
 
Upvote 0
Dạ nãy em quên sửa. Đã chỉnh sửa nhưng mà nó lấy giá trị không đúng anh ơi.
 
Upvote 0
Bên trên:
Arr = Sheets("GIA TRI DT CP XD").[A9:L9].FormulaR1C1
Như vậy mảng Arr chỉ có 12 phần tử.
Bạn phải thây tất cả các số 19 trong code thành 12

Đã biết là cách làm tương tự thì bạn thử làm đi, khi nào không được hãy nhờ người khác.

Thì bạn ấy chưa hiểu nhiều về mảng nên có khi thay lại hỏng code của Thầy. Thầy hướng dẫn cụ thể thêm cho bạn ấy mới sửa được code.

(Dạo này thầy giáo em khó tính ghê cơ. Không hiểu thầy có "chiện" gì buồn bực không mà mấy ngày nay suốt ngày mình bị cốc đầu )
 
Upvote 0
Dạ oke rồi anh, sheet cuối cùng em cũng dựa code trên làm được rồi. Cũng mong đững xảy ra lỗi khi chạy code -\\/.. Cho em hỏi chỗ này 1 tí: IF($C9="";"";E9*F$8+E9) , thì cụm từ C9="";"" có phải nghĩa của nó là vị trí C9 là trống không?
 
Upvote 0

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

Back
Top Bottom