Kinh nghiệm học VBA

Liên hệ QC

ankviet1992

Thành viên mới
Tham gia
7/10/17
Bài viết
10
Được thích
1
Giới tính
Nam
Xin chào cả nhả,

Các pro ơi, em mới học VBA được vài ngày (tự học), nhưng thấy bối rối quá trời, không biết nên học trình tự thế nào, cứ xem mấy video trên youtube thì khó hiểu quá. Các pro đi trước có thể chỉ giúp em con đường hợp lý được không ạ. Tks cả nhà ^^!
 
1./ Bài loại này nên đăng tại mục "Thành viên giúp nhau"

2./ Ngành nghề hay lĩnh vực đang hoạt động của bạn?

3./ Có thể bước đầu thông qua quyễn sách về cơ bản của VBA & kết hợp với bộ thu macro
Sau đó, nếu khó hiểu những câu lệnh nào mà bộ thu macro đã ghi cho bạn, thì nhờ diễn đàn diễn dịch cho bạn từ ngôn ngữ VBA sang tiếng Việt.
 
Upvote 0
Nên hỏi xin 1 sub nhỏ nhỏ giải quyết một nội dung gì đó của chính bạn.
 
Upvote 0
u đó, nếu khó hiểu những câu lệnh nào mà bộ thu macro đã ghi cho bạn, thì nhờ diễn đàn diễn dịch cho bạn từ ngôn
1./ Bài loại này nên đăng tại mục "Thành viên giúp nhau"

2./ Ngành nghề hay lĩnh vực đang hoạt động của bạn?

3./ Có thể bước đầu thông qua quyễn sách về cơ bản của VBA & kết hợp với bộ thu macro
Sau đó, nếu khó hiểu những câu lệnh nào mà bộ thu macro đã ghi cho bạn, thì nhờ diễn đàn diễn dịch cho bạn từ ngôn ngữ VBA sang tiếng Việt.
Thanks bạn,

Mình làm về logistic, làm liên quan đến kho và vận tải, dùng excel cũng nhiều, mình đang đọc quyển của Phan Tự Hướng, tại thấy đọc đoạn đầu thấy nhiều chỗ khó hiểu hi, có gì khúc mắc lại nhờ các bác thêm vậy.
 
Upvote 0
Vậy bạn có file nào xài trong công việc không?
Đem nó ra mà tương VBA vô thì có động lực nghiền ngẫm VBA liền chứ gì?

Mà sao tránh khỏi fần nhập dữ liệu; Ta tiến hành ngay khâu nhập liệu của bạn lâu nay với VBA xem sao.

Chờ file đầu tiên của bạn!
 
Upvote 0
Thử tập học bắt đầu vầy xem sao he
1/ Gõ tiếng việt không dấu vào 1 Cells xong chọn lại Cells đó ... xong chạy code
2/ Thực hiện như câu 1 chỉ khác là gõ tiếng việt có dấu vào đó xong chạy code ... bạn thấy cái gì khác biệt ....Tại Sao ?! ...bắt đầu có tư duy ròi đó he
3/ Nhấn Record Macro xong thực hiên trên Sheet ... Xong nhấn tổ hợp phím Alt +F11 vô đó coi bác Bill mằm cái chi trong đó ...
4/ Phải luôn tâm niêm là tại sao !!?? như thế này mà nó ra thế kia ?!... kẹt tới đâu úp bài hỏi .... hay nói như Quảng Nổ ấy "Thật Không Thể Tin Nổi" .... VBA thật kỳ diệu phải không
PHP:
Sub TapHocVBA()
MsgBox ActiveCell
End Sub
Chèn vào 1 Module xong chép code đó vào chạy như hướng dẫn ở trên xem sao he
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy bạn có file nào xài trong công việc không?
Đem nó ra mà tương VBA vô thì có động lực nghiền ngẫm VBA liền chứ gì?

Mà sao tránh khỏi fần nhập dữ liệu; Ta tiến hành ngay khâu nhập liệu của bạn lâu nay với VBA xem sao.

Chờ file đầu tiên của bạn!

Ví dụ file này, hàng ngày mình đều phải export từ hệ thống ra 1 file ntn (dữ liệu sẽ thay đổi liên tục), và mình sẽ phải làm một bảng pivot tương tự như trong file để check dữ liệu.
Vấn đề là lặp lại rất nhiều lần, mình dùng record Marcro cũng có thể làm tương đối ok (nhưng mình phải mở rộng vùng dữ liệu pivot, do dữ liệu thay đổi, có thể nhiều dòng hơn) --> Pivot ra sẽ có phần Blank, không chuyên nghiệp lắm ^^. Đây là một ví dụ thôi, mình có rất nhiều file export từ hệ thống ra, và hầu hết đều dùng đến pivot table để phân tích, thao tác lặp lại rất nhiều.

Vậy nhờ các pro chỉ giáo thêm nha, mình cũng thấy sáng sáng ra chút sau khi tìm hiểu về VBA được vài ngày, cũng biết sơ sơ về vòng lặp For, câu lệnh IF, nhưng thấy nó nhiều quá nên không biết tiếp tục học gì. Rất mong được mọi người giúp đỡ!!!
 

File đính kèm

  • Sales 26.02.xlsx
    4.2 MB · Đọc: 8
Upvote 0
Vấn đề của bạn đang là xác định dòng cuối có dữ liệu của 1 CSDL; Việc này nhằm sáng sủa & chuyên nghiệp khi xử lí dữ liệu.

Để xác định dòng cuối có dữ liệu thật chích xác ta có vài cách như sau;
Nhưng để bắt đầu việc này, ta nên chọn trường (cột) luôn có dữ liệu trong CSDL; (Mình cho là cột [D:d] trong file của bạn.)
(& cột này sã không thay đổi hay xê dịch khi tạo ra CSDL từ fần mềm)

Cách thô nhất như bạn đã biết: Bạn tạo vòng lập duyệt từ đầu đến cuối cột [D] này, đến khi gặp giá trị "trống" (trắng) trong cột thì dừng & ghi lại chỉ số dòng của ô đó.

Cách 2 & 3 (gợi ý để bạn tìm trên diễn đàn) Xài fương thức End(xlDown) hay End(xlUp) trong VBA; Cách này giống như ta từ 1 ô nào đó trên cột [D:d] này & tiến hành bấm tổ hợp fím {CTRL} + mũi tên lên hay xuống í mà!

Cách 4 & cũng "hàn lâm" nhất là xài fương thức FIND(): Bạn cũng tìm thấy trên diễn đàn, nhưng hãy từ từ, cháo sẽ nhừ!

Chúc thành công!
 
Upvote 0
Ví dụ file này, hàng ngày mình đều phải export từ hệ thống ra 1 file ntn (dữ liệu sẽ thay đổi liên tục), và mình sẽ phải làm một bảng pivot tương tự như trong file để check dữ liệu.
Vấn đề là lặp lại rất nhiều lần, mình dùng record Marcro cũng có thể làm tương đối ok (nhưng mình phải mở rộng vùng dữ liệu pivot, do dữ liệu thay đổi, có thể nhiều dòng hơn) --> Pivot ra sẽ có phần Blank, không chuyên nghiệp lắm ^^. Đây là một ví dụ thôi, mình có rất nhiều file export từ hệ thống ra, và hầu hết đều dùng đến pivot table để phân tích, thao tác lặp lại rất nhiều.

Vậy nhờ các pro chỉ giáo thêm nha, mình cũng thấy sáng sáng ra chút sau khi tìm hiểu về VBA được vài ngày, cũng biết sơ sơ về vòng lặp For, câu lệnh IF, nhưng thấy nó nhiều quá nên không biết tiếp tục học gì. Rất mong được mọi người giúp đỡ!!!
Góp ý cho bạn thế này:
1/ Việc học VBA thì cũng phải từ từ ngâm cứu, trước mắt công việc cần gì thì hỏi cái đó, chứ không thể 1 bước lên thiên đàn được.
2/ Trong việc hỏi bài cũng cần có nghệ thuật hỏi, ví dụ như File của bạn thì chỉ cần chứa vài chục dòng dữ liệu (cho mỗi dạng 1 ít) và nêu cái bạn cần làm gì với dữ liệu đó.
3/ Nếu hàng ngày phải xuất File từ hệ thống ra thì nên nghĩ đến cách chọn ổ dĩa, chọn File để nó tự lấy dữ liệu vào 1 sheet nào đó rồi lấy dữ liệu vào PivotTable rồi mới tính đến việc phân tích cái gì?
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề của bạn đang là xác định dòng cuối có dữ liệu của 1 CSDL; Việc này nhằm sáng sủa & chuyên nghiệp khi xử lí dữ liệu.

Để xác định dòng cuối có dữ liệu thật chích xác ta có vài cách như sau;
Nhưng để bắt đầu việc này, ta nên chọn trường (cột) luôn có dữ liệu trong CSDL; (Mình cho là cột [D:d] trong file của bạn.)
(& cột này sã không thay đổi hay xê dịch khi tạo ra CSDL từ fần mềm)

Cách thô nhất như bạn đã biết: Bạn tạo vòng lập duyệt từ đầu đến cuối cột [D] này, đến khi gặp giá trị "trống" (trắng) trong cột thì dừng & ghi lại chỉ số dòng của ô đó.

Cách 2 & 3 (gợi ý để bạn tìm trên diễn đàn) Xài fương thức End(xlDown) hay End(xlUp) trong VBA; Cách này giống như ta từ 1 ô nào đó trên cột [D:d] này & tiến hành bấm tổ hợp fím {CTRL} + mũi tên lên hay xuống í mà!

Cách 4 & cũng "hàn lâm" nhất là xài fương thức FIND(): Bạn cũng tìm thấy trên diễn đàn, nhưng hãy từ từ, cháo sẽ nhừ!

Chúc thành công!
Thank bạn nha,
Mình cũng nghĩ đến phần End như bạn nói r, mình sẽ tìm hiểu thêm. Có gì thì mình hỏi thêm sau.
 
Upvote 0
Góp ý cho bạn thế này:
1/ Việc học VBA thì cũng phải từ từ ngâm cứu, trước mắt công việc cần gì thì hỏi cái đó, chứ không thể 1 bước lên thiên đàn được.
2/ Trong việc hỏi bài cũng cần có nghệ thuật hỏi, ví dụ như File của bạn thì chứa vài chục dòng dữ liệu (cho mỗi dạng 1 ít) và nêu cái bạn cần làm gì với dữ liệu đó.
3/ Nếu hàng ngày phải xuất File từ hệ thống ra thì nên nghĩ đến cách chọn ổ dĩa, chọn File để nó tự lấy dữ liệu vào 1 sheet nào đó rồi lấy dữ liệu vào PivotTable rồi mới tính đến việc phân tích cái gì?
Thank bạn nhiều nha!
Thực tế là cái file công việc mình làm cũng tương đối ok rùi, cũng chưa có vướng mắc gì nhiều. Nhưng do lặp lại nhiều nên mình muốn tự động thì đỡ mất công hơn. Mình cũng share file rùi đó, mình sẽ bắt tay làm theo gợi ý của bạn. Nếu vướng mắc gì lại nhờ các bạn trợ giúp.
Thank bạn!!!
 
Upvote 0
Thank bạn nhiều nha!
Thực tế là cái file công việc mình làm cũng tương đối ok rùi, cũng chưa có vướng mắc gì nhiều. Nhưng do lặp lại nhiều nên mình muốn tự động thì đỡ mất công hơn. Mình cũng share file rùi đó, mình sẽ bắt tay làm theo gợi ý của bạn. Nếu vướng mắc gì lại nhờ các bạn trợ giúp.
Thank bạn!!!
Bạn nên mở Topic khác, vì chủ đề của Topic này là Kinh nghiệm học VBA.
Nội dung tôi gợi ý là sử dụng VBA.
 
Upvote 0
Vấn đề của bạn đang là xác định dòng cuối có dữ liệu của 1 CSDL; Việc này nhằm sáng sủa & chuyên nghiệp khi xử lí dữ liệu.

Để xác định dòng cuối có dữ liệu thật chích xác ta có vài cách như sau;
Nhưng để bắt đầu việc này, ta nên chọn trường (cột) luôn có dữ liệu trong CSDL; (Mình cho là cột [D:d] trong file của bạn.)
(& cột này sã không thay đổi hay xê dịch khi tạo ra CSDL từ fần mềm)

Cách thô nhất như bạn đã biết: Bạn tạo vòng lập duyệt từ đầu đến cuối cột [D] này, đến khi gặp giá trị "trống" (trắng) trong cột thì dừng & ghi lại chỉ số dòng của ô đó.

Cách 2 & 3 (gợi ý để bạn tìm trên diễn đàn) Xài fương thức End(xlDown) hay End(xlUp) trong VBA; Cách này giống như ta từ 1 ô nào đó trên cột [D:d] này & tiến hành bấm tổ hợp fím {CTRL} + mũi tên lên hay xuống í mà!

Cách 4 & cũng "hàn lâm" nhất là xài fương thức FIND(): Bạn cũng tìm thấy trên diễn đàn, nhưng hãy từ từ, cháo sẽ nhừ!

Chúc thành công!
Bạn xem giúp mình vs
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R40925C78", Version:=6).CreatePivotTable TableDestination:= _
"Sheet2!R3C1", TableName:="PivotTable3", DefaultVersion:=6
Mình có thể tìm ra dòng cuối bằng i rùi. Nhưng khi mình thay i vào thành sheet1!R1C1:RiC78 để làm dữ liệu nguồn tạo bảng pivot thì lại bị báo lỗi. Check giúp mình dc k.
 
Upvote 0
Có pro nào chỉ giáo hộ phần code ở trên vs ạ
 
Upvote 0
Bạn xem giúp mình vs
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R40925C78", Version:=6).CreatePivotTable TableDestination:= _
"Sheet2!R3C1", TableName:="PivotTable3", DefaultVersion:=6
Mình có thể tìm ra dòng cuối bằng i rùi. Nhưng khi mình thay i vào thành sheet1!R1C1:RiC78 để làm dữ liệu nguồn tạo bảng pivot thì lại bị báo lỗi. Check giúp mình dc k.
Bạn sửa chổ màu đỏ thử xem (Hên xui nhé!).
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R" & i & "C78", Version:=6).CreatePivotTable TableDestination:= _
"Sheet2!R3C1", TableName:="PivotTable3", DefaultVersion:=6
 
Upvote 0
Bạn sửa chổ màu đỏ thử xem (Hên xui nhé!).
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R" & i & "C78", Version:=6).CreatePivotTable TableDestination:= _
"Sheet2!R3C1", TableName:="PivotTable3", DefaultVersion:=6
Thanks bạn nha.
Nhưng mình chạy vẫn báo lỗi bạn ah.
 
Upvote 0
Có trường có lớp thì theo học bạn nhé. Chỉ khi không có điều kiện mới phải học từ xa hay phải tự mò mẫm. Khi bạn có chút kiến thức rồi thì mới đi học các giải phát cụ thể thông qua các câu hỏi của các thành viên , xem và làm theo các tip trên youtube. Phần lớn nhiều người trên GPE tự học cũng là do tính lịch sử không có trường lớp đào tạo hay điều kiện công tác, sách vở không có,...
 
Upvote 0
Web KT
Back
Top Bottom