<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Cách dùng vòng lặp for each trong Excel VBA</title>
<meta name="description" content="Cách dùng vòng lặp for each trong Excel VBA - Savefile - Tin Tức -...">
<meta name="author" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.">
<meta name="copyright" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :. [admin@nguoicodonvn2008.info]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Cách dùng vòng lặp for each trong Excel VBA">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;cach-dung-vong-lap-for-each-trong-excel-vba-7347.html">
<meta property="og:site_name" content=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.">
<meta property="og:url" content="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-dung-vong-lap-for-each-trong-excel-vba-7347.html">
<link rel="shortcut icon" href="https://www.nguoicodonvn2008.info/favicon.ico">
<link rel="canonical" href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-dung-vong-lap-for-each-trong-excel-vba-7347.html">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/karaoke-dual/" title="Tin Tức - Karaoke Dual" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/nhac-tre/" title="Tin Tức - Nhạc trẻ" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tru-tinh/" title="Tin Tức - Trữ tình" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/nuoc-ngoai/" title="Tin Tức - Nước ngoài" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/remix/" title="Tin Tức - Remix" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tam-su-tinh-yeu/" title="Tin Tức - Tâm sự tình yêu" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tho-suu-tam/" title="Tin Tức - Thơ sưu tầm" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/cuoc-song/" title="Tin Tức - Cuộc sống" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/phan-mem/" title="Tin Tức - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/kien-thuc-may-tinh/" title="Tin Tức - Kiến thức máy tính" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/hoc-tap/" title="Tin Tức - Học tập" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/tai-lieu/" title="Tin Tức - Tài liệu" type="application/rss+xml">
<link rel="alternate" href="https://www.nguoicodonvn2008.info/vi/news/rss/de-thi/" title="Tin Tức - Đề thi" type="application/rss+xml">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://www.nguoicodonvn2008.info/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://www.nguoicodonvn2008.info/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/style.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://www.nguoicodonvn2008.info/themes/default/css/news.css">
<link rel="stylesheet" href="https://www.nguoicodonvn2008.info/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">.&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.</h2>
		<p class="pull-right"><a title=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;." href="https://www.nguoicodonvn2008.info/">https://www.nguoicodonvn2008.info</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Cách dùng vòng lặp for each trong Excel VBA</h1>
		<ul class="list-inline">
			<li>Thứ năm - 03/08/2023 09:53</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
		</div>
				<div class="imghome">
			<img alt="Cách dùng vòng lặp for each trong Excel VBA" src="https://st.quantrimang.com/photos/image/2023/08/03/excel-vba-for-each-loop.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p style="text-align: justify;"><strong>Vòng lặp for each trong VBA</strong>&nbsp;được dùng như thế nào? Dưới đây là mọi điều bạn cần biết về&nbsp;<strong>for each VBA</strong>.</p>

<p style="text-align: justify;"><img alt="Xử lý dữ liệu trong Excel VBA" data-i="0" data-src="https://st.quantrimang.com/photos/image/2023/04/18/excel-vba-for-each-7.jpg" data-was-processed="true" height="340" src="https://st.quantrimang.com/photos/image/2023/04/18/excel-vba-for-each-7.jpg" width="650" /></p>

<p style="text-align: justify;">Gần như mọi vòng lặp (loop) trong VBA đều hoạt động tốt với các đối tượng. Vòng lặp for each là một trong số lựa chọn tốt nhất cho bạn làm việc với bộ sưu tập đối tượng. Nếu mới làm quen Excel VBA và đang tìm cách làm chủ vòng lặp for each, học hỏi từ những ví dụ là cách hay. Dưới đây là tất cả những điều bạn cần biết về vòng lặp for each trong Microsoft Excel.</p>

<h2 style="text-align: justify;">Công thức của vòng lặp for each trong Excel VBA</h2>

<p style="text-align: justify;">Công thức vòng lặp for each khá giống với vòng lặp thông thường trong Excel VBA. Dưới đây là công thức chung:</p>

<pre id="pre0">
<code>For each variable_name in object_collection

&#91;statement&#93;

&#91;statement&#93;

&#91;statement&#93;

Next variable_name</code></pre>

<p style="text-align: justify;">Vòng lặp bắt đầu bằng từ khóa “for each”. Bạn có thể dùng bất kỳ tên biến, theo sau là bộ sưu tập đối tượng. Đối tượng trong vòng lặp for each có thể là ô, phạm vi, bảng tính, thậm chí workbook. Vòng lặp này trong Excel cho bạn sự linh hoạt khi làm việc với các bộ sưu tập Excel khác nhau.</p>

<p style="text-align: justify;">Vòng lặp quay vòng qua từng bộ sưu tập và lưu trữ tham chiếu trong tên biến đã được xác định. Sau khi thực thi, VBA chạy các lệnh đã được lưu trữ trong vòng lặp và chuyển sang đối tượng tiếp theo ở bộ sưu tập. Giờ hãy cùng xem xét ví dụ để hiểu hơn về cấu trúc code.</p>

<h2 style="text-align: justify;">Cách dùng vòng lặp for each trong Excel VBA</h2>

<p style="text-align: justify;">Giả sử bạn muốn in một số trong ô A1 tới A10. Cách tốt nhất là dùng vòng lặp for each với hàm phạm vi và để code thực hiện việc cần thiết. Dưới đây là cách bạn có thể làm nhiệm vụ đơn giản này:</p>

<p style="text-align: justify;">1. Mở trình chỉnh sửa code&nbsp;<strong>VBA</strong>&nbsp;bằng cách nhấn<strong>&nbsp;Alt+ F11</strong>.</p>

<p style="text-align: justify;">2. Chèn một mô đun bằng cách click&nbsp;<strong>Module</strong>&nbsp;trong tab<strong>&nbsp;Insert</strong>.</p>

<p style="text-align: justify;"><img alt="Vòng lặp for each trong Excel" data-i="1" data-src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-1.jpg" data-was-processed="true" height="247" src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-1.jpg" width="650" /></p>

<p style="text-align: justify;">3. Tạo&nbsp;<strong>sub-routine</strong>&nbsp;bằng lệnh&nbsp;<strong>sub()</strong>&nbsp;trong cửa sổ mô đun chỉnh sửa code. Đảm bảo bạn gắn một tên ý nghĩa cho&nbsp;<strong>sub-routine&nbsp;</strong>này. Ví dụ ở đây bạn có thể dùng tên<strong>&nbsp;for_each_loop</strong>.</p>

<p style="text-align: justify;">Giờ những vấn đề cơ bản đã được giải quyết, đã tới lúc viết code. Trong&nbsp;<strong>sub-routine</strong>, nhập lệnh sau:</p>

<pre id="pre1">
<code>Dim cell as range

For each cell in Sheets(&quot;Sheet1&quot;).Range(&quot;A1:A10&quot;)

cell.value = 10

Next cell</code></pre>

<p style="text-align: justify;">Khi chạy code, biến c sẽ lưu giá trị của A1. Tiếp theo, khi nó chuyển sang câu lệnh trong vòng lặp, nó sẽ đánh giá lệnh và nhập giá trị 10 trong ô đã được xác định, ví dụ, ô A1.</p>

<p style="text-align: justify;">Cuối cùng, khi chuyển sang từ khóa Next, nó chuyển tới giá trị tiếp theo, ví dụ, ô A2. Vòng lặp chạy cho tới khi nó tới ô A10. Đây là kết quả cuối cùng:</p>

<p style="text-align: justify;"><img alt="Vòng lặp for each trong Excel VBA" data-i="2" data-src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-2.jpg" data-was-processed="true" height="334" src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-2.jpg" width="650" /></p>

<h2 style="text-align: justify;">Dùng vòng lặp với các đối tượng: ô, bảng tính và workbook</h2>

<p style="text-align: justify;">Excel có 3 kiểu đối tượng chính mà bạn có thể làm việc thường xuyên. Chúng là ô, sheet và workbook. Dưới đây là cách dùng vòng lặp for each với 3 kiểu đối tượng này.</p>

<h3 style="text-align: justify;">Làm việc với cả ô và vòng lặp</h3>

<p style="text-align: justify;">Giả sử bạn muốn thêm một giá trị và một số điều kiện định dạng cho một phạm vi ô trong Sheet1. Ở bước đầu tiên, bạn cần xác định điều kiện trong vòng lặp, được theo sau bởi các lệnh định dạng.</p>

<p style="text-align: justify;">Nhập code sau trong một sub-routine.</p>

<pre id="pre2">
<code>Sub for_each_loop()
Dim c As Range
For Each c In Sheets(&quot;Sheet1&quot;).Range(&quot;A1:A10&quot;)
With c

.Value = 10

.Font.Color = vbRed

.Font.Bold = True

.Font.Strikethrough = True
End With
Next c
End Sub</code></pre>

<p style="text-align: justify;"><img alt="Làm việc với ô và vòng lặp trong excel" data-i="3" data-src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-3.jpg" data-was-processed="true" height="348" src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-3.jpg" width="650" /></p>

<p style="text-align: justify;">Hàm<strong>&nbsp;with</strong>&nbsp;hữu ích khi chạy nhiều hàm với một đối tượng cụ thể. Vì bạn muốn thực hiện một loạt nhiệm vị với biến c, bạn có thể kết hợp tất cả chúng bằng một hàm with…end with.</p>

<p style="text-align: justify;">Vòng lặp cân bằng giá trị của c với giá trị từng ô và nhập giá trị là 10. Ngoài ra, nó thay đổi màu sắc của ô sang đỏ, in đậm và gạch chéo giá trị đó. Khi đã hoàn thành tất cả các bước, nó chuyển sang giá trị đã được xác định tiếp theo trong phạm vi này.</p>

<h3 style="text-align: justify;">Dùng vòng lặp để kiểm soát bảng tính</h3>

<p style="text-align: justify;">Tương tự ví dụ trên, bạn có thể dùng vòng lặp for each để kiểm soát bảng tính. Ví dụ về cách thay đổi tên của Sheet1 thành Sheet3 bằng VBA.</p>

<p style="text-align: justify;">Bạn có thể dùng code sau để đổi lại tên một worksheet hiện có trong Excel bằng VBA:</p>

<pre id="pre3">
<code>Sub for_each_loop_sheets()
For Each sht In ThisWorkbook.Sheets
If sht.Name = &quot;Sheet1&quot; Then
sht.Name = &quot;Sheet3&quot;
End If
Next sht
End Sub
</code></pre>

<p style="text-align: justify;"><img alt="Lặp để kiểm soát sheet" data-i="4" data-src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-4.jpg" data-was-processed="true" height="349" src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-4.jpg" width="650" /></p>

<p style="text-align: justify;">Code này lặp qua từng sheet trong workbook và kiểm tra tên của từng sheet. Nếu nó thấy Sheet1, nó sẽ đổi tên đó thành Sheet3. Cứ tiếp tục như vậy qua các sheets còn lại. Khi tới sheet cuối cùng, nó thoát vòng lặp và sub-routine.</p>

<h3 style="text-align: justify;">Chuyển workbook bằng vòng lặp</h3>

<p style="text-align: justify;">Cuối cùng, bạn có thể dùng vòng lặp for each trong Excel để chuyển qua các workbook khác nhau và chạy nhiệm vụ cụ thể. Xem xét ví dụ sau để thấy rõ điều đó:</p>

<p style="text-align: justify;">Bạn có thể dùng lệnh VBA để thêm 3 workbook mới và đóng toàn bộ workbook đã mở. Viết code sau để thực hiện điều đó:</p>

<pre id="pre4">
<code>Sub loop_wrkbook()
Dim wrkbook as workbook
Workbooks.Add

Workbooks.Add

Workbooks.Add
For Each wrkbook In Workbooks
wrkbook.Close
Next wrkbook
End Sub</code></pre>

<p style="text-align: justify;"><img alt="Chuyển workbook bằng vòng lặp" data-i="5" data-src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-6.jpg" data-was-processed="true" height="350" src="https://st.quantrimang.com/photos/image/2023/04/18/for-each-excel-vba-6.jpg" width="650" /></p>

<h3 style="text-align: justify;">Dùng lệnh If lồng nhau với loop</h3>

<p style="text-align: justify;">Giống như ví dụ trên, bạn có thể sử dụng lệnh IF trong vòng lặp để kiểm tra các điều kiện cụ thể. Giờ hãy thử thay đổi màu nền của ô dựa trên các giá trị nằm trong ô đó.</p>

<p style="text-align: justify;">Ô A1:A20 có một vài số ngẫu nhiên. Bạn có thể viết một vòng lặp để duyệt qua từng ô đã cho trong phạm vi. Nếu giá trị của ô đó nhỏ hơn 10, màu ô đó sẽ đổi sang màu đỏ. Nếu giá trị ô đó lớn hơn 10, nó sẽ chuyển thành màu xanh lá. Dùng code sau cho mục đích này:</p>

<pre id="pre5">
<code>Sub loop_w_if()
Dim c As Range
For Each c In Sheets(&quot;Sheet4&quot;).Range(&quot;A1:A20&quot;)
If c.Value &lt; 10 Then

c.Interior.ColorIndex = 3
Else: c.Interior.ColorIndex = 4

End If
Next c
End Sub</code></pre>

<p style="text-align: justify;">Kết quả bạn nhận được trông sẽ như sau:</p>

<p style="text-align: justify;"><img alt="Kết quả dùng lệnh if lồng nhau với vòng lặp" data-i="6" data-src="https://st.quantrimang.com/photos/image/2023/08/03/excel-vba-for-each-loop.jpg" data-was-processed="true" height="349" src="https://st.quantrimang.com/photos/image/2023/08/03/excel-vba-for-each-loop.jpg" width="650" /></p>

<p style="text-align: justify;">Excel VBA không giới hạn chỉ ở vòng lặp<strong>&nbsp;for each</strong>. Bạn còn có nhiều lựa chọn hữu ích khác để triển khai các hàm khác dễ dàng. Hi vọng bài viết giúp bạn hiểu rõ hơn về cách dùng vòng lặp for each VBA Excel.</p>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				Quantrimang.com
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-dung-vong-lap-for-each-trong-excel-vba-7347.html" title="Cách dùng vòng lặp for each trong Excel VBA">https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/cach-dung-vong-lap-for-each-trong-excel-vba-7347.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; .&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.
		</div>
		<div id="contact">
			<a href="mailto:admin@nguoicodonvn2008.info">admin@nguoicodonvn2008.info</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://www.nguoicodonvn2008.info/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
		</script>
		<div class="car-top">
  <span><img src="https://www.nguoicodonvn2008.info/themes/default/images/car.png" alt=""></span>
</div>
<div id="run_cronjobs" style="visibility:hidden;display:none;"><img alt="cron" src="/index.php?second=cronjobs&amp;p=h4Q03hwo" width="1" height="1" /></div>
<script src="https://www.nguoicodonvn2008.info/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_e856T",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://www.nguoicodonvn2008.info/assets/js/language/vi.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/global.js"></script>
<script src="https://www.nguoicodonvn2008.info/assets/js/site.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/news.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/main.js"></script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://www.nguoicodonvn2008.info",
            "logo": "https://www.nguoicodonvn2008.info/uploads/angel.gif"
        }
        </script>
<script src="https://www.nguoicodonvn2008.info/themes/default/js/bootstrap.min.js"></script>
<script type="text/javascript">
var $scrolltop = $('.car-top');
$scrolltop.on('click', function () {
    $('html,body').animate({
        scrollTop: 0
    }, 800);
    $(this).addClass("car-run");
    setTimeout(function(){ $scrolltop.removeClass('car-run');}, 1000);
    return false;
});
$(window).on('scroll', function ()
{ 
    if($(window).scrollTop() >= 200)
    {
        $scrolltop.addClass("show");
        $scrolltop.addClass("car-down");
    }
    else
    {
       $scrolltop.removeClass("show");
       setTimeout(function(){ $scrolltop.removeClass('car-down');}, 300);
    }
});
</script>
</body>
</html>