hỏi về vòng lặp for (1 người xem)

  • Thread starter Thread starter LOIKS
  • Ngày gửi Ngày gửi
Liên hệ QC

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

LOIKS

Thành viên chính thức
Tham gia
10/8/18
Bài viết
97
Được thích
7
mọi người ơi khi mình dùng vòng lặp For thì nó chỉ chạy theo hàng thôi, có cách nào để cho nó chạy theo cột không nhỉ ? cảm ơn mọi người
 
mọi người ơi khi mình dùng vòng lặp For thì nó chỉ chạy theo hàng thôi, có cách nào để cho nó chạy theo cột không nhỉ ? cảm ơn mọi người
hi hi..... có người để mình trả lời đây roài.
Chạy được cả hàng và cột bạn nhé!
Bạn hãy tìm hiểu về mảng sẽ biết ngay.
Mình chưa đủ trình độ để trả lời bạn.
Mình cũng chưa biết dùng đây nè
 
mọi người ơi khi mình dùng vòng lặp For thì nó chỉ chạy theo hàng thôi, có cách nào để cho nó chạy theo cột không nhỉ ? cảm ơn mọi người
For là 1 loại vòng lặp, vòng lặp thì nó sẽ chạy theo cái mình chỉ ra, không phân biệt hàng hay cột hay gì gì đó, nó chỉ biết chạy theo quy luật mình vạch ra sẵn thôi
 
nếu làm trực tiếp trên sheet
chạy theo cột

Set Rng = Range("a1:d3")
For i = 1 To Rng.Columns.Count
MsgBox Rng(1, i)
Next

chạy theo dòng, hết dòng qua cột mới
Set Rng = Range("a1:d3")
For i = 1 To Rng.Rows.Count
For j = 1 To Rng.Columns.Count
MsgBox Rng(i, j)
Next
Next

khai báo mảng thì nó làm việc trên mảngđại khái là vậy
 
For là 1 loại vòng lặp, vòng lặp thì nó sẽ chạy theo cái mình chỉ ra, không phân biệt hàng hay cột hay gì gì đó, nó chỉ biết chạy theo quy luật mình vạch ra sẵn thôi
Anh ơi cho em hỏi có quy tắc hoặc công thức nào để viết vòng lặp for không hở anh?
 
Anh ơi cho em hỏi có quy tắc hoặc công thức nào để viết vòng lặp for không hở anh?
bạn hỏi quy tắc nào thì tôi cũng bó tay, bạn cứ hình dung ra những cái gì mà nó lặp đi lặp lại theo một cái gì đó, thì chúng ta có thể sử dụng vòng lặp giải quyết, còn nếu bạn muốn rõ hơn thì có thể sách laptop đi học, người ta sẽ cho bạn các vấn đề cụ thể
 
bạn hỏi quy tắc nào thì tôi cũng bó tay, bạn cứ hình dung ra những cái gì mà nó lặp đi lặp lại theo một cái gì đó, thì chúng ta có thể sử dụng vòng lặp giải quyết, còn nếu bạn muốn rõ hơn thì có thể sách laptop đi học, người ta sẽ cho bạn các vấn đề cụ thể
Học có lâu không hở anh?
 
Học có lâu không hở anh?
Tôi nghĩ học để biết đọc biết viết không lâu đâu, chỉ cần 8 buổi là ok, còn muốn học để hiểu sâu thì cần phải có thời gian và kinh nghiệm giải quyết các vấn đề trên diễn đàn có các lớp cơ bản về macro, nếu bạn thật sự cần thì có thể đi học các lớp này
 
hi hi... em đăng ký
Anh dạy em với nhé
Xem ra bạn rất ham học VBA. Vậy thì tại sao có ông thầy sát bên bạn mà không chịu hỏi và học.
Bạn vào cửa sổ VBA, vào khung search góc trên bên phải màn hình. Bạn có thể hỏi bất kỳ thứ gì bạn muốn hỏi. Hầu hết là có câu trả lời và ví dụ minh họa. Cam đoan sau 1 buổi học bạn sẽ có thể viết được vài cặp lệnh cơ bản và tối quan trọng như If ....End If, For... Next
Thú thật mình cũng chỉ học trên GPE và help của VBA trong Excel. Còn nếu như bạn ở sài gòn hay Bình dương mình sẽ giới thiệu cho bạn vài người rất khá VBA để bạn trao đổi.

Chúc vui vẻ
 
Vòng lặp for có 2 dạng:
- Dạng
For i = a to b [step k]
...
Next
Biến đếm i và các cận trên b cận dưới a phải là số. Step là tùy chọn, nếu không có thì mặc định =1. Vòng lặp for nếu không có lệnh thoát sớm như exit for là loại vòng lặp có số lần lặp xác định trước khi lặp, đầu tiên i = a, qua mỗi lần lặp thì i=i+k (nếu không có k thì i=i+1), chương trình kiểm tra nếu i<=b (với k>0) hay i>=b (với k<0) thì vòng lặp tiếp tục chạy.
- Dạng 2 là vòng lặp for each next dùng để làm việc với tập hợp. Cái này thì mình cũng không biết. Số phần tử của tập hợp cũng được biết trước khi lặp.
 
Xem ra bạn rất ham học VBA. Vậy thì tại sao có ông thầy sát bên bạn mà không chịu hỏi và học.
Bạn vào cửa sổ VBA, vào khung search góc trên bên phải màn hình. Bạn có thể hỏi bất kỳ thứ gì bạn muốn hỏi. Hầu hết là có câu trả lời và ví dụ minh họa. Cam đoan sau 1 buổi học bạn sẽ có thể viết được vài cặp lệnh cơ bản và tối quan trọng như If ....End If, For... Next
Thú thật mình cũng chỉ học trên GPE và help của VBA trong Excel. Còn nếu như bạn ở sài gòn hay Bình dương mình sẽ giới thiệu cho bạn vài người rất khá VBA để bạn trao đổi.

Chúc vui vẻ
Anh
quanghai1969
ơi, anh làm ơn hướng dẫn em cách "search góc trên bên phải màn hình" với. em chưa biết cách
Cảm ơn anh rất nhiều
 
Nó thể lamd việc theo hàng, theo cột, theo đường chéo, hình tròn, hình vuông, và nhiều cái nữa.
 
Anh
quanghai1969
ơi, anh làm ơn hướng dẫn em cách "search góc trên bên phải màn hình" với. em chưa biết cách
Cảm ơn anh rất nhiều
Từ cửa sổ bảng tính Excel, bạn bấm tổ hợp phím Alt+F11, thao tác này sẽ mở cửa sổ VBA. Tại đây bạn sẽ tìm thấy ô tìm kiếm phía trên góc phải của màn hình. Hy vọng bạn tìm được. Tạm biệt Topic này nhé
1534499767046.png
 
For là 1 loại vòng lặp, vòng lặp thì nó sẽ chạy theo cái mình chỉ ra, không phân biệt hàng hay cột hay gì gì đó, nó chỉ biết chạy theo quy luật mình vạch ra sẵn thôi
Đây là ngữ cảnh cơ sở dữ liệu mà.
Trong hầu hết các CSDL, code vòng lặp chỉ có thể áp dụng trên dòng thôi, muốn áp dụng trên cột cần phải viết SQL động.
 
Từ cửa sổ bảng tính Excel, bạn bấm tổ hợp phím Alt+F11, thao tác này sẽ mở cửa sổ VBA. Tại đây bạn sẽ tìm thấy ô tìm kiếm phía trên góc phải của màn hình. Hy vọng bạn tìm được. Tạm biệt Topic này nhé
View attachment 202053
Vâng cảm ơn anh!
Tạm biệt anh nhé
chúc anh luôn vui vui
Bài đã được tự động gộp:

SQL động là gì hả bạn
hi hi... phải redim bạn à
 
SQL động là gì hả bạn
Trong ngữ cảnh T-SQL (SQL Server), SQL động (dynamic query string) là câu lệnh cấu trúc theo kiểu chuỗi và gọi lệnh Execute để chạy.
Nếu bạn tìm các thớt nói về ADO ở dễn đàn này, sẽ thấy các câu lệnh SQL trong đó đều là một hình thức SQL động.

@các bạn khác:
cấu trúc của 1 bảng trong CSDL khác với 1 mảng.
Đối với mảng, mấy chiều cũng được và hầu như cách sử dụng các chiều không khác nhau.
Đối với CSDL LH, một bảng chỉ có 2 chiều, và cách làm việc chiều dòng hoàn toàn khác biệt với chiều cột. Các chiều khác là cách kết nối giữa các bảng, lại càng khác biệt hơn nữa. Một số CSDL lại còn có cách phân miền (partition)
 
Nếu e là dân kỹ thuật thì Vòng lặp For hay ứng dụng trong việc nội suy tuyến tính 1 chiều và 2 chiều.... thậm chí cao hơn 1 chút nữa có thể giải quyết giải hệ phương trình nhiều ẩn theo pp ma trận cũng được và vv...các ứng dựng khác nữa. Các code nội suy này trên diễn đàn khá nhiều... e tự tìm nhé. Còn để hiểu rõ hơn về vòng lặp for...nếu chịu khó e tìm sách Pascal và VB6 đọc là được.
 
Nếu e là dân kỹ thuật thì Vòng lặp For hay ứng dụng trong việc nội suy tuyến tính 1 chiều và 2 chiều.... thậm chí cao hơn 1 chút nữa có thể giải quyết giải hệ phương trình nhiều ẩn theo pp ma trận cũng được và vv...các ứng dựng khác nữa. Các code nội suy này trên diễn đàn khá nhiều... e tự tìm nhé. Còn để hiểu rõ hơn về vòng lặp for...nếu chịu khó e tìm sách Pascal và VB6 đọc là được.
Chỉ tầm bậy. Mỗi ngôn ngữ có cách sử lý vòng lặp for khác nhau. Tơ lơ mơ đọc nhầm thì áp dụng trật lất.
Có ngôn ngữ cho phép thay đổi giới hạn trị cuối, có ngôn ngữ không cho.
Có ngôn ngữ cho phép thay đổi trị biến đếm trong vòng lặp, có ngôn ngữ thì không.
Có ngôn ngữ cho phép đặt biến đếm là biế nội của vòng lặp (hết vòng lặp là hết phạm vi của biến)
Cũng có ngôn ngữ chả bắt buộc vòng lặp for phải dùng biến đếm (hoạt động giống như while).
 
VBA yêu cầu biến đếm phải là số còn Pascal có thể for từ A đến Z.
 
Có ngôn ngữ cho phép đặt biến đếm là biế nội của vòng lặp (hết vòng lặp là hết phạm vi của biến)
.
Tôi thêm chữ chỉ. Vd. trong Delphi (Object Pascal) thì biến bắt buộc phải khai báo trong sub/function có FOR - local variable.

Thêm: có ngôn ngữ thì sau vòng lặp biến có giá trị bằng giá trị khi kết thúc FOR (VBA), nhưng trong ngôn ngữ khác thì sau khi FOR kết thúc thì biến không xác định. Vd. như trong Delphi thì sau FOR biến không xác định. Tức nó có giá trị nào đó nhưng Delphi không đảm bảo là giá trị đó phải là thế này hay thế kia.
 
Chúng ta có thể tìm được ý tưởng hữu ích từ những giáo trình ngôn ngữ lập trình khác dù không phải về VBA. Vấn đề là có ai chịu khó động não không? Kể cả với ngôn ngữ Assembly dù bản thân tôi đọc mãi cũng chả hiểu và Assembly cũng chả ăn nhập với cú pháp bất cứ ngôn ngữ lập trình hiện đại nào, nhưng nhờ phí thời gian cho nó mà tôi cũng nghiệm ra vài điều hay cho sự viết cốt của mình.

Chuyện áp dụng phương thức dùng trong ngôn ngữ lập trình này cho một ngôn ngữ lập trình khác có thể không thành công nhưng chắc chắn là nó sẽ luyện tập cho người lập trình sự tư duy. Nếu thiếu tư duy thì kể cả học đúng giáo trình của đúng ngôn ngữ thì chưa chắc bạn đã viết được gì đáng kể.
 
Lần chỉnh sửa cuối:
Túm lợi thì bàn cho lắm cũng trợt lớt.
Thớt cũng chưa cho biết mình muốn nói chuyện vòng lặp trong ngữ cảnh nào.
Và nếu là trong VBA thì cũng còn cần phải biết nó là loại duyệt căn bản (có chỉ số đếm) hay loại duyệt nhóm/collection (bóc ra từng phần tử)

Chú: đối với các CSDL thì
TSQL không có For, dùng While
mySQL cũng không có For, dùng Loop
SQLplus dùng For như một lambda để chạy Loop
Như đã nêu trước, CSDL LH không có khái niệm "dòng cũng như cột". Cột là tính chất, là số có xác định. Dòng là phát sinh, cứ thêm bớt dài dài.
 
Chúng ta có thể tìm được ý tưởng hữu ích từ những giáo trình ngôn ngữ lập trình khác dù không phải về VBA. Vấn đề là có ai chịu khó động não không? Kể cả với ngôn ngữ Assembly dù bản thân tôi đọc mãi cũng chả hiểu và Assembly cũng chả ăn nhập với cú pháp bất cứ ngôn ngữ lập trình hiện đại nào, nhưng nhờ phí thời gian cho nó mà tôi cũng nghiệm ra vài điều hay cho sự viết cốt của mình.

Chuyện áp dụng phương thức dùng trong ngôn ngữ lập trình này cho một ngôn ngữ lập trình khác có thể không thành công nhưng chắc chắn là nó sẽ luyện tập cho người lập trình sự tư duy. Nếu thiếu tư duy thì kể cả học đúng giáo trình của đúng ngôn ngữ thì chưa chắc bạn đã viết được gì đáng kể.
Những lời này chỉ nói được với ngừoi đã có trình độ lập trình tương đối khá.
Đối với thớt, vòng lặp for là một trong nhũng cấu trúc căn bản còn chưa nắm vững. Chỉ riêng mục chọn góc diễn đàn để đặt câu hỏi cho đúng ngữ cảnh còn không chắc đã nên thân, bảo rèn luyện tư duy thì quên đi.

VBA không phải là ngôn ngữ lập trình tổng quát. Từ Application trong tên của nó đã liệt hẳn nó vào loại lập trình có nền tảng (platform) và khuôn khổ (framework). Nền tảng của nó là Excel/Access, và khuôn khổ của nó là VBE. Muốn học VBA thì học thẳng VBA. Và học các cách áp dụng vào việc xử lý bảng tính. Việc "ý tưởng hữu ích từ những giáo trình khác" chỉ giành cho ngừoi đã có kiến thức về ngôn ngữ khác.

Muốn học tư duy lập trình thì nên học Pascal. Tự lịch sử của nó đã xuất xứ từ giáo dục. Pascal là ngôn ngữ được đặt ra để dạy Angol 60.

Cái dòng kết cuối cùng (bottom line) của VBA là cái bảng tính (Excel) và cái CSDL (Access). Không nên quên điều đó.
 
Những lời này chỉ nói được với ngừoi đã có trình độ lập trình tương đối khá.
Đối với thớt, vòng lặp for là một trong nhũng cấu trúc căn bản còn chưa nắm vững. Chỉ riêng mục chọn góc diễn đàn để đặt câu hỏi cho đúng ngữ cảnh còn không chắc đã nên thân, bảo rèn luyện tư duy thì quên đi.

VBA không phải là ngôn ngữ lập trình tổng quát. Từ Application trong tên của nó đã liệt hẳn nó vào loại lập trình có nền tảng (platform) và khuôn khổ (framework). Nền tảng của nó là Excel/Access, và khuôn khổ của nó là VBE. Muốn học VBA thì học thẳng VBA. Và học các cách áp dụng vào việc xử lý bảng tính. Việc "ý tưởng hữu ích từ những giáo trình khác" chỉ giành cho ngừoi đã có kiến thức về ngôn ngữ khác.

Muốn học tư duy lập trình thì nên học Pascal. Tự lịch sử của nó đã xuất xứ từ giáo dục. Pascal là ngôn ngữ được đặt ra để dạy Angol 60.

Cái dòng kết cuối cùng (bottom line) của VBA là cái bảng tính (Excel) và cái CSDL (Access). Không nên quên điều đó.
Hi hi... bác oy cháu cũng chỉ là nhờ chủ Topic này nhân tiện để hỏi thôi bác à.
 
Những lời này chỉ nói được với ngừoi đã có trình độ lập trình tương đối khá.
Đối với thớt, vòng lặp for là một trong nhũng cấu trúc căn bản còn chưa nắm vững. Chỉ riêng mục chọn góc diễn đàn để đặt câu hỏi cho đúng ngữ cảnh còn không chắc đã nên thân, bảo rèn luyện tư duy thì quên đi.
Trình độ của tôi bèo đến mức mà hiện giờ còn chả nhớ nổi khai báo mảng, vòng lặp có "đu" hay ko "đu" và "đu" để chỗ nào tôi cũng chả nhớ, hàm iff hay iif giờ tôi cũng chả biết là dùng tên nào cho đúng ... (chắc dễ bị phán là mất căn bản). Nhưng bản thân tôi thấy chả sao cả, chỉ tốn thêm vài giây hay vài phút thử lại.. Quan trọng là mình đã thực hiện ý tưởng. Có khi nhầm lẫn lại mở ra những hướng mới.

Tôi nhớ lúc mới học lập trình bằng Pascal chả có máy tính riêng làm bài, thế là tôi đành tự sướng với con máy tính bỏ túi (Texas Ti86) có thể lập trình với thứ ngôn ngữ mà chắc chắc chả mấy ai nghe thèm biết tên (TI BASIC chả ăn nhập gì với Visual Basic hay VBA cũng như Pascal). Tất cả những gì tôi biết nhờ là nhờ cuốn manual nhỏ xíu toàn tiếng Anh chưa đầy trăm trang kèm theo cái máy tính nhỏ đó. Dù trình chưa khá (chả biết đếch gì), nhưng với tôi Ti Basic vẫn là thứ đã dạy cho tôi tư duy về lập trình đầu tiên dù đến giờ tôi cũng chả nhớ nó là cái gì cả:unknw: .

Nếu cứ trông chờ bỗng nhiên "trình độ lập trình tương đối khá" mà chả chịu tìm tòi thì chắc chả bao giờ trình độ khá nổi.

Để khỏi lan man bà tám, tôi xin phép dừng ở đây.
 
Lần chỉnh sửa cuối:
Anh ơi cho em hỏi có quy tắc hoặc công thức nào để viết vòng lặp for không hở anh?
Học có lâu không hở anh?
Hi hi... bác oy cháu cũng chỉ là nhờ chủ Topic này nhân tiện để hỏi thôi bác à.
[1] Vòng lặp tức là một cấu trúc để đoạn code chạy đi chạy lại nhiều lần. Tên chính của vòng lặp trong lập trình là Loop.
Vòng lặp For là một loại Loop căn bản dùng để lặp đi lặp lại có trật tự.
(giải thích thêm nữa chắc phải tốn khoảng 1 trang)

[2] Học lâu mau tuỳ theo mục đích. Muốn học sương sương cho "cũng biết code với người ta" thì khoảng 1 tuần, 1-2 tiếng mỗi ngày.
Muốn đạt nhiều hơn thì khoảng gấp 3 như vậy. Muốn vào nhóm tốp tuen ty pờ sen ở đây thì khoảng 1/2 năm. Muốn vào tốp teng thì... khó trả lời, bởi vì định nghĩa tốp teng nó hơi tương đối.
Nếu thực tế muốn trì chí học thì cách dễ nhất là tậu lấy 1 quyển sách VBA từ căn bản đến nâng cao. Đọc không chừa 1 dòng nào. Nếu có bài tập thì làm đúng không chừa 1 bài nào. Và điều quan trọng là trong khoảng 1/2 đầu của quyển sách, phải gõ đầy đủ từng bài một, không được copy/paste các bài đã làm qua. Lý do là để tập cho quen gõ, tránh bj gõ nhầm về sau. Sau khi qua 1/2 sách rồi thì có thể copy/paste.
Học hết quyển này rồi thì tìm quyển cao hơn. Lúc này là bắt đầu lập thư viện code riêng cho mình để sử dụng. Nếu quyển 2 này không chỉ cách lập thư viện thì nó chưa xứng đáng là bậc cao. Tìm quyển khác.

Riêng theo kinh nghiệm dìu dắt của toi thì bước đầu học chỉ cần siêng năng, chả cần tư duy gì cả. Cái mà người ta gọi tư duy này nọ chỉ là cái chuyện về sau này, khi ngừoi học đã đạt một trình độ kha khá.
Bản thân tôi nhìn kiểu code của 1 vài người vẫn được các bạn ở đây cho là "cao thủ", "pơ rô", "sư phụ" gì đó thì thấy rõ họ bắt đầu bằng cách học mò, chả hề tư duy gì cả.
Hầu hết nhũng ngừoi nói đến cái từ "tư duy" đều là những ngừoi đã đạt trình độ cao rồi.

[3] Hỏi rõ rệt thì mới được câu trả ời chính chắn. Muốn nhờ cũng chả sao nhưng phải xác định. Hỏi ỡm ờ thường nhận được câu trả lời ỡm ờ.
 
[1] Vòng lặp tức là một cấu trúc để đoạn code chạy đi chạy lại nhiều lần. Tên chính của vòng lặp trong lập trình là Loop.
Vòng lặp For là một loại Loop căn bản dùng để lặp đi lặp lại có trật tự.
(giải thích thêm nữa chắc phải tốn khoảng 1 trang)

[2] Học lâu mau tuỳ theo mục đích. Muốn học sương sương cho "cũng biết code với người ta" thì khoảng 1 tuần, 1-2 tiếng mỗi ngày.
Muốn đạt nhiều hơn thì khoảng gấp 3 như vậy. Muốn vào nhóm tốp tuen ty pờ sen ở đây thì khoảng 1/2 năm. Muốn vào tốp teng thì... khó trả lời, bởi vì định nghĩa tốp teng nó hơi tương đối.
Nếu thực tế muốn trì chí học thì cách dễ nhất là tậu lấy 1 quyển sách VBA từ căn bản đến nâng cao. Đọc không chừa 1 dòng nào. Nếu có bài tập thì làm đúng không chừa 1 bài nào. Và điều quan trọng là trong khoảng 1/2 đầu của quyển sách, phải gõ đầy đủ từng bài một, không được copy/paste các bài đã làm qua. Lý do là để tập cho quen gõ, tránh bj gõ nhầm về sau. Sau khi qua 1/2 sách rồi thì có thể copy/paste.
Học hết quyển này rồi thì tìm quyển cao hơn. Lúc này là bắt đầu lập thư viện code riêng cho mình để sử dụng. Nếu quyển 2 này không chỉ cách lập thư viện thì nó chưa xứng đáng là bậc cao. Tìm quyển khác.

Riêng theo kinh nghiệm dìu dắt của toi thì bước đầu học chỉ cần siêng năng, chả cần tư duy gì cả. Cái mà người ta gọi tư duy này nọ chỉ là cái chuyện về sau này, khi ngừoi học đã đạt một trình độ kha khá.
Bản thân tôi nhìn kiểu code của 1 vài người vẫn được các bạn ở đây cho là "cao thủ", "pơ rô", "sư phụ" gì đó thì thấy rõ họ bắt đầu bằng cách học mò, chả hề tư duy gì cả.
Hầu hết nhũng ngừoi nói đến cái từ "tư duy" đều là những ngừoi đã đạt trình độ cao rồi.

[3] Hỏi rõ rệt thì mới được câu trả ời chính chắn. Muốn nhờ cũng chả sao nhưng phải xác định. Hỏi ỡm ờ thường nhận được câu trả lời ỡm ờ.
Hi hi cháu cảm ơn những lời khuyên bảo dạy dỗ của bác. chúc bác mạnh khỏe, sống lâu, nếu khi nào cháu hỏi thì bác giúp cháu đấy bác nhé!
 

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

Back
Top Bottom