Vba thực dụng trong Excel

  • Khởi xướng AAmylove
  • Ngày gửi
A

AAmylove

Guest
Các bạn đã biết Excel thật sự "tuyệt vời" như thế nào trong việc ứng dụng trong công việc hằng ngày.

Tuy nhiên, càng tuyệt với hơn khi nó được tự động hóa (chứ không phải chỉnh sửa thủ công) với việc sử dụng VBA trong Excel.

Mình mong các anh hùng hào kiệt ra tay phổ biến giúp mọi người: có thể là file mã nguồn mở, có thể là đoạn code, hay chỉ đơn giản là các kinh nghiệm để học VBA 1 cách nhanh nhất.

Các bạn còn ngại ngần gì nữa, hãy đưa vấn đề cầu cứu đi (kế cả vấn đề đơn giản nhất) sẽ có anh hùng hào kiệt sẵn sàng giúp đỡ chúng ta!!!!!

XIN CHÂN THÀNH CẢN ƠN TRƯỚC VỀ TẤM LÒNG HÀO KIỆT GẦN XA!!!!
 
Last edited by a moderator:
A

AAmylove

Guest
Visual Basic for Application
Từ Office 95 Microsoft bắt đầu đưa vào một ngôn ngữ lập trình chung, không chỉ áp dụng cho các ứng dụng như Word và Excel mà cho cả các công cụ lập trình như VB. Microsoft gọi ngôn ngữ lập trình này là Visual Basic for Applications (VBA).

VBA for Excel

Microsoft Excel là một công cụ mạnh để phân tích và trình bày thông tin. Một trong những thế mạnh của Excel là ngôn ngữ macro. Kể từ khi ra đời, Excel luôn là chương trình bảng tính có cài ngôn ngữ macro bao quát và linh hoạt nhất trong các phần mềm bảng tính.

Để viết macros trong Excel, bạn thật sự cần học hai công cụ khác biệt:
Trước hết, bạn cần học cách làm việc với Visual Basic. Mọi kiến thức bạn học về Visual Basic không những áp dụng được trong Excel mà còn cho các phần mềm Microsoft khác.​
Thứ hai bạn học cách sử dụng Excel. Càng nắm vững sử dụng bảng tính Excel, bạn càng xây dựng hiệu quả các macros.​

Câu hỏi: Cách viết mã VBA để cho việc tổng hợp vật liệu viết thế nào?
Cú pháp thì bạn nghiên cứu thêm về VBA nhưng giải pháp đại loại là bạn dùng hàm duyệt qua các ô "hạng mục" trong bảng "phân tích vật tư" tìm các ô có cùng giá trị text [tên vật tư] rồi cộng các giá trị ở mục "khối lượng" thì sẽ tổng hợp được vật liệu.
Gửi bạn tham khảo thư viện mã của VBA trong Excel 2003 nhé!
 

File đính kèm

  • Excel 2003 VBA Code.rar
    964,3 KB · Đọc: 5.997
A

AAmylove

Guest
Visual Basic for Applications (VBA) là một bộ phận của ngôn ngữ lập trình Visual Basic dành riêng để soạn thảo các lệnh macro trong bộ Office, giúp tăng cường sức mạnh và tự động hóa một số công việc lặp đi lặp lại. Sẽ là một thuận lợi lớn nếu bạn hiểu rõ cách thức VBA tham chiếu đến địa chỉ cell trong Excel. Bài viết này giới thiệu các thuộc tính (property) và phương thức (method) trong VBA liên quan đến tham chiếu địa chỉ cell.

Thuộc tính RANGE


Thuộc tính Range trả về một đối tượng, có thể là một cell đơn lẻ hoặc một dãy gồm nhiều cell. Trong lệnh gán giá trị của cell A1 vào cell A5 đưới đây, Range trả về giá trị chỉ gồm 1 cell:
Worksheets("Sheet1").Range("A5").Value = Worksheets("Sheet1").Range("A1").Value​
Khi dùng với kiểu không xác định, Range trả về một dãy cell trên sheet đang hoạt động. Để tránh kiểu "Râu ông nọ cắm cằm bà kia", bạn hãy kích hoạt một bảng tính bằng phương pháp Activate trước khi dùng thuộc tính Range mà không cần chỉ ra giới hạn cụ thể. Sau đây là cách điền vào vùng A1:H8 các số ngẫu nhiên bằng cách đặt công thức cho mỗi ô trong dãy mà trước đó sheet1 đã được kích hoạt:

Worksheets("sheet1").Activate​
Range("A1:H8").Formula = "=rand()"​
Bạn cũng có thể đặt tên cho dãy cell và chỉ cho VBA tham chiếu đến tên này. Ví dụ, bạn ra lệnh xóa nội dung của một dãy có tên "Criteria" bằng cách:

Worksheets(1).Range("criteria").ClearContents​
Nếu bạn sử dụng một đối số (argument) mà đối số đó là địa chỉ dãy cell, bạn phải định rõ địa chỉ đó theo kiểu A1 (dùng kiểu R1C1 máy sẽ báo lỗi).

Thuộc tính Cells

Thuộc tính Cells sử dụng cú pháp Cells(row,column), với row là chỉ số hàng và column là chỉ số cột, để trả về một cell đơn lẻ. Chẳng hạn, bạn có thể gán giá trị 24 cho cell A1 bằng lệnh:

Worksheets(1).Cells(1, 1).Value = 24​
Và gán một công thức cho cell A2:

ActiveSheet.Cells(2, 1).Formula = "=sum(b1:b5)"​
Cho dù bạn có thể dùng công thức Range("A1") để trả về cell A1 (không hề sai!), nhưng dùng thuộc tính Cells thì tiện lợi hơn bởi bạn có thể sử dụng một biến số đại diện cho hàng hoặc cột phục vụ yêu cầu lập trình. Bạn hãy tham khảo ví dụ tạo tiêu đề cột và hàng trên Sheet1 sau đây, lưu ý sau khi bảng tính đã được kích hoạt, thuộc tính Cells có thể được sử dụng thoải mái mà không cần khai báo một sheet cụ thể nào vì nó trả về một cell trên sheet hoạt động.

Sub SetUpTable()​
Worksheets("sheet1").Activate​
For theYear = 1 To 5​
Cells(1, theYear + 1).Value = 1990 + theYear​
Next theYear​
For theQuarter = 1 To 4​
Cells(theQuarter + 1, 1).Value = "Q" & theQuarter​
Next theQuarter​
End Sub​
Mặc dù bạn có thể sử dụng những hàm xử lý chuỗi của Visual Basic để thay đổi tham chiếu kiểu A1, nhưng để dễ hiểu hơn và rèn luyện kỹ năng lập trình của mình, bạn nên sử dụng kiểu Cells(1, 1).

Nếu bạn sử dụng cú pháp expression.Cells(row,column), với expression là một biểu thức trả về một đối tượng Range, và row và column là vị trí tương đối so với góc trên trái của dãy cell thì kết quả trả về là một bộ phận của dãy. Trong ví dụ dưới đây, VBA chỉ đến Cell(1,1) tức là cell C5 trên bảng tính:

Worksheets(1).Range("c5:c10").Cells(1, 1).Formula = "=rand()​
Kết hợp Range and Cells

Phối hợp Range và Cells để tham chiếu đến một dãy cell, bạn hãy sử dụng cú pháp Range(cell 1, cell 2), với cell 1 và cell 2 là cell bắt đầu và cell kết thúc của dãy. Để đặt kiểu đường viền cho các cell bạn dùng lệnh sau:

With Worksheets(1)​
.Range(.Cells(1, 1), .Cells(10, 10)).Borders.LineStyle = xlThick​
End With​
Ở đây cần lưu ý đến dấu chấm đằng trước thuộc tính Cells. Dấu chấm này quy định Worksheets(1) mà With đã nêu trước đó được áp dụng cho thuộc tính Cells để tiết kiệm chỗ và làm cho câu lệnh gọn hơn (nếu không có dấu chấm, thuộc tính Cells trả về các cell trên sheet hoạt động).

Thuộc tính Offset

VBA dùng thuộc tính Offset(r,c) để di chuyển đến một cell khác có vị trí cách r hàng và c cột so với cell hiện hành. Ví dụ dưới đây chọn một cell cách cell góc trên bên trái vùng hiện hành 3 hàng về phía dưới và 1 cột về bên phải. Bạn không thể chọn một cell không nằm trong sheet hoạt động, vì vậy trước đó bạn phải kích hoạt bảng tính bằng lệnh Activate.

Worksheets("sheet1").Activate​
Selection.Offset(3, 1).Range("a1").Select​
Phương thức Union

VBA sử dụng Union(range1, range2,...) để trả về một vùng hỗn hợp - là các vùng gồm hai hoặc nhiều khối cell tách biệt nhau. Trong ví dụ dưới, một đối tượng được định nghĩa gồm 2 vùng A1:B2 và C3:D4, sau đó chọn vùng đã được định nghĩa.

Dim r1 As Range, r2 As Range, myMultiAreaRange As Range​
Worksheets("sheet1").Activate​
Set r1 = Range("A1:B2")​
Set r2 = Range("C3:D4")​
Set myMultiAreaRange = Union(r1, r2)​
myMultiAreaRange.Select​
Nếu bạn làm việc với các vùng chọn chứa hai hay nhiều hơn một dãy cell, thuộc tính Areas rất hữu ích. Nó chia một vùng chọn hỗn hợp thành các đối tượng Range riêng biệt và sau đó trả về tập hợp các đối tượng đó. Bạn có thể sử dụng thuộc tính Count trên tập hợp đuợc trả về để kiểm tra một vùng chọn có chứa nhiều hơn một dãy cell hay không, như ví dụ sau đây:

Sub NoMultiAreaSelection()​
numberOfSelectedAreas = Selection.Areas.Count​
If numberOfSelectedAreas > 1 Then​
MsgBox "You cannot carry out this command " & _​
"on multi-area selections"​
End If​
End Sub.​
 
Last edited by a moderator:

nguyenanhcuong

Thành viên nhiều triển vọng
Tham gia
15/2/09
Bài viết
18
Điểm thành tích
1
Tuổi
54
Website
khkt.net
Bọn mình đã viết giáo án VBA (chung, kể cả Word, Excel, PowerPoint, Acess, Correl, PhotoShop...) tiêu đề là "Đặc tả xử lý và xử lý tự động" từ năm 1998.

Bạn nào cần hỏi bất cứ vấn đề gì liên quan đến VBA cụ thể ra, mình sẽ giúp cho (free)
 

tranvandat

Thành viên nhiều triển vọng
Tham gia
1/3/09
Bài viết
14
Điểm thành tích
3
Tuổi
39
Bài giảng tin học xây dựng( VBA cho Excel, Autocad)

Bài giảng này của bộ môn Tự động hóa thiết kế cầu đường trương ĐH Giao thông vận tải HN do thầy Lê Đắc Hiền biên soạn gồm:
1. Tổng quan về VBA
2. Vba với Excel
3. Vba với Autocad

Nói chung theo mình nghĩ không phải là dân tin thì cũng phải biết tin học nó làm được cái gì thì mới biết đường mà làm nếu không làm được thì hỏi chứ sống giữa thời đại công nghệ thông tin mà amater thì mệt lắm.

Bài giảng cho chúng ta cái nhìn tổng quan về Vba, thích hợp cho người mới bắt đầu.
 

File đính kèm

  • Tin_hoc_xay_dungFullDraft.part1.rar
    976,6 KB · Đọc: 3.527
  • Tin_hoc_xay_dungFullDraft.part2.rar
    976,6 KB · Đọc: 3.130
  • Tin_hoc_xay_dungFullDraft.part3.rar
    976,6 KB · Đọc: 3.044
  • Tin_hoc_xay_dungFullDraft.part4.rar
    258,9 KB · Đọc: 2.500

hoangtrong_vbnd

Thành viên mới
Tham gia
10/12/13
Bài viết
1
Điểm thành tích
1
e có làm 1 file khoảng 11 sheet
3 sheet đầu em giữ cố định làm sheet chính, còn lại 8 sheet em để ở chế độ ẩn theo code
em muốn tạo 4 nút ấn để "assign macro", chẳng hạn ấn nút A sẽ hiện sheet A11,A12; ấn nút B sẽ hiện sheet B11, B12; ấn nút C sẽ hiện sheet C11, C12 ... tương tự
có bác nào biết thì giúp em đoạn code với, e cảm ơn !!!
 

thewhitesand

Thành viên rất triển vọng
Tham gia
9/8/08
Bài viết
34
Điểm thành tích
8
e có làm 1 file khoảng 11 sheet
3 sheet đầu em giữ cố định làm sheet chính, còn lại 8 sheet em để ở chế độ ẩn theo code
em muốn tạo 4 nút ấn để "assign macro", chẳng hạn ấn nút A sẽ hiện sheet A11,A12; ấn nút B sẽ hiện sheet B11, B12; ấn nút C sẽ hiện sheet C11, C12 ... tương tự
có bác nào biết thì giúp em đoạn code với, e cảm ơn !!!

Gửi file cho bác...Bác xem thử coi có như yêu cầu của bác không.
 

File đính kèm

  • giaxaydung macro an-hien sheet.zip
    20,8 KB · Đọc: 518

tr hoan

Thành viên nhiệt tình
Tham gia
22/11/07
Bài viết
150
Điểm thành tích
18
Gửi file cho bác...Bác xem thử coi có như yêu cầu của bác không.

Như thế nào để run được bạn, mình chưa sử dụng được bạn giúp mình học và tìm hiểu nhé
Cám ơn
 

lecongtoan86

Thành viên rất triển vọng
Tham gia
5/5/10
Bài viết
29
Điểm thành tích
3
Tuổi
37
Như thế nào để run được bạn, mình chưa sử dụng được bạn giúp mình học và tìm hiểu nhé
Cám ơn
Có lẽ bạn chưa để chế độ Enable Macro cho excel. Bạn google để chỉnh nhé.
Với file vừa rồi nên thay các CommandButton bằng ToggleButton thì hay hơn
 

Tải bộ cài phần mềm Dự toán GXD, Đấu thầu GXD, Thanh Quyết toán GXD, Quản lý chất lượng GXD. Dành cho người mua bản quyền
Kích để xem khóa học Dự toán công trình
Kích để xem khóa học Dự toán công trình
Phần mềm quản lý chất lượng công trình QLCL GXD
Tìm hiểu khóa học Thanh Quyết toán GXD

Các bài viết mới

Top