Em muốn tìm hiểu về Macros. (1 người xem)

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

nhat chi mai

Thành viên gắn bó
Tham gia
22/11/11
Bài viết
1,832
Được thích
9
Em tham gia diễn đàn cũng được gần 8 tháng rồi nhưng kiến thức thực sự chưa được nhiều lắm+-+-+-+…Bây giờ em muốn tìm hiểu về mục View-->Macros. Em không biết tí gì về mục này và tác dụng của nó để làm gì??? Và sử dụng nó thì làm như thế nào? Mong người giúp đỡ. Em cảm ơn!
 
Em tham gia diễn đàn cũng được gần 8 tháng rồi nhưng kiến thức thực sự chưa được nhiều lắm+-+-+-+…Bây giờ em muốn tìm hiểu về mục View-->Macros. Em không biết tí gì về mục này và tác dụng của nó để làm gì??? Và sử dụng nó thì làm như thế nào? Mong người giúp đỡ. Em cảm ơn!
Như nghĩa tiếng Anh của nó. Đó là xem, tạo và chạy các marco do mình tạo ra
 
Em tham gia diễn đàn cũng được gần 8 tháng rồi nhưng kiến thức thực sự chưa được nhiều lắm+-+-+-+…Bây giờ em muốn tìm hiểu về mục View-->Macros. Em không biết tí gì về mục này và tác dụng của nó để làm gì??? Và sử dụng nó thì làm như thế nào? Mong người giúp đỡ. Em cảm ơn!

Mua 1 cuốn như thế này về đọc sẽ biết
Ðề tài: [URL="http://www.giaiphapexcel.com/forum/showthread.php?22105-Giải-Pháp-Excel-phát-hành-sách-Lập-Trình-VBA-Trong-Excel-(tái-bản-năm-2010-và-2012)"]Giải Pháp Excel phát hành sách "Lập Trình VBA Trong Excel" (tái bản năm 2010 và 2012) [/URL]
 

Anh Hong.Van ơi, em cảm ơn Anh nhiều, nhưng mà cái này em đang chờ 1 người dạy chi tiết đó.hix. Em muốn biết nhanh và học gọi là theo phương pháp giới thiệu, ví dụ cụ thể... nên em mới gửi bài mục "học tập online" mà.hì hì
 

Hay đó Anh Nghĩa....em sẽ nghiên cứu, em chưa đụng tới phần này nhưng thấy mọi người hỏi nhiều mà mình hổng biết cộng thêm với 1 cái nữa có bài cho 1 đoạn code nhưng bảo copy rồi cho nó chạy chịu chết...ôi!(kém lắm +-+-+-+!$@!!)
 
To Vanle
Thôi, đùa cho vui thôi, chứ đây là em hỏi để học tập mà...em sẽ nghiên cứu...

Bạn biết cách ghi macro chưa? Bạn thử ghi một đoạn rồi gửi lên diễn đàn, sau đó bạn nói mục đích ghi của bạn là như vầy, có thể rút gọn được không, rút gọn như thế nào, tại sao phải rút gọn,... thì mới biết được nhiều về cách hoạt động của nó.
 
Bạn muốn học Macro chứng tỏ rằng bạn đang có ý định "vùng vẫy ra ngoài biển cả" (tôi vẫn coi Excel là biển cả và mình chỉ là 1 khách trên bãi tắm - ven bờ). Tôi nghĩ rằng: Người biết về Macro chưa chắc đã biết lập trình nhưng người biết lập trình thì không thể không biết về Macro. "Quy trình" học Macro là: tập ghi ( ghi như thế nào, ghi cái gì ?) -> tập đọc (để hiểu ý nghĩa của các dòng lệnh) -> tập sửa (để biết bỏ cái gì, lấy cái gì đưa vào trong code). Nếu bạn kiên trì thì trong tương lai bạn có thể sẽ trở thành "ngư dân đánh bắt xa bờ". Chúc bạn sớm thành công !
 
Lần chỉnh sửa cuối:
Em làm về điện mà chẳng nhanh hix, vâng!Nếu Anh muốn học thì cùng nghiên cứu luôn, mọi người giúp luôn.

Trong sách đó có phần tự ghi macro và cách ghi như thế nào, bạn cứ nghiên cứu trước rồi hỏi sau, vì bạn như tờ giấy trắng, có nói sau xa bạn cũng chẳng biết gì! Hãy đọc kỹ trong sách phần MACRO bạn nhé.
 
---------
Nói thật nghiên cứu cthức dễ hơn 10 lần nghiên cứu code, để nghiên cứu code thành công chắc miệng bạn lúc nào cũng lẩm bẩm What? Why? ...

Tôi thì cho là NGƯỢC LẠI!
Tôi nghĩ nghiên cứu code dễ hơn công thức. Vấn đề mà ta cảm thấy khó là bước khởi đầu. Nhiều khi không biết bắt đầu từ đâu, "nói" làm sao cho VBA "hiểu" ý mình
VBA hay công thức cùng lắm chỉ là công cụ, còn thuật toán vẫn là của mình thôi (tức những suy luận logic trong đầu ta)
Vậy học VBA là học cái gì? Thật ra cũng chỉ là HỌC CÁCH GIAO TIẾP VỚI MÔI TRƯỜNG VBA ---> Giống như học tiếng Anh ấy! Người Anh bào là RUN, mình gọi là CHẠY thì thằng cha Tây nó chẳng hiểu ta nói cái quỷ gì. Vậy thì phải nói ĐÚNG NGỮ PHÁP ---> Bên VBA gọi là ĐÚNG CÚ PHÁP
Ẹc... Ẹc... Vậy thôi!
 
Em có 1 bài như trong file dùng hàm thì em ok, nhưng VBA em không biết, mặc dù đọc tài liệu phần đầu tiên của file Mr.Nghĩa gửi nhưng vẫn không hiểu được cái gì, em làm như hướng dẫn trong file lưu được cái Macros lấy name là nguyencanh nhưng xong mở ra chẳng thấy nó đâu.
Mà em dùng xecl 2010, sách hướng dẫn là 2003 thì phải, ko có to ol mà thay vào đó là View mới thấy Macros...hướng dẫn cụ thể từng bước hộ em để em hiểu rõ hơn...
(do đầu óc tiếp thu kém mọi người góp ý kiến nói rõ cụ thể).EM cảm ơn!File đính kèm
 

File đính kèm

Em có 1 bài như trong file dùng hàm thì em ok, nhưng VBA em không biết, mặc dù đọc tài liệu phần đầu tiên của file Mr.Nghĩa gửi nhưng vẫn không hiểu được cái gì, em làm như hướng dẫn trong file lưu được cái Macros lấy name là nguyencanh nhưng xong mở ra chẳng thấy nó đâu.
Mà em dùng xecl 2010, sách hướng dẫn là 2003 thì phải, ko có to ol mà thay vào đó là View mới thấy Macros...hướng dẫn cụ thể từng bước hộ em để em hiểu rõ hơn...
(do đầu óc tiếp thu kém mọi người góp ý kiến nói rõ cụ thể).EM cảm ơn!File đính kèm

1> Xác định yêu cầu: Điền giá trị "Đậu" hoặc "Trượt" vào vùng D7:D14
2> Điều kiện ràng buộc: Dựa vào giá trị ở B7:B14 ---> Nếu >=5 thì "Đậu", ngược lại thì "Trượt
--------------
Vậy code sẽ là vòng lập For chạy trên vùng B7:B14, đúng không?
PHP:
Sub Test()
  Dim rCel As Range
  For Each rCel In Range("B7:B14")
    If rCel >= 5 Then
      rCel.Offset(, 2) = "Dau"
    Else
      rCel.Offset(, 2) = "Truot"
    End If
  Next
End Sub
Hoặc
PHP:
Sub Test()
  Dim i As Long
  For i = 7 To 14
    If Cells(i, "B") >= 5 Then
      Cells(i, "D") = "Dau"
    Else
      Cells(i, "D") = "Truot"
    End If
  Next
End Sub
Code viết ở mức đơn giản nhất rồi đấy
 
Có 1 vấn đề em muốn hỏi, nhờ mọi người giúp. Em mượn được cái máy tính về học,phần mềm excel của máy là sd excel 2010 nhưng máy đó phần Macros ấy, nó bị ẩn phần View macros và Record macros nó chỉ sáng mục cuối là use relative referent thôi. Em phải làm thế nào để hiện sáng 2 mục đầu ạ? để thực hiện lệnh
 
Có 1 vấn đề em muốn hỏi, nhờ mọi người giúp. Em mượn được cái máy tính về học,phần mềm excel của máy là sd excel 2010 nhưng máy đó phần Macros ấy, nó bị ẩn phần View macros và Record macros nó chỉ sáng mục cuối là use relative referent thôi. Em phải làm thế nào để hiện sáng 2 mục đầu ạ? để thực hiện lệnh

99% là khi cài đặt bộ Office, máy ấy là cài thiếu phần Visual Basic for Application rồi
Chỉ có cách cho đĩa vào cài bổ sung thôi
 
Cùng là Macro Excel nhưng các câu lệnh trong Excel 2007 - 2010 có nhiều câu khác với Macro Excel 2003. Tôi thấy Macro Excel 2003 đơn giản và dễ hiểu hơn vì vậy bạn nào mới học Macro Excel thì nên tập với Macro Excel 2003. Nghe thì thấy bảo thủ nhưng thú thực khi xem và sửa nội dung Macro 2007 - 2010 thì quả là ngán.
 
Cùng là Macro Excel nhưng các câu lệnh trong Excel 2007 - 2010 có nhiều câu khác với Macro Excel 2003. Tôi thấy Macro Excel 2003 đơn giản và dễ hiểu hơn vì vậy bạn nào mới học Macro Excel thì nên tập với Macro Excel 2003. Nghe thì thấy bảo thủ nhưng thú thực khi xem và sửa nội dung Macro 2007 - 2010 thì quả là ngán.
Nhiều khi viết code trên excel 2003 chạy mượt mà sang 2010 nó báo lỗi hoài đi sửa lại code mờ cả mắt. Trên Excel 2010 nó yêu cầu mọi thứ khai báo phải Clear, thậm chí làm việc ngay với các cells của sheet Active mà vẫn phải khai báo.

@nguyencanh :

Trời ơi, sao lại là vết xe đổ, lời khuyên tốt vậy mà lại là vết xe đổ :((. Rõ ràng là đang đi rất thẳng mà có đổ chút nào đâu.
 
Lần chỉnh sửa cuối:
Cùng là Macro Excel nhưng các câu lệnh trong Excel 2007 - 2010 có nhiều câu khác với Macro Excel 2003. Tôi thấy Macro Excel 2003 đơn giản và dễ hiểu hơn vì vậy bạn nào mới học Macro Excel thì nên tập với Macro Excel 2003. Nghe thì thấy bảo thủ nhưng thú thực khi xem và sửa nội dung Macro 2007 - 2010 thì quả là ngán.

Nhiều khi viết code trên excel 2003 chạy mượt mà sang 2010 nó báo lỗi hoài đi sửa lại code mờ cả mắt. Trên Excel 2010 nó yêu cầu mọi thứ khai báo phải Clear, thậm chí làm việc ngay với các cells của sheet Active mà vẫn phải khai báo.
Dám cá là code viết ở đâu cũng y chang vậy, ngoại trừ những phương thức đã bị loại bỏ ở các version sau này (như FileSearch)...
Còn lại thì không hề có chuyện như anh TrungChinhshoamattroicoi đã nói ---> Mình cũng từng dùng cả 3 version Office mà
Nếu có trục trặc gì khác hơn nữa, vui lòng đưa code (hoặc file) lên đây để chứng mình
 
Dám cá là code viết ở đâu cũng y chang vậy, ngoại trừ những phương thức đã bị loại bỏ ở các version sau này (như FileSearch)...
Còn lại thì không hề có chuyện như anh TrungChinhshoamattroicoi đã nói ---> Mình cũng từng dùng cả 3 version Office mà
Nếu có trục trặc gì khác hơn nữa, vui lòng đưa code (hoặc file) lên đây để chứng mình

Code mình viết vào Macro thì đúng như Ndu nói nhưng Macro máy tự ghi thì có khác nhau (ý tôi muốn nói cái này). Mấy ngày trước tôi có dùng Excel 2010 và thấy như thế nên mới nói còn bây giờ gỡ mất Excel 2010 rồi nên không có cái làm ví dụ. Mà tôi nhớ là trên diễn đàn ndu cũng đã có bài nói về nội dung trong code của Macro 2007 hay 2010 gì đó nhưng tìm không thấy.
 
Anh Trung Chinh nói đúng. Sau đây là đoạn code record được khi sort 1 vùng chọn trước:

PHP:
Sub Macro2010()

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B1:B10") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:C10")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
PHP:
Sub macro2003()
    Selection.Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal

End Sub

Đoạn code ghi bằng 2003 chạy được trong 2007 và 2010, nhưng đoạn code ghi bằng 2010 không chạy được trong 2003, báo lỗi ngay dòng đầu tiên.

Mà rõ ràng là đoạn code 2003 dễ nhớ và có thể tự viết tay được, chỉ dùng vài tham số cần thiết:

PHP:
Sub SortData()
    Range("A1:C15").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlNo
End Sub

hoa còi:
Đoạn code Macro2003() và đoạn code SortData() chạy ngon lành trong 2010, mà không cần khai báo ActiveSheet.Range(...)
 
Lần chỉnh sửa cuối:
Sư phụ đã thử trên máy tính chỉ cài OFFICE 2010 thôi, không cài chung với 2007 và 2003 chưa?
Thực tế là trò đã gặp cái lỗi này vài lần rồi, có test trên máy của 1 người bạn chỉ cài 2010 và bị lỗi code, mặc dù trên 2003 và 2007 chạy vẫn tốt. Máy trò hiện giờ không có 2010 nhưng trò sẽ phải tìm hiểu vấn đề này, chắc chắn là có lỗi chứ không phải tư nhiên trò nghĩ ra nó đâu, hihi!
 
Ví dụ ghi và sửa Macro Excel 2003: Tìm địa chỉ của ô chứa chữ Stt

Máy ghi
Mã:
Sub Macro1()
    MsgBox Cells.Find(What:="Stt", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
        xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True _
        , SearchFormat:=False).Address
End Sub

Sửa lại:
Mã:
Sub Macro2()
    MsgBox Cells.Find("Stt", LookAt:=xlWhole).Address
End Sub
hoặc:
Mã:
Sub Macro2()
   MsgBox Cells.Find("Stt", , , 1).Address
End Sub
 
Lần chỉnh sửa cuối:
Code mình viết vào Macro thì đúng như Ndu nói nhưng Macro máy tự ghi thì có khác nhau (ý tôi muốn nói cái này). Mấy ngày trước tôi có dùng Excel 2010 và thấy như thế nên mới nói còn bây giờ gỡ mất Excel 2010 rồi nên không có cái làm ví dụ. Mà tôi nhớ là trên diễn đàn ndu cũng đã có bài nói về nội dung trong code của Macro 2007 hay 2010 gì đó nhưng tìm không thấy.

Ah... thì đúng rồi!
Nhưng anh vẫn có 1 cái lợi là anh dùng Excel 2003 nhiều rồi, cú pháp chắc cũng nhớ nhiều rồi, vậy cũng đâu đến nỗi cần đến record macro chứ nhỉ?
Nói thiệt như Sort chẳng hạn, viết riết quen tay nên em cứ viết theo kiểu của Excel 2003 và cho vào Excel 2010 vẫn chạy tốt
Mà cho dù là dùng record macro đi nữa, chúng ta cũng phải biết xóa bớt những chổ không cần thiết ---> Cứ xóa bớt và thí nghiệm
Ẹc... Ẹc...
-----------------
Sư phụ đã thử trên máy tính chỉ cài OFFICE 2010 thôi, không cài chung với 2007 và 2003 chưa?
Thực tế là trò đã gặp cái lỗi này vài lần rồi, có test trên máy của 1 người bạn chỉ cài 2010 và bị lỗi code, mặc dù trên 2003 và 2007 chạy vẫn tốt. Máy trò hiện giờ không có 2010 nhưng trò sẽ phải tìm hiểu vấn đề này, chắc chắn là có lỗi chứ không phải tư nhiên trò nghĩ ra nó đâu, hihi!
Hiện tại tôi xài duy nhất OFfice 2010 bạn à.. hoàn toàn hổng có bất cứ vấn đề gì cả
 
Lần chỉnh sửa cuối:
Hiện tại tôi xài duy nhất OFfice 2010 bạn à.. hoàn toàn hổng có bất cứ vấn đề gì cả

Với Ndu thì đương nhiên là vậy nhưng với nhiều người (như tôi và Hoamattroicoi) thì lại không như vậy vì khi viết code lười khai báo biến nên khi chạy hay bị lỗi

Với những người đã biết về Macro thì việc dùng Macro để ghi rồi thêm bớt theo ý của mình là chuyện bình thường nhưng với những người mới học thì lại không đơn giản chút nào, sửa (thêm, bớt) câu nào thì phải hiểu hoặc mang máng thì mới sửa được, nếu xóa bừa thì...tèo luôn. Khi mới học tôi cũng phải mất vài tháng mới thành thục, từ kinh nghiệm của bản thân nên mới khuyên mọi người tìm cái đơn giản hơn (Excel 2003) để học dù biết rằng Excel 2003 đang đi vào dĩ vãng.
 
Lần chỉnh sửa cuối:
Với Ndu thì đương nhiên là vậy nhưng với nhiều người (như tôi và Hoamattroicoi) thì lại không như vậy vì khi viết code lười khai báo biến nên khi chạy hay bị lỗi

Với những người đã biết về Macro thì việc dùng Macro để ghi rồi thêm bớt theo ý của mình là chuyện bình thường nhưng với những người mới học thì lại không đơn giản chút nào, sửa (thêm, bớt) câu nào thì phải hiểu hoặc mang máng thì mới sửa được, nếu xóa bừa thì...tèo luôn. Khi mới học tôi cũng phải mất vài tháng mới thành thục, từ kinh nghiệm của bản thân nên mới khuyên mọi người tìm cái đơn giản hơn (Excel 2003) để học dù biết rằng Excel 2003 đang đi vào dĩ vãng.

Ăn thua ở chổ "chịu cày" thôi anh à!
Em cũng từng ở trong thời kỳ CHẲNG BIẾT GÌ nhưng được cái em chịu "vọc" ---> Record macro ra code rồi thì.. "phá banh ta long" luôn. Một lần không được thì làm lại nhiều lần, đến lúc "phá" thanh công cũng là lúc ngộ ra được vấn đề
Ẹc... Ẹc...
--------------
Còn về vấn đề Office 2003, 2007 hay 2010 em nghĩ không hề quan trọng gì. Cuối cùng vẫn là đầu ta suy nghĩ, "nó" làm giúp chứ có ngược lại đâu mà lo
 
Sư phụ đã thử trên máy tính chỉ cài OFFICE 2010 thôi, không cài chung với 2007 và 2003 chưa?
Thực tế là trò đã gặp cái lỗi này vài lần rồi, có test trên máy của 1 người bạn chỉ cài 2010 và bị lỗi code, mặc dù trên 2003 và 2007 chạy vẫn tốt. Máy trò hiện giờ không có 2010 nhưng trò sẽ phải tìm hiểu vấn đề này, chắc chắn là có lỗi chứ không phải tư nhiên trò nghĩ ra nó đâu, hihi!

1. Trên máy cài chung 2003, 2007, 2010:
VBA trên máy cài chung, cùng 1 file excel, mở bằng phiên bản nào, sẽ sử dụng library của phiên bản đó. Thí dụ thư viện Visual Basic for Application, 2003 lưu trong thư mục VB6, 2010 lưu trong thư mục VB7. Các library khác thì theo version như Microsoft Excel 11.0 Object Library và Microsoft Excel 14.0 Object Library

VBA2003.jpg


VBA2010.jpg



Nếu xài chung thì tại sao Excel 2003 không chạy được Sub Macro2010() trong thí dụ trên?

2. Máy nhà của thầy cài 3 thứ thì không nói, máy công ty chỉ có 1 thứ 2010, chạy mọi code, mọi file, của thầy, của GPE, có hay không có ActiveSheet.Range() hay ActiveSheet.selection. Những cái 2003 ngầm hiểu là kí rì thì 2010 hiểu ngầm là cái đó. Chỉ đứng từ sheet này điều khiển sheet kia, hay đứng trong module điều khiển 2, 3 sheet mới phải chỉ rõ sheet ra.

3. Lỗi trò mắc phải, có ai nói là tự nghĩ ra? Có điều nguyên nhân không phải ở đó. Đưa 1 file lỗi lên là biết liền.
 
Lần chỉnh sửa cuối:
To Bé Còi: Khả năng lớn nhất là bộ Office 2010 mà Bé Còi đề cập có thể đã bị lỗi. Bộ Office 2010 có nhiều phiên bản, và nghe nói có 1 vài phiên bản chạy bị sao sao ấy. Rất may là phiên bản mình đang sử dụng không có vấn đề gì.
 
To Bé Còi: Khả năng lớn nhất là bộ Office 2010 mà Bé Còi đề cập có thể đã bị lỗi. Bộ Office 2010 có nhiều phiên bản, và nghe nói có 1 vài phiên bản chạy bị sao sao ấy. Rất may là phiên bản mình đang sử dụng không có vấn đề gì.

Download phiên bản Office 2010 từ chính MS cung cấp cho chắc ăn
Mấy thứ quan trọng tôi chẳng khi nào download qua 1 trang web trung gian cả
Ngoài ra cũng xin nói thêm: Có bản "zin" rồi thì cũng còn tùy người cài đặt nữa ---> Cài thiếu cái gì đó ai mà biết được
 

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

Back
Top Bottom