Chuyên đề giải đáp những thắc mắc về code VBA

Liên hệ QC

maytinhvp01

Thành viên thường trực
Tham gia
27/7/13
Bài viết
390
Được thích
179
Mình muốn nhờ giải thich câu lệnh " If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c) "
trong ví du:
Public Function LonNhat(Ran As Range)
Dim max As Double, v As Integer, d As Integer, c As Integer
max = Ran.Cells(1, 1)
For d = 1 To Ran.Rows.Count
For c = 1 To Ran.Columns.Count
If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c)
Next c
Next d
v = Tim(max, Ran)
LonNhat = max
End Function
-------------------------------------------------------
[INFO1]Thông báo:
Vì topic này:
http://www.giaiphapexcel.com/forum/...ải-thích-các-code-đề-nghị-các-bạn-gửi-vào-đây
đã quá dài nên BQT đóng lại.
Nay tôi mở topic mới với cùng chủ đề: GIẢI THÍCH NHỮNG THẮC MẮC VỀ CODE
Các bạn nếu có nhu cầu giải thích code, vui lòng post tại đây nhé
NDU96081631

[/INFO1]
 
Chỉnh sửa lần cuối bởi điều hành viên:
Ai chỉ mình dòng code để thay đổi chiều cao tất cả các dòng thuộc vùng đã select với
Ví dụ chiều cao mỗi dòng tăng lên 2 đơn vị
 
Upvote 0
Select nhiều dòng thì nó lấy chiều cao dòng trên cùng làm chuẩn, sao lại không có tác dụng gì?
Vầy mới được Thảo ơi

Selection.RowHeight = Cells(Selection.Row, 1).RowHeight + 2

Theo kinh nghiệm thì khi mình chọn 2 dòng không cùng độ cao thì code nó ngu ngu sao ấy
 
Upvote 0
Mã:
Sub tinhtong()
Dim total, soluong, i As Long, x As Long, y As Long, a As Long
soluong = Sheet6.Range("f7:bz604").Value
For i = 1 To 1000
    For x = 1 To 100
    y = y + soluong(i, x).Value
    Next x
    total(a, 1) = y
Next i
Sheet6.Range("e7:e1000").Value = total(y, 1)

End Sub
Các bác xem giúp em các tính tổng trong 1 mảng với ạ, em làm mãi vẫn chưa được.
 
Upvote 0
Mã:
Sub tinhtong()
Dim total, soluong, i As Long, x As Long, y As Long, a As Long
soluong = Sheet6.Range("f7:bz604").Value
For i = 1 To 1000
    For x = 1 To 100
    y = y + soluong(i, x).Value
    Next x
    total(a, 1) = y
Next i
Sheet6.Range("e7:e1000").Value = total(y, 1)

End Sub
Các bác xem giúp em các tính tổng trong 1 mảng với ạ, em làm mãi vẫn chưa được.
Cái total của bạn là mảng hả.Mà biến a của bạn là gì.
 
Upvote 0
Có phải do dùng hàm "thanglv" trong module em làm ra xử lý lệnh qua nhiều dòng quá nó làm chậm file đi phải không ạ?
File gốc chậm do 2 nguyên nhân:
- Hàm tự tạo bằng VBA thường chạy chậm hơn hàm của Excel
- Hàm "thanglv" sử dụng cho nhiều Ô, khi có sự thay đổi của file sẽ tính lại giá trị của hàm, nên chạy rất nhiều lần làm chậm file, dùng Ô B1 lưu trữ giá trị nên chỉ chạy 1 lần.
 
Upvote 0
Tối kỵ trong lập trình là dùng biến mà chưa khởi tạo trị mặc định ban đầu cho nó. Ông VBA này lanh chanh quá, làm người code dễ dãi, có thói quen xấu theo.
Tui đọc mấy cái code mà thiếu option explicit và thiếu khởi tạo biến thì rất khó chịu, xóa liền.
 
Upvote 0
Xin các bác viết code giúp em ạ,
 

File đính kèm

  • Book1.xlsm
    161.8 KB · Đọc: 11
Upvote 0
Xin các bác viết code giúp em ạ,
"Quăng" file lên cũng phải giải thích làm cái gì, trên cột nào... chứ thế này thì chắc phải hỏi anh Google xem code bạn viết là muốn làm cái gì.
Nếu anh Google trả lời được chắc sẽ có người giúp bạn.
 
Upvote 0
"Quăng" file lên cũng phải giải thích làm cái gì, trên cột nào... chứ thế này thì chắc phải hỏi anh Google xem code bạn viết là muốn làm cái gì.
Nếu anh Google trả lời được chắc sẽ có người giúp bạn.
Dạ, em muốn tính tổng cho các dòng từ vùng "f7:bz604" kết quả, hiện thị tại "e7:e604, mong bác giúp em các viết code cho mảng ạ. Em cảm ơn!
 
Upvote 0
Dạ, em muốn tính tổng cho các dòng từ vùng "f7:bz604" kết quả, hiện thị tại "e7:e604, mong bác giúp em các viết code cho mảng ạ. Em cảm ơn!
Dùng tạm cái này xem.
PHP:
Option Explicit

Public Sub sGpe()
Dim sArr(), dArr(), I As Long, J As Long, R As Long, Col As Long
With Sheets("TINH NVL")
    Col = .Range("XFD5").End(xlToLeft).Column - 5
    R = .Range("C100000").End(xlUp).Row - 6
    sArr = .Range("F7").Resize(R, Col).Value
    R = UBound(sArr)
    ReDim dArr(1 To R, 1 To 1)
    For I = 1 To R
        For J = 1 To Col
            dArr(I, 1) = dArr(I, 1) + sArr(I, J)
        Next J
    Next I
    .Range("E7").Resize(R) = dArr
End With
End Sub
 
Upvote 0
Web KT
Back
Top Bottom