You are on page 1of 28

20

A Blending Application

20.1 Giới
thiệu
Ứng dụng này minh họa cách một mô hình lập trình linear hình, trong
trường hợp này là mô hình trộn dầu, có thể được chuyển đổi thành
một hệ thống hỗ trợ quyết định ấn tượng với rất ít mã hóa VBA.
Mấu chốt của ứng dụng là nó là một có kích thước cố định .
Cụ thể, nó hoạt động (ở dạng hiện tại) trênly nếu có ba loại dầu thô
được pha trộn thành ba sản phẩm xăng. Đây chắc chắn là một tính năng
hạn chế của ứng dụng. Tuy nhiên, thuộc tính kích thước cố định cho
phép thiết lập toàn bộ ứng dụng tại thời điểm thiết kế mà không cần bất kỳ
VBA nào.linear model , có thể tạo báo cáo và có thể tạo một số biểu
đồ.duy nhất are để lấy đầu vào của người dùng cho mô hình và chạy
Solver. Có rất nhiều Excel cần xử lý tại thời điểm thiết kế, nhưng ứng
dụng hoàn thiệnrất đơn giản, với một lượng mã VBA tối thiểu.

Mục tiêu học tập mới:


VBA

Để xem VBA có thể được sử dụngsup ra quyết định hoàn chỉnhhệ thống cổng xung quanh
một mod tối ưu hóa kích thước cố địnhbằng cách cung cấp hộp
thoại input, biểu đồ và báo cáo cho kết quả.

Mới Learning Objective:


Non-VBA

• Để phát triển sự hiểu biết về các mô hình


kết hợp lập trình tuyến tính.
20.2 Functionality of
Application Ứng
dụng này cung cấp các chức năng sau: 1. Ứng dụng này dựa trên mô
hình pha trộn dầu điển hình với ba loại dầu thô
được pha trộn thành ba sản phẩm xăng. Có nhiều yếu tố đầu vào
cho mô hình, bao gồm khả năng sử dụng thôvới, nhu cầu
xăngđốichỉ số octan tối thiểu và tỷ lệ phần trăm lưu huỳnh imum
tối đacác gasoline, và những yếu tố khác, tất cả đều có thể thay
đổi mỗi khi mô hình được chạy. Người dùng có cơ hội xem tất
cả các đầu vào nàyvà thực hiện bất kỳ thay đổi nào mong muốn.

43
7

Bản quyền 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung của bên thứ ba có thể bị
chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không ảnh hưởng nghiêm trọng đến trải nghiệm học tập
tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo yêu cầu.

438
Chương 20

2. Mô hình được phát triển trong một trang tính Mô hình và được tối
ưu hóa bởi Solver.
Các kết quả đầu ra chính được báo cáo trong trang tính Báo cáo. Các khía cạnh khác
nhau của giải pháp cũng được hiển thị trên một số tờ biểu đồ. Người dùng
có thể xem các trang biểu đồ này bằng cách nhấp vào các nút điều hướng
trên trang tính Báo cáo.

20.3 Chạy ứng dụng Ứng


dụngđược lưu trữ trong tệp Blending Oil.xlsm. Khitệp này được mở, trang tính
Giải thích trong Hình 20.1 được hiển thị. Khi người dùng nhấp vào

Hình 20.1 Giải thích Bảng tính

dầu Pha trộn Ứng dụng


Chạy ứng dụng Ứng dụng

tìm này phương án tối ưu pha trộn định cho một bài toán có cố kích thước. Kích
"cố định thước" có nghĩa là vấn đề luôn luôn có ba thô loại dầu được pha trộn thành
ba xăng loại. Do này , cố định kích thướcmô tối ưu hóa hình và tất cả các báo cáo, bao gồm
cả biểu đồ, có thể được thiết lập bằng Excel -- không VBA cần -- tại thiết kế thời điểm. Sau đó,
ứng dụng sử dụng VBA để hiển thị các hiện tại đầu vào cho người dùng và cho phép người
dùng thay đổi bất kỳ trong số này. Sau đó, nó chạy Solver với những đầu vào và hiển thị kết
quả trong một báo cáo, với tùy chọn biểu đồ có thể được xemxét.

Các yếu tố đầu vào bao gồm ba nhóm:

(1) tiền tệ Đầu vào: chi phí mỗi gallon để mua từng loại dầu thô, giá bán phí mỗi gallon
cho mỗi loại xăng xăngvà chi đổi cho chuyển thành một gallon dầu bất thô loại kỳ . nào
trên.

(2) Dữ liệu liên quan đến chỉ số octan và lưu huỳnh phần trăm. Mỗi dầu thô có chỉ số
octan lệ và lưu huỳnh phần trăm. Mỗi loại xăng có tối thiểu cần thiết octan lệ và tỷ
tối đa cho phép lưu huỳnh số.

(3) Dữ liệu liên quan đến nhu cầu, khả năng sẵn cóvà năng sản xuất lực. Đối với nhu
cầuđây là số lượng đa tối của mỗi loại xăng có thể được , bán. (, có động cơkhông Do đónào
để sản xuất nhiều hơn mức này.)

Thực tế,giả sử rằng một phiên bản Excel trước năm 2010 đang được sử dụng, điều
đầu tiên mà chúng tanhìn thấy khi mở tệp là cảnh báo Bộ giải. Cảnh báo này sẽ xuất
hiệnở tất cả các ứng dụng trong tương lai gọi Solver. Nó giải quyết vấn đề “thiếu tham chiếu
bộ giải” được thảo luận trong Chapter 17. Nóchỉ ra cách khắc phục cần thiết trong case
ofa Solver problem. (Có vẻ như sự cố này đã được khắc phục trong Excel 2010, do đó , cảnh
báo không xuất hiện trong các phiên bản Excel 2010 hoặc later.)

Politician w đã chặn trò chuyện demonet đối với


Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung
của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không
ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo
yêu cầu.

des Maymatebiliyopite e che


BlendinÁpgA
439

trên trang tính này, hộp thoại trong Hình 20.2 xuất hiện, cho biết rằng các đầu
vào cho mô hình được nhóm thành ba loại. Người dùng có thể xem
(và sau đó change, nếu muốn) các đầu vào trong bất kỳ danh mục nào trong số
này bằng cách kiểm tra các tùy chọn thích hợp. Nếu tất cả chúng được
chọn, các hộp thoại trong Hình 20.3, 20.4 và 20.5 sẽ xuất hiện tuần tự.
Các đầu vào xuất hiện ban đầu trong boxes là các đầu vào từ run trước
đó của mô hình (nếu có).course, bất kỳ đầu vào nào trong số này đều
có thể được thay đổi.
Khi người dùng xem xong / thay đổi đầu vào, những đầu vào này sẽ được
đưa vào mô hình trong trang tính Mô hình (ẩn) và mô hình được tối ưu hóa
bằng Bộ giải. Các đầu vào và đầu ra quan trọng được hiển thị trong
trang tính Báo cáo, như trong Hình 20.6. Trang tính này chứa một số nút
để varioutrang biểu đồ củaquốc gia.
Các biểu đồ có sẵn xuất hiện trong Hình 20.7–20.13. Mỗi biểu đồ này có một
nút điều hướng trở lại trang tính Báo cáo.

Hình 20.2 Hộp thoại Ban

đầu Tùy chọn

Bạn có thể thaybấtkỳđổi nào đầu vào đầu cho này mô hình trong các sau nhóm. Chọn các
nhóm(_) bạn muốn _ xem.
Hủy bỏ

tiền đầu vào

✓ Dữ liệu về octan xếp hạng, hàm lượng lưu huỳnh về


Dữ liệu nhu cầu, trạng, công suất

Hình 20.3Hộp D ialog cho Đầu vào tiền tệ Đầu vào


tiền tệ đầu vào

Các cho tiền chi biết mua phí mỗi gallon cho mỗi loại bán oude, giá trên tệ mỗi gallon cho mỗi
loại loại _ xăng_ và chi phí chuyển đổi một gallon dầu thô thành một gallon _ xăng.
Hủy

- đơn vị khí Giá

Khí 1:
đơn vị thô phí
Thô 1: 55 Thô 2: 35
Thô 3:
Khí 2:
60
Khí 3:
75

Chi phí sản xuất một gallon xăng oude từ một gallon : 5Chi
Cen

Copyright 2016gage Học tập. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung của
bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không ảnh
hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo yêu
cầu.

440
Chapter 20

Hình 20.4 Hộp thoại cho đầu vào Oct, lưu huỳnh Đầu vào

và lưu huỳnh vào

Đầu số octan Octan trị cho biết chỉ số octan dầu của từng loại thô và số tối thiểu
octan loại cần thiết trong mỗi xăng. Các lưu huỳnh đầu vào bao gồm tỷ lưu huỳnh
trong mỗi loại dầu thô và tỷ tối đa lệ lưu huỳnh cho phép trong mỗi loại xăng. Đối với tỷ
lệ phần trăm, hãy nhập 0.10 cho
10%_ chẳng hạn.
Hủy
ILLE

Octan Xếp hạng


Thô 1:
-- lưu huỳnh Tỷ lệ

Thô 1: 0.01
12

10
Thô 2:
0.005
Thô 2: Thô 3:
Thô 3:
0.03

- tối đa lưu huỳnh Phần trăm


tối thiểu octan Xếp hạng
Khí 1: 11
Khí 1:
0.01

Khí 2:
Khí 2:
0.03

Khí 3:
Khí 3:
0.01
Hình 20.5 Hộp thoại cho các đầu vào còn lại

Nhu cầu, khả năng sử dụngvà đầu công suất vào

Những đầu vào, tất cả được biểu thị bằng gallon, gasol cho biết cầu
về nhuines (số tối đa lượng crudesthể có ) bán được,khả năng cung của cấp, và
năng lựcxuất
1. OK
Hủy

thô Khả năng sử dụng Thô 1: 5000


- Nhu cầu tiêu thụ 1:Khí
2 3000 Khí 3 :2000 Khí 15000 :1000 Thô
2 :5000
Thô

3 :5000
Năng

lực sản xuất :Copyright


2016

Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội
dung của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ
nội dung nào bị đàn áp không ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ
sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo yêu cầu.

Bản quyền 2016 Cengage Learning. Đã đăng ký Bản quyền.


Không được sao chép, quét hoặc sao chép toàn bộ hoặc một
phần. Do

Áp dụng Pha trộnn


441

Hình 20.6 Báo cáo Bảng

công việc Báo cáo về giải pháp phối trộn tối ưu

Số lượng thô thô đãliable


mua Thô thô đã mua 1
1500 Thô 2
4300 Thô 3
200 Tổng cộng
6000
Ava50005000
5000 15000 Pur
costhase c$
82,500 $ 150,500
$5,000 $ 238,000
Số lượng gasollne được sản xuất (và bán)
đã0giảm Nhu cầu Khí 1
3000
3000 Khí 2
2000
2000 Khí 3
10015
1000

Tổng cộng
6000 6000
Đồng sản xuất$
$,000 10,000
$5,000 $ 30,000
Revenue $ 210,000 $ 120.000
$75.000 $ 405.000

Kế hoạch pha trộn (gallon dầu thô được sử dụng trong các loại gasoline khác
nhau)
Khí 1
Gas 2 1500.00
0.00 Thô 2
1500.00
2000.00 Thô 3
0.00
0,00
Thô 1
Khí 3
0,00 800,00 200,00

Yêu cầu về octan

Khí 1 Khí 2 Khí 3


Thu được

11.00 10,00 9.60


Tối thiểu9.00

mong muốn 11,00 10,00 Yêucầu


về lưu huỳnh

thu được Khí


0.75% Khí 2
0.50% Gas 3
1,00%
Max allowed
1.00% 3,00% 1.00%

Tóm tắt tiền tệ Chi phí mua Chi phí sản xuất Doanh thu bán hàng Lợi nhuận
$238.000$
$ 30.000 405.000 $ 137.000

Hình 20.7 Biểu đồ về dầu thô Đã mua hàng

Galloned
Xem Bảng báo cáo
5000 -

4500

4000

3500

3000
Đã mua
2500

2000

1500

1000

500

0+
Thô 1
Thô 2
Thô 3

Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn
bộ hoặc một phần. Do quyền điện tử, một số nội dung của bên thứ ba có thể bị chặn khỏi Sách điện tử và /
hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp
không ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội
dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo yêu cầu.
442 Chapter 20

Hình 20.8 Biểu đồ chi phí mua dầu thô Mua

dầu thôe Chi phí


(Xem bảng báo cáo)

$ 160.000

$ 140.000

$ 120.000

$ 100.000 $ 100.000

$ 80.000

$ 60.000

$ 40.000

$ 20.000

$0
Thô 1
Thô 2
Thô 3

Hình 20.9 Biểu đồ về lượng khí được sản xuất và nhu cầu

Gallons of Gasolines Sản xuất


View)

3000
A
2500

2000
Nhu cầu sản xuất
1500

1000

500

Khí 1

Khí
Khí 2
Khí 3

Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung
của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không
ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo
yêu cầu.

A Blending Applicationation
443

Hình 20.10 Biểu đồ Chi phí Sản xuất và Doanh thu từ xăng

Doanh thu từ GasolinXem Report Sheet

$ 250,000

$ 200,000

$ 150,000
L.,
O sản xuất
Chi phí 0 Doanh thu

$ 100,000

$ 50.000

$0
+
Khí 1
Khí 2
Khí 3

Hình 20.11 Chart of Blending Plan Kế hoạch

pha trộn: Gallons Thô được sử dụng trong Gasolines


Xem bảng báo cáo

Thô 1 Thô 2 Thô 3


2000,00 1800,00 1600,00 1400,00 1200,00 1000,00
- 600,00 400,00 200.00
Thô 3

Thô 2

Thô 1
0,00 +
Khí 1
Khí 2
Khí 3

Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung
của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không
ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo
yêu cầu.

444 Chapter 20

Hình 20.12 Chart của thiết bị Octan RYêu

cầu về Octan
Xem Bảng Báo cáo

12.00

10.00

8,00
Tối thiểu đạt được yêu cầu
6,00

4.00

2,00

0,00+
Khí 1

Khí 2
Khí 2
Khí 3

Khí 3
Hình 20,13 Chart Lưu huỳnh Phần trăm Yêu cầu Yêu cầu

Lưu huỳnh
Xem Bảng báo cáo

3,00%

2,50% +

2,00%
Thu được Tối đa cho phép
1.50%

1,00%

0,50%

0,00%
4
Khí 1
Khí 2
Khí 3

Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền
điện tử, một số nội dung của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên
tập cho rằng bất kỳ nội dung nào bị đàn áp không ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu
quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo yêu cầu.

A Blending Applicationn
445

20.4 Thiết lập Excel Sheets


Oil.xlsmchứa ba trang tính và bảy trang biểu đồ. Tất cả những thứ này có thể
được phát triển tại thời điểm thiết kế mà không cần bất kỳ VBA nào. Ba bảng
tính là bảng Giải thích trong Hình 20.1, bảng Mô hình trong Hình 20.14 và bảng
Báo cáo trong Hình 20.6. Bởi vì kích thước cố định của vấn đề (luôn luôn là ba
dầu thô và ba sản phẩm xăng), cấu trúc của mô hình không bao giờ thay đổi;
thứe chỉ thay đổi là các giá trị đầu vào mới. Do đó, model này có thể được
phát triển hoàn chỉnh, bao gồm cả hộp thoại Solver, tại thời điểm thiết
kế. Bất kỳ đầu vào nào cũng có thể được sử dụng để kiểm tra mô hình. (Bản thân
mô hình là một ứng dụng đơn giản của lập trình tuyến tính. Bạn có thể mở Blending
Oil.xlsm file, bỏ ẩn trang tính Mô hình và kiểm tra các công thức của nó nếu bạn
muốn.) Tương tự, có thể phát triển trang tính Báo cáo, với các liên kết vào các ô thích hợp
trong trang tính Model , một lần và mãi mãi tại thời điểm thiết kế. Cuối cùng, các biểu đồ trong
có thể được phát triển và liên kết với cácphạm vi phù hợp
Hình 20.7 đến 20.13
trong bảng báo cáo wtại thời điểm thiết kế. Sau khi các bảng tính này, mộtbảng
biểu đồ thứ n được phát triển, chúng đã sẵn sàng và đang chờ người dùng nhập.

20.5 Bắt đầufrminvới VBA

Ứng dụng này bao gồm bốn biểu mẫu người dùng, có tên là frminputTypesput2 và
frminputs3, một mô-đun duy nhất, và vì ứng dụng này sẽ nhập các hàm VBA của
Solver, một tham chiếu đến Solver.2 (Hãy nhớ rằng bạn thiết lập một tham chiếu
với mục menu Tools References trong VBE.) Sau khi các mục này được thêm
vào, cửa sổ Project Explorer sẽ ứng dụng20.15như hình. (Để rkbook_Open,
tôi đã cung cấp các tên mã có ý nghĩa cho tất cả các trang tính.)

WoCode đảm bảo rằng ứng dụng trang tính Giải thíchhoạt động khi tệp được mở,
trình xử lý sự kiện sauđược đặt trong cửa sổ mã ThisWorkbook. Lưu ý rằng nó sử
dụng vòng lặp For Each để ẩn tất cả các trang tính ngoại trừ trang tính Giải thích.

Private Sub Workbook_Open ()


Dim ws As Worksheet, cht As Chart With wsExplanation .Activate
.Range
("F4"). Chọn End With For Each ws Trong ThisWorkbook.Worksheets
If ws.CodeName => "wsExplanation" Then ws. Visible = False Tiếp theo

2 Nó cũng chứa một biểu mẫu người dùng khác, frmSolver, chỉ đơn giản làmột
thông báo về các sự Trình giải quyết khi sổ làm việc được mở. Điều này được bao gồm
trong tất cả các ứng dụng Solver trong phần còn lại của cuốn sách, mặc dù người dùng có phiên
bản Excel 2010 hoặc later sẽ không nhìn thấy nó.

Bản quyền 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung
của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không
ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo
yêu cầu.

446 Chapter 20

Hình 20.14 Model Bảng tính


F
G

wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwww

D
A
B
C
D
E 1 dầu Mô hình pha trộn 2 3 Giá mua trên một gallon dầu thô Giá
bán trên một 2thùng xăng 4 Thô 1
$ 55
Khí 1
Khí 5 Thô 2
$ 35
$ 70
$ 60 6 Thô 3 7 8 Chi phí để biến một thùng dầu thô thành một thùng xăng 9
$5
Khí 3 $75
$ 25
10
11 Yêu cầu đối với gasolines
12
Khí 1
Khí 2
wwwwwwwwwwwwwwww

11
10
| 13 | Chỉ số octan tối thiểu
14 Lưu huỳnh tối đa
Khí 3
9 1%
1%
3%
15
Lưu huỳnh content Thô 1 Thô 2 Thô 3
1,0% 0.5% 3,0%
16 Xếp hạng Octan 17 Thô 1 18 Thô 2 19 Thô 3 20 21 Kế hoạch
mua/sản xuất
22 | | 23 Thô 1
24 Thô 2 25 Thô 3
wwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwww

Khí 1 1500,00 1500,00


0,00
Khí 2

0.00 2000,00
0,00
Khí 3
0,00 800,00 200,00
Tổng số tiền mua
1500 4300 200
11 VVV
11 11
Có sẵn tối đa
5000 5000 5000
| 26
Khí 2 2000
<= 2000
Khí 3 1000
<= 1000
<=

wwwwwwww

.................................. ..

| 34
Công suất tối đa
15000
35

27 Nhu cầu 28
Khí 1 29 Lượng sản xuất
3000 30 31 Nhu cầu tối đa
3000 32 33 Hạn chế về tổng sản lượng
Tổng
6000 36 37 Hạn chế về octan
Khí 1 38 Tổng octan thực tế
33000
> = 40 Yêu cầu
33000 41 42 Ràng buộc về lưu huỳnh
Khí 1 43 Tổng lưu huỳnh thực tế 44 45 Yêu cầu 46 47 Chi phí mua
$ 238.000 48 Chi phí sản xuất
$ 30.000 49Doanh thu
$ 405.000 50 51 Lợi nhuận
$ 137.000
Khí 2 20000
> = 20000
Khí 3 9600
> = 9000
39

Khí 2
22.5
10
w

30

Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một
phần. Do quyền điện tử, một số nội dung của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình
điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không ảnh hưởng nghiêm trọng đến trải
nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền
tiếp theo yêu cầu.
Một ứng dụngtrên
447

chtsWorkbook.Charts
cht Thi Trong với.
kết mỗi

Đối
hợp

Dự - VBAProject
2 3 E- VBAProject (Blending)
- Microsoft Excel Objects
1 chtblendPlan () lichtCrudeCosts (CrudeCosts)
chtCrudePurch (CrudePurch) chitGasProduction (GasProductioned)
chtOctane (Octane) - ChtWrod ___
_ _ _BlendPlanOilxism
án
wsExplanation (Giải thích) - wsModel (Model)
wsReport (Báo cáo) & Forms
frmInputs 1 8 frminputs2
frmInputs 3 9 fimInputTypes ..... fimSolver - Mô-đun Mô-
đun 1 E-6 khảo
Tham khảo tham SOLVER.XLAM

20.6 Biểu mẫu người dùng


frmInputTypes Thiết kế của frminputTypes được thể hiện trong Hình
20.16. NóOK và Cancel thông thường, nhãn giải thích và ba hộp kiểm có tên
chkinputs 1, chkInputs2 và chkinputs3. Việc thiết kế các biểu mẫu người
dùng cho ứng dụng này là hoàn toàn đơn giản. Các hộp văn bảnsẽ được
định vị và đặt tên, các nhãn phải được định vị và chú thích, và cứ thế các
thao tác đơn giản.
Các trình xử lý sự kiện cho biểu mẫu người dùng này được liệt kê bên dưới. The
Initialize sub kiểm tra từng hộp kiểm theo mặc định. Hàm Hộp thoại
ShowlnputTypes ghi lạicác mục nhập của người dùng trong các hộp kiểm trong
các biến Boolean blnlnputs 1, blnlnputs2 và blnlnputs3.

Bản quyền 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung
của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không
ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo
yêu cầu.

448 Chapter 20

Figure 20.16 Thiết kế frmInputTypes

đầu vào Tùy chọn


1
+
12
.

Bạn có thể xem thay đổi bất kỳ đầu vào nào cho môhình của mình các nhóm sau
, Kiểm các nhóm(). bạn muốn xem tratrong
Hủy bỏ

tiền đầu vào


Dữ liệu về octan xếp hạng, hàm lượng lưu huỳnh về

Dữ liệu nhu cầu, khả năng sử dụng, công suất


SUN

Hủy riêng tư Khi Boolean

Chức năng Công cộng Hiển thị Hộp thoại Loại đầu vào (inputType1 As Boolean,
-
inputType2 As Boolean, inputType3 As Boolean) As Boolean Call Initialize Me. If
Not, hủy bỏ Then
inputType1 = chkInputs 1.Value inputType2 = chkinputs2.Value
inputType3 = chkinputs3.Value End If ShowinputTypesDialog = Không hủy bỏ
Unload Me End Function
II

Private Sub Initialize ()


"Đã đánh dấu tất cả các hộp1.Valuevào ban đầu. = True chkInputs2.Value =
True
chkinputs3.Value = True End Sub

Private Sub Sub cmdOK_Click () Me.Hide


hủy
= False End Sub

Private Sub cmdCancel_Click () Me.Hide


hủy
= True End Sub

Private Sub UserForm_QueryClose (hủy As Integer, CloseMode As Integer)


If CloseMode = vbFormControlMenu Then cmdCancel_Click End Sub
Copyright 2016 Cengage Learning. Mọi quyền được bảo lưu. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do điện tử
quyền, một số nội dung của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập
cho rằng bất kỳ nội dung nào bị đàn áp không ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền
xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo yêu cầu.

A Kết hợp Ứng dụngn


449

frmlnputs 1 Thiết
kế của frminputs1 được thể hiện trong Hình
20.17. Nó chứa các nút OK và Cancel , nhãn giải thích, hai khung để
nhóm các đầu vào và bảy hộp văn bản và nhãn tương ứng. Ba hộp văn bản
trong nhóm Đơn vị chi phí thô được đặt tên là txtCrude1, txtCrude2 và
txtCrude3. Ba hộp văn bản trong nhóm Đơn gas được đặt tên là txtGast,
txtGas2 và txtGas3. Finally, hộp văn bản chi phí sản xuất được đặt tên là
txtProdCost.
Con khởi tạo nắm bắt các giá trị trong trang tính Mô hình (từ lần chạy
trước, nếu có) và nhập chúng vào các hộp văn bản, sau đó hàm Hộp
thoại Showinputs 1 nhận các lựa chọn của người dùng và đặt chúng trở lại
trang tính Mô hình. Lưu ý rằng nó sử dụng ion hàm Valđể chuyển đổi một
chuỗi (luôn là kết quả từ một văn bản box) sang
trang tính). Nếu không, không thể thực hiện các phép toán số học trên
các ô này trong trang tính. Hàm Valid thực hiện một số kiểm tra lỗi để
đảm bảo rằng đầu vào của người dùng là số và số dương.

Hình 20.17Mô tả của frmInputsl

Monetary đầu vào

Các tệ vào bao gồm chi mua phí mỗi gallon cho mỗi loại dầu thô, giá bán phí trên mỗi gallon
cho mỗi loại xăng dầu, mộtd chi tiền chuyển đổi một gallon thành thô một đầu gallon _ xăng.
Hủy

Đơn khí đốt giá


Đơnvị-thô chi phí
Thô 1:
Thô 2:
Khí 1:
- Glà 2:

Thô 3:
Glà 3

Chi phí sản xuất một gallon xăng - từ một gallon Tư thô:

nhân cancel Như Boolean

Công hàm Hộp thoại Showinputs 1 () Khi cuộc


gọi Boolean Khởi tạo tôi. Show Nếu Không hủy thì
Nhập thông tin người dùng nhập vào trang Mô hình (ẩn). Với wsModel.Range
("PurchCosts")
.Cells (1).Giá trị = Val (txtCrude 1.Text) .Cells (2) .Value = Val (txtCrude2.Text)
.Cells (3) .Value = Val (txtCrude3.Text) End With wsModel.Range ("SellPrices")
.Cells (1) .Value = Val (txtGas1.Text) .Cells (2) .Value = Val (txtGas2.Text) .Cells
(3) .Value = Val (txtGas3.Text)

Copyright 2016 Cengage Học tập. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung
của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không
ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo
yêu cầu.

Editocina yright 2 cóning sạch hơn,


ít bị Reset deres Mary mate bianche parte
cipato de cont
đã cho phép xóa và xuất hiện bất kỳ nội dung
nào tiếp theo
trong
450 Chương 20

End With
wsModel.Range ("ProdCost"). Giá trị = Val (txtProdCost.Văn bản) Kết thúc Nếu
Hộp thoại Showinputs 1 = Không hủy
cho tôi Kết thúc Chức năng
Riêng tư Phụ Khởi tạo ()
'Khởi tạo với các giá trị hiện tại trong trang Mô hình (ẩn). Với wsModel.Range
("Chi phí Purch")
txtCrude1.Text = .Cells (1) .Value txtCrude2.Text = .Cells (2)
.Value txtCrude3.Text = .Cells (3) .Value End With With wsModel.Range
( "SellPrices")
txtGas1.Text = .Cells (1) .Value txtGas2.Text = .Cells (2)
.Value txtGas3 .Text= .Cells (3) End With
txtProdCost.Text = wsModel.Range (" ProdCost "). Giá trị End Sub

Private Function Valid () As Boolean


Dim ctl As Control Valid = True 'Kiểm tra xem các hộp văn bản có giá trị số dương
không. Đối với mỗi ct Trong tôi. Kiểm soát
Nếu TypeName (ctl) = "TextBox" Thì
Nếu ctl.Value = "" Hoặc Không phải là Số (ctl) Thì
Hợp lệ = Sai MsgBox "Nhập các giá trị số dương vào tất cả các hộp.", -
vbInformation, "nhập
ctl _
lệ .
"
hợp Mục khôngHàm

Private Sub cmdOK_Click ()


If Valid Then Me.Hide
cancel = False End Sub

Private Sub cmdCancel_Click () Me.Hide


hủy
= True End Sub

Private Sub UserForm_QueryClose (hủy As Integer, CloseMode As


Integer)
Nếu CloseMode = vbFormControlMenu Thì cmdCancel_Click End Sub

Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền
điện tử, một số nội dung của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên
tập cho rằng bất kỳ nội dung nào bị đàn áp không ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu
quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo yêu cầu.
Anh ta sẽ vào đêm tiếp theo và tôi thực hiện
một ứng dụng trộntrên
451

frminputs2 và frminputs3
Hai dạng đầu vào khác, fvà frmInputs, được thể hiện trong Hình 20.4 và
20.5,rminputs2rất giống nhau. Ví dụ, frmInputs2 chứa các nút OK và
Cancel, mộtnhãn giải thích, bốn khung để nhóm các đầu vào và 12hộp te xt và
tương ứng. Mã đằng sau hai biểu mẫu này rất giống với mã frmInputs
1, vì vậy nó không được liệt kê ở đây.

20.7 Mô-đun

Trong hầu hết các ứng dụng, mã VBA trong mô-đun thực hiện phần
lớn công việc. Tuy nhiên, đây không phải là trường hợp ở đây. Có một
mô-đun Hỗn hợp chính "hiển thị" các biểu mẫu thích hợp, nắm bắt các đầu
vào của người dùng. Do đó, tất cả các việc phụ của Hỗn hợpcần làm là hiển
thị các biểu mẫu và sau đó chạyBộ giải. (Lưu ý rằng trước tiên nó phải bỏ ẩn
Mô hình trang tính. Không thể chạy trình giải trên một mô hình trong một
trang tính ẩn.) Ngoài điều này, mô-đun chỉ chứa các con điều hướng
(không được hiển thị ở đây). ChúngMainBlendingđượcđính kèm với các nút trên
trang tính Báo cáo và .

nhauCode

Sub Main Blending ()


'Sub này chạy khi user nhấp vào nút trên trang Giải thích . Dim inputType1 As Boolean,
inputType2 As Boolean, inputType3 As Boolean Dim solverStatus As Integer

' Tìm loại đầu vào mà người dùng muốn để xem/thay đổi. Nếu hộp thoại frmInput
Types.ShowInput Types (inputType1, inputType2, inputType3) Sau đó,

'Hiển thị các biểu mẫu đầu vào mà công ty chúng tôiđã yêu cầu. ' Thoát nếu việc sử
dụngr hủy bỏ bất kỳ biểu mẫu nào trong số chúng. Nếu inputType1 Then
If Not frminputs 1. Hộp thoại Showinputs 1 Sau đó thoát Sub End I f If inputType2 Then
If Not frminputs2.Showinputs2Dialog Then Exit Sub End If If inputType3 Then
If Not frmlnputs3.Showinputs3Dialog Then Exit Sub End If

Application.ScreenUpdating = False
"Bỏ ẩn và kích hoạt Model sheet, and chạy Bộ giải. Với wsModel
.Vosystem = True
Kích hoạt Kết thúc Với

'Trình giải quyết cuộc gọi và kiểm tra xem không có giải pháp khả thi nào.
solverStatus = SolverSolve (UserFinish: = True) If solverStatus = 5 Then

Copyright 2016 Cengage Learning. Đã đăng ký Bản quyền. Không được sao chép, quét hoặc sao chép toàn bộ hoặc một phần. Do quyền điện tử, một số nội dung
của bên thứ ba có thể bị chặn khỏi Sách điện tử và / hoặc (các) Chương trình điện tử. Bài đánh giá của ban biên tập cho rằng bất kỳ nội dung nào bị đàn áp không
ảnh hưởng nghiêm trọng đến trải nghiệm học tập tổng thể. Cengage Learning bảo lưu quyền xóa nội dung bổ sung bất kỳ lúc nào nếu các hạn chế quyền tiếp theo
yêu cầu.

452 Chuyên 20

Không cógiải pháp khả thi nào, hãybáo cáo điều này và bỏ việc. MsgBox "Không
cógiải pháp khả thi cho vấn đề với các đầu vào" _
& "này. Hãy thử lại với các đầu vào khác.", -
vblnformation, "Không khả thi" wsModel. Visible = False Call ViewExplanation

Else
Có một giải pháp, vì vậy hãy báo cáo nó trong trang Report. wsModel. Visible = False Với
wsReport
Visible = True .Activate
("A1"). Select End With End If

Application.ScreenUpdating = True End If End Sub

20.8 Tóm tắt


Ứng dụng này là một ví dụ tuyệt vời về chức năng.Rangemà bạn có thể đạt được với rất
ít mã VBA. Mặc dù tôi không nhất thiết khuyến khích bạn tạo tất cả các ứng
dụng, bắt đầu lại từ đầu, trong các chương còn lại,tôi khuyên bạn nên thử tự
phát triển ứng dụng kết hợp này. Cóhai cách bạn có thể tiến hành. Đầu
tiên, bạn có thể mở một sổ làm việc mới, trống và tạo dụngứng / mô hình,
biểu mẫu người dùng và mã. Ngoài ra,bạn có thể tạo một bản sao của
tệp Blending Oil.xlsm . Sau đó, bạn có thể xóa biểu mẫu người dùng và
mô-đun khỏi bản sao của mình và tự tạo lại chúng bằng cách sử dụng
các giải thích trong chương này làm hướng dẫn. Trong cả hai trường
hợp, bạn sẽ thấycóno các bước khó khăn trong ứng dụng này; chỉ có rất
nhiều bước tương đối đơn giản. Trên thực tế, bạn sẽ thấy rằng nhiều bước
trong số này khá lặp đi lặp lại. Do đó, bạn nên tìm kiếm bất kỳ phím tắt nào
có thể, chẳng hạn như sao chép và dán, để giảm thời gian phát triển.

BÀI TẬP

1.

2.
Tất cả các biểu đồ trong application này đều là loại.biểu đồ cột Thay đổi ứng
dụng để chúng là các loại biểu đồ khác nhau. (Bạn có thể quyết định cái nào
bạn thích.) Bạn có cần viết lại bất kỳ mã VBA nào không? Tiếp tục Bài tập 1,
giả sử bạn muốn cho bạnlựachọn các loại biểu đồ . Ví dụ: giả sử bạn muốn
cung cấp cho người dùng hai lựa chọn: loại biểu đồ current hoặc một số
loại biểu đồ khác. (Bạn có thể chọn loại khác.) Thay đổi ứng dụng để cho
phép lựa chọn này. Bây giờ bạn sẽ phải thêm một số mã VBA mới, cùng
với một biểu mẫu người dùng khác. Tuy nhiên, bạn không bao giờ cần phải tạo bất kỳ
biểu đồ nào từ đầu với VBA. Bạn chỉ cần sửa đổi các biểu đồ hiện có.

Bản quyền 2016 Cengage Learning. Đã đăng ký Bản quyền. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party
content may be suppressed from the eBook and/or eChapter(s). Editorial review has deemed that any suppressed content does not materially affect the overall
learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.

You might also like