Kết quả 1 đến 10 của 10

Chủ đề: cao thủ VBA nào giúp em làm file excel chạy nhanh hơn với.

  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    cao thủ VBA nào giúp em làm file excel chạy nhanh hơn với.

    như tiêu đề cao thủ vba nào giúp em làm file em đính kèm chạy nhanh hơn được không. em mới hoàn thành xong vẫn chưa hoàn chỉnh mà nó chạy chậm mỗi khi nhấn vào nút lệnh quá.
    ví dụ như trong file mình gửi ở tại sheet DC gần sheet MENU, khi nhấn vào nút lọc thì chờ tầm 10s sau mới chạy xong.
    mong được hồi âm sớm từ mọi người.
    http://www.mediafire.com/download/bk...%C6%A1+kcs.rar

  2. #2
    hungvietuc1 Guest
    mấy câu hỏi của mình khó lắm hay sao mà gửi mấy bài rồi không thấy trả lời gì hết vậy ta.

  3. #3
    Mynamekiller Guest
    Mừng cụ tái xuất giang hồ sau bao năm bôn tẩu! Tiểu tử bọn iem đợi bác mãi mãi! Giờ mới lại được diện kiến!

  4. #4
    namplh Guest
    File không mở được!
    Hay bạn chép cái macro nằm dưới nút lệnh đó lên diễn đàn đi!


  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi langtuchungtinh360
    mấy câu hỏi của mình khó lắm hay sao mà gửi mấy bài rồi không thấy trả lời gì hết vậy ta.
    với giọng điệu khích tướng của bác cao thủ thực sự người ta cũng chẳng thèm giúp bác vì cái thái độ và ngôn từ của bác.
    vba của bác chủ yếu là reco nhìn như mớ bòng bong bác thêm đoạn mã sau

    Mã nguồn PHP:
    Sub TCBT()Application.ScreenUpdating = False '=> thêm vào đầu'các lệnh thực thi ...Application.ScreenUpdating = True '=> thêm vào cuốiEnd Sub  
    thì chương trình nó sẽ nhanh lên khá nhiều, còn việc tối ưu code cho nó chạy nhanh hơn nữa thì bác phải rã nhỏ file ra thành từng phần, bác cảm thấy phần nào nó quan trọng và chiếm thời gian lâu nhất thì đem lên mà hỏi, chẳng ai dỗi hơi đến mức đọc hết file của bác rồi ngồi tối ưu lại code cho bác.

  6. #6
    muamuathu12 Guest
    Trích dẫn Gửi bởi langtuchungtinh360
    mấy câu hỏi của mình khó lắm hay sao mà gửi mấy bài rồi không thấy trả lời gì hết vậy ta.
    có thiệt chứ, nhìn code bạn như đám rừng
    có thể cải thiện chút ít như sau:
    bằng cách ép màn hình ko bị giựt giựt

    Mã:
    Application.ScreenUpdating = False
    .......................co của bạn
    Application.ScreenUpdating = True
    cái thứ 2 , bỏ đia mấy cái select
    ví dụ code của bạn là

    Mã:
    Range("A16:Y34").Select
        Selection.ClearContents
    sửa nó thành

    Mã:
    Range("A16:Y34").ClearContents
    chừng nào bạn thành thạo, bạn chuyển nó qua mảng thì thấy tốc độ nó sẻ khác biết rỏ rệt
    ============
    ví dụ như vậy

    Mã:
    Sub DC()
    'gop o lai
    On Error Resume Next
    Application.ScreenUpdating = False
    Application.Calculation = xlManual
        
        Range("B35").Comment.Shape.Delete
        Range("B35:Z42").UnMerge
    'LOC BANG TREN
        Range("A16:Y34").ClearContents
        Range("AA16:AU38").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            Range("DC!AB13:AB14"), CopyToRange:=Range("A16"), Unique:=False
    ' LOC BANG DUOI
        With Range("A43:Z173")
            .ClearContents
            .Borders.LineStyle = xlNone
            .Interior.Pattern = xlNone
            .Interior.TintAndShade = 0
            .Interior.PatternTintAndShade = 0
            .Font.ColorIndex = xlAutomatic
            .Font.TintAndShade = 0
        End With
        Range("AB55:BA250").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _
            Range("DC!AA54:AA55"), CopyToRange:=Range("A43"), Unique:=False
    'chen hinh
        Range("B35:Z42").Merge
        Range("Z42").Activate
        
    Application.ScreenUpdating = True
    Application.Calculation = xlAutomatic
    On Error GoTo 0
    End Sub

  7. #7
    anhnt227 Guest
    Chào langtuchungtinh360,
    Tôi có một vài góp ý cho tập tin và code của bạn.
    1, Cách đặt tên: Bạn hãy nhìn vào cửa sổ sau





    Bạn sẽ cảm thấy như thế nào?
    _ Không nên đặt tên tiếng việt có dấu. Đây là lỗi mà nhiều bạn mới bước vào con đường code thường gặp phải. Trên diễn đàn cũng có nhiều bài viết nói về vấn đề này.
    _ Nên đặt tên theo dạng: TrangTinh01
    _ Ngoài ra tên module cũng nên đặt tên theo tiếp đầu ngữ. Ví dụ: mMain (tức là module chính, hoặc tiếng việt là mChinh)

    2, Cách sắp xếp code:
    _ Nên đưa các code có chức năng tương tự nhau vào một module. Ví dụ module tôi upload lên theo bài viết này (chú ý: tôi đã chuyển qua tập tin text .txt)


    3, Nên tìm trước khi hỏi và đặt câu hỏi như thế nào để có người sẽ trợ giúp cho bạn
    _ Nên tìm hiểu hoặc tham khảo các code đã có sẵn trên diễn đàn.
    http://www.giaiphapexcel.com/forum/f...ADp-tr%C3%ACnh
    _ Để thực hiện nhanh bạn tham khảo code sau: (cũng đã có trong thư viện code --> điều này chứng tỏ bạn chẳng tham khảo hoặc tìm kiếm trước khi hỏi)
    http://www.giaiphapexcel.com/forum/s...7a-b%E1%BA%A1n

    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shCore.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shAutoloader.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushAppleScript.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushAS3.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushBash.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushColdFusion.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushCpp.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushCSharp.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushCss.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushDelphi.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushDiff.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushErlang.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushGroovy.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushJava.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushJavaFx.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushJScript.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPerl.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPhp.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPlain.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPowerShell.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPython.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushRuby.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushSass.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushScala.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushSql.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushVb.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushXml.js"></script>

    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shAutoloader.js"></script>

    <link type="text/css" rel="stylesheet" href="/forum/vctinh_xcode/styles/shCoreDefault.css">
    <link type="text/css" rel="Stylesheet" href="/forum/vctinh_xcode/styles/shThemeDefault.css">

    <pre class="brush: vb; toolbar: false;">
    Option Explicit
    Public glb_origCalculationMode As Integer
    Sub SpeedOn(Optional StatusBarMsg As String = "Running macro...")
    ' Chú ý: ở đây các bạn có thể thay đổi thông báo
    ' bằng cách truyền vào chuổi UNICODE vào biến StatusBarMsg
    glb_origCalculationMode = Application.Calculation
    With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    .EnableEvents = False
    .DisplayAlerts = False
    .Cursor = xlWait
    .StatusBar = StatusBarMsg
    .EnableCancelKey = xlErrorHandler
    End With
    End Sub
    Sub SpeedOff()
    With Application
    .Calculation = glb_origCalculationMode
    .ScreenUpdating = True
    .EnableEvents = True
    .DisplayAlerts = True
    .CalculateBeforeSave = True
    .Cursor = xlDefault
    .StatusBar = False
    .EnableCancelKey = xlInterrupt
    End With
    End Sub
    Sub FillSlow()
    Dim c As Range, r As Range, startTime, EndTime
    Set r = Range("A1:C1000")
    r.ClearContents
    startTime = Timer
    For Each c In r
    c.Select
    c.Formula = "=Row()*Column()"
    Next c
    DoEvents
    EndTime = Timer
    MsgBox "Total Time: " & EndTime - startTime
    [A1].Select
    End Sub
    Sub FillFast()
    Dim c As Range, r As Range, startTime, EndTime
    Set r = Range("A1:C1000")
    r.ClearContents
    startTime = Timer
    On Error Goto ResetSpeed
    SpeedOn
    For Each c In r
    c.Select
    c.Formula = "=Row()*Column()"
    Next c
    DoEvents
    EndTime = Timer
    MsgBox "Total Time: " & EndTime - startTime
    [A1].Select
    ResetSpeed:
    SpeedOff
    End Sub
    </pre>

    <script type="text/javascript">
    function path()
    {
    var args = arguments,
    result = []
    ;

    for(var i = 0; i < args.length; i++)
    result.push(args[i].replace('@', '/forum/vctinh_xcode/scripts/'));
    return result;
    };

    SyntaxHighlighter.autoloader.apply(null, path(
    'applescript @shBrushAppleScript.js',
    'actionscript3 as3 @shBrushAS3.js',
    'ahk autohotkey @shBrushAhk.js',
    'asm x86 @shBrushAsm.js',
    'bash shell @shBrushBash.js',
    'coldfusion cf @shBrushColdFusion.js',
    'cpp c @shBrushCpp.js',
    'c# c-sharp csharp @shBrushCSharp.js',
    'css @shBrushCss.js',
    'delphi pascal @shBrushDelphi.js',
    'diff patch pas @shBrushDiff.js',
    'erl erlang @shBrushErlang.js',
    'groovy @shBrushGroovy.js',
    'java @shBrushJava.js',
    'jfx javafx @shBrushJavaFX.js',
    'js jscript javascript @shBrushJScript.js',
    'perl pl @shBrushPerl.js',
    'php @shBrushPhp.js',
    'text plain @shBrushPlain.js',
    'py python @shBrushPython.js',
    'ruby rails ror rb @shBrushRuby.js',
    'sass scss @shBrushSass.js',
    'scala @shBrushScala.js',
    'sql SQL @shBrushSql.js',
    'vb vbnet vba @shBrushVb.js',
    'xml xhtml xslt html @shBrushXml.js'
    ));
    SyntaxHighlighter.config.stripBrs = true;
    SyntaxHighlighter.all();
    </script>

    Bạn chỉ việc gọi tên thủ tục SpeedOn trước khi thực hiện và SpeedOff sau khi thực hiện.

    Lê Văn Duyệt

  8. #8
    nhanhmuavn201 Guest
    [QUOTE="let'gâugâu"]có thiệt chứ, nhìn code bạn như đám rừng
    có thể cải thiện chút ít như sau:
    Bằng cách ép màn hình ko bị giựt giựt

    Mã:
    range("a16:y34").clearcontents
    chừng nào bạn thành thạo, bạn chuyển nó qua mảng thì thấy tốc độ nó sẻ khác biết rỏ rệt
    ============
    ví dụ như vậy

    Mã:
    sub dc()
    'gop o lai
    on error resume next
    application.screenupdating = false
    application.calculation = xlmanual
        
        range("b35").comment.shape.delete
        range("b35:z42").unmerge
    'loc bang tren
        range("a16:y34").clearcontents
        range("aa16:au38").advancedfilter action:=xlfiltercopy, criteriarange:= _
            range("dc!ab13:ab14"), copytorange:=range("a16"), unique:=false
    ' loc bang duoi
        with range("a43:z173")
            .clearcontents
            .borders.linestyle = xlnone
            .interior.pattern = xlnone
            .interior.tintandshade = 0
            .interior.patterntintandshade = 0
            .font.colorindex = xlautomatic
            .font.tintandshade = 0
        end with
        range("ab55:ba250").advancedfilter action:=xlfiltercopy, criteriarange:= _
            range("dc!aa54:aa55"), copytorange:=range("a43"), unique:=false
    'chen hinh
        range("b35:z42").merge
        range("z42").activate
        
    application.screenupdating = true
    application.calculation = xlautomatic
    on error goto 0
    end sub
    </div>

    </div>
    </div>
    </div>
    cảm ơn bác. Em mới bít dùng macro à. Chứ đã biết gì về vba đâu. Em biết cái nguyên nhân chạy lâu là do mỗi khi nhấn f8 chạy từ từ thì thấy nó cứ chạy cái thao tác chèn ảnh với fix chiều cao dòng hoài mà không biết cách khắc phục. để đêm nay ngâm cú code của bác rồi sửa mấy cái kia luôn.

  9. #9
    phuongtrandinh Guest
    Trích dẫn Gửi bởi levanduyet
    chào langtuchungtinh360,
    tôi có một vài góp ý cho tập tin và code của bạn.
    1, cách đặt tên: Bạn hãy nhìn vào cửa sổ sau





    bạn sẽ cảm thấy như thế nào?
    _ không nên đặt tên tiếng việt có dấu. đây là lỗi mà nhiều bạn mới bước vào con đường code thường gặp phải. Trên diễn đàn cũng có nhiều bài viết nói về vấn đề này.
    _ nên đặt tên theo dạng: trangtinh01
    _ ngoài ra tên module cũng nên đặt tên theo tiếp đầu ngữ. Ví dụ: mmain (tức là module chính, hoặc tiếng việt là mchinh)

    2, cách sắp xếp code:
    _ nên đưa các code có chức năng tương tự nhau vào một module. Ví dụ module tôi upload lên theo bài viết này (chú ý: Tôi đã chuyển qua tập tin text .txt)


    3, nên tìm trước khi hỏi và đặt câu hỏi như thế nào để có người sẽ trợ giúp cho bạn
    _ nên tìm hiểu hoặc tham khảo các code đã có sẵn trên diễn đàn.
    http://www.giaiphapexcel.com/forum/f...adp-tr%c3%acnh
    _ để thực hiện nhanh bạn tham khảo code sau: (cũng đã có trong thư viện code --> điều này chứng tỏ bạn chẳng tham khảo hoặc tìm kiếm trước khi hỏi)
    http://www.giaiphapexcel.com/forum/s...7a-b%e1%ba%a1n

    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shCore.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shAutoloader.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushAppleScript.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushAS3.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushBash.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushColdFusion.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushCpp.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushCSharp.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushCss.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushDelphi.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushDiff.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushErlang.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushGroovy.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushJava.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushJavaFx.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushJScript.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPerl.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPhp.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPlain.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPowerShell.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushPython.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushRuby.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushSass.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushScala.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushSql.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushVb.js"></script>
    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shBrushXml.js"></script>

    <script type="text/javascript" src="/forum/vctinh_xcode/scripts/shAutoloader.js"></script>

    <link type="text/css" rel="stylesheet" href="/forum/vctinh_xcode/styles/shCoreDefault.css">
    <link type="text/css" rel="Stylesheet" href="/forum/vctinh_xcode/styles/shThemeDefault.css">

    <pre class="brush: vb; toolbar: false;">
    option explicit
    public glb_origcalculationmode as integer
    sub speedon(optional statusbarmsg as string = "running macro...")
    ' chú ý: ở đây các bạn có thể thay đổi thông báo
    ' bằng cách truyền vào chuổi unicode vào biến statusbarmsg
    glb_origcalculationmode = application.calculation
    with application
    .calculation = xlcalculationmanual
    .screenupdating = false
    .enableevents = false
    .displayalerts = false
    .cursor = xlwait
    .statusbar = statusbarmsg
    .enablecancelkey = xlerrorhandler
    end with
    end sub
    sub speedoff()
    with application
    .calculation = glb_origcalculationmode
    .screenupdating = true
    .enableevents = true
    .displayalerts = true
    .calculatebeforesave = true
    .cursor = xldefault
    .statusbar = false
    .enablecancelkey = xlinterrupt
    end with
    end sub
    sub fillslow()
    dim c as range, r as range, starttime, endtime
    set r = range("a1:c1000")
    r.clearcontents
    starttime = timer
    for each c in r
    c.select
    c.formula = "=row()*column()"
    next c
    doevents
    endtime = timer
    msgbox "total time: " & endtime - starttime
    [a1].select
    end sub
    sub fillfast()
    dim c as range, r as range, starttime, endtime
    set r = range("a1:c1000")
    r.clearcontents
    starttime = timer
    on error goto resetspeed
    speedon
    for each c in r
    c.select
    c.formula = "=row()*column()"
    next c
    doevents
    endtime = timer
    msgbox "total time: " & endtime - starttime
    [a1].select
    resetspeed:
    Speedoff
    end sub
    </pre>

    <script type="text/javascript">
    function path()
    {
    var args = arguments,
    result = []
    ;

    for(var i = 0; i < args.length; i++)
    result.push(args[i].replace('@', '/forum/vctinh_xcode/scripts/'));
    return result;
    };

    SyntaxHighlighter.autoloader.apply(null, path(
    'applescript @shBrushAppleScript.js',
    'actionscript3 as3 @shBrushAS3.js',
    'ahk autohotkey @shBrushAhk.js',
    'asm x86 @shBrushAsm.js',
    'bash shell @shBrushBash.js',
    'coldfusion cf @shBrushColdFusion.js',
    'cpp c @shBrushCpp.js',
    'c# c-sharp csharp @shBrushCSharp.js',
    'css @shBrushCss.js',
    'delphi pascal @shBrushDelphi.js',
    'diff patch pas @shBrushDiff.js',
    'erl erlang @shBrushErlang.js',
    'groovy @shBrushGroovy.js',
    'java @shBrushJava.js',
    'jfx javafx @shBrushJavaFX.js',
    'js jscript javascript @shBrushJScript.js',
    'perl pl @shBrushPerl.js',
    'php @shBrushPhp.js',
    'text plain @shBrushPlain.js',
    'py python @shBrushPython.js',
    'ruby rails ror rb @shBrushRuby.js',
    'sass scss @shBrushSass.js',
    'scala @shBrushScala.js',
    'sql SQL @shBrushSql.js',
    'vb vbnet vba @shBrushVb.js',
    'xml xhtml xslt html @shBrushXml.js'
    ));
    SyntaxHighlighter.config.stripBrs = true;
    SyntaxHighlighter.all();
    </script>

    bạn chỉ việc gọi tên thủ tục speedon trước khi thực hiện và speedoff sau khi thực hiện.

    Lê văn duyệt
    cảm ơn bác. Nhưng em ngu tiếng anh. Em dùng office tiếng việt nên nó hiện như vậy em biết sao. Em tìm mãi mới đc có 2 cái code chèn ảnh theo điều kiện với fix chiều cao của những ô gộp lại đấy. Mấy cái kia biết tìm kiếm bằng cách nào đâu bác. Nói thật là cái file như vậy em cần giúp gì thì nêu tiêu đề thế thôi chứ biết sao giờ. File em nặng vs chạy chậm thì em cần giúp chạy nhanh lên đó bác. Vba thì em không biết nên đành dùng cách ngu vậy. Nên code nó nhiều vs tùm lum như vậy

  10. #10
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Chào bạn langtuchungtinh360,

    Tôi thấy tập tin bạn đã tốt rồi. Bạn chỉ cần chỉnh sửa theo góp ý của tôi là được.

    Lê Văn Duyệt

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •