Trang 1/87 1 2 3 4 5 11 51 ... cuốicuối
Hiển thị kết quả tìm kiếm từ 1 đến 10 trên tổng số: 867

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

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

    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
    -------------------------------------------------------
      Thông tin:
    Thông báo:
    Vì topic này:
    http://www.giaiphapexcel.com/forum/s...-%C4%91%C3%A2y
    đã 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

    thay đổi nội dung bởi: ndu96081631, 31-07-13 lúc 12:25 PM

  2. Đây làm một hàm để so sánh số lớn nhất trong một vùng dữ liệu (Range) nào đó.

    Nó căn cứ từ ô đầu tiên của vùng [ Ran.Cells(1, 1) ] làm chuẩn để so sánh với các ô trong vùng đó.

    Với câu lệnh này:

    If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c)

    Với d đại diện cho hàng và c đại diện cho cột, khi vòng lặp chạy lần lượt đến mỗi ô trong Vùng tham chiếu, nếu gặp ô có giá trị lớn hơn giá trị ban đầu max = Ran.Cells(1, 1) thì max sẽ nhận giá trị tại ô đó rồi tiếp tục so sánh sang ô khác, còn không thì nó vẫn giữ giá trị lớn nhất.

    =============================
    Cái mà tôi không hiểu gì trong hàm đó là cái này:

    v = Tim(max, Ran)

    Chả biết nó dùng để làm gì nữa!
    thay đổi nội dung bởi: Hoàng Trọng Nghĩa, 31-07-13 lúc 12:16 PM

  3. Trích Nguyên văn bởi maytinhvp01 View Post
    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
    Anh Hoàng Trọng Nghĩa đã giải thích cho bạn về Rows.count,Columns.count và câu lệnh if.... then ở trên rồi, ở đây mình muốn hỏi thêm :
    Cái V=Tim(max,Ran) để làm gì vậy bạn, vì sau khi function Lonnhat kết thúc,biến V sẽ được giải phóng ra khỏi bộ nhớ !
    Còn nếu tìm giá trị max trong 1 vùng mình sửa lại code cho bạn dễ hiểu như sau :
    PHP Code:
    Public Function Lonnhat(Ran As Range) As Double    
    Dim mycell 
    As Range       
     
    For Each mycell In Ran           
         
    If Val(mycell) > Lonnhat Then Lonnhat mycell       
     Next
    End 
    Function 
    thay đổi nội dung bởi: hungpecc1, 31-07-13 lúc 12:23 PM

  4. Trích Nguyên văn bởi hungpecc1 View Post
    Cái V=Tim(max,Ran) để làm gì vậy bạn, vì sau khi function Lonnhat kết thúc,biến V sẽ được giải phóng ra khỏi bộ nhớ !
    Còn nếu tìm giá trị max trong 1 vùng mình sửa lại code cho bạn dễ hiểu như sau :
    PHP Code:
    Public Function Lonnhat(Ran As Range) As Double    
    Dim mycell 
    As Range       
     
    For Each mycell In Ran           
         
    If Val(mycell) > Lonnhat Then Lonnhat mycell       
     Next
    End 
    Function 

    Giả sử vùng có 3 ô: A1:A3

    A1 là trống, A2 là -1 và A3 là -2 vậy theo bạn, ô nào là Max?

    Thử làm với hàm bạn, ra giá trị là bao nhiêu?

  5. Trích Nguyên văn bởi Hoàng Trọng Nghĩa View Post
    Giả sử vùng có 3 ô: A1:A3

    A1 là trống, A2 là -1 và A3 là -2 vậy theo bạn, ô nào là Max?

    Thử làm với hàm bạn, ra giá trị là bao nhiêu?
    Lại bị anh Nghĩa "cốc" vào đâu rồi , ^^ quên mất là phải thêm điều kiện và chỉnh sửa tẹo nữa
    Thanks anh !
    thay đổi nội dung bởi: hungpecc1, 31-07-13 lúc 12:32 PM

  6. Trích Nguyên văn bởi hungpecc1 View Post
    Lại bị anh Nghĩa "cốc" vào đâu rồi , ^^ quên mất là phải thêm điều kiện và chỉnh sửa tẹo nữa
    Thanks anh !
    Để học thuật hay làm một việc gì đó ngoài Excel thì mình làm hàm tự tạo MAX, còn không thì cứ dùng MAX trong sheet và WorksheetFunction.Max trong VBA là tốt nhất, tôi nghĩ là vậy.

  7. Trích Nguyên văn bởi Hoàng Trọng Nghĩa View Post
    Để học thuật hay làm một việc gì đó ngoài Excel thì mình làm hàm tự tạo MAX, còn không thì cứ dùng MAX trong sheet và WorksheetFunction.Max trong VBA là tốt nhất, tôi nghĩ là vậy.
    Chính xác là thế. Ta làm trên Excel thì có thể tận dụng những thứ có sẵn của Excel
    Trừ trường hợp ta viết code nhưng dự tính sẽ dùng cho các ứng dụng bên ngoài (VB chẳng hạn) và ta buộc phải viết hàm phục vụ cho riêng ta.
    Đương nhiên ta cũng không thể cố viết làm sao để bì được với MAX của anh Bill (đó là công sức của 1 siêu tập thể mà) ---> Yêu cầu nó phục vụ đúng ý đồ của ta là đủ

  8. #2 ,#3
    v = Tim(max, Ran)
    Là mình gọi thủ tục cho biết vị trí của số lớn nhất trong bảng đã tìm thấy trong bảng bạn a. Nhưng thủ tục đó mình ko đưa vào đây.
    thay đổi nội dung bởi: maytinhvp01, 31-07-13 lúc 04:50 PM Lý do: them người trả lời

  9. Trích Nguyên văn bởi Hoàng Trọng Nghĩa View Post
    Giả sử vùng có 3 ô: A1:A3

    A1 là trống, A2 là -1 và A3 là -2 vậy theo bạn, ô nào là Max?

    Thử làm với hàm bạn, ra giá trị là bao nhiêu?
    cho mình hởi thêm với: Giá trị của "lonnhat" khi bắt đầu chạy vòng lặp for each đầu tiên có giá trị la bao nhiêu vậy ban?
    Có phải ban đầu nó bằng 0 không vây?

  10. Trích Nguyên văn bởi maytinhvp01 View Post
    cho mình hởi thêm với: Giá trị của "lonnhat" khi bắt đầu chạy vòng lặp for each đầu tiên có giá trị la bao nhiêu vậy ban?
    Có phải ban đầu nó bằng 0 không vây?
    Chính xác ban đầu giá trị = 0 , mà vụ này bạn dùng worksheetFunction.Max(ran) là được mà !

    p/s : bạn mới vào diễn đàn, + mới học vba , mình có chút kinh nghiệm học tập chia sẻ như sau :
    *các cụ có câu "học thầy không tày học bạn " <--- bạn cố gắng giao lưu , nhiệt tình , sôi nổi trên GPE,
    * Anh ndu và anh Nghĩa là các thành viên có tên tuổi và số má trên diễn đàn, những bài viết nhận xét ,góp ý của các anh ý đều có giá trị nhất định đấy bạn ah

Trang 1/87 1 2 3 4 5 11 51 ... cuốicuối

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •