tuananhya2
Thành viên mới

- Tham gia
- 18/8/12
- Bài viết
- 8
- Được thích
- 0
Co ai chỉ dùm cách tạo pass marco với
Em mới tập tành code vba nên Em cần xin code 1 hàm (Function) tính tổng của cell trong vùng chọn ( tất nhiên là em biết trong excel đã có hàm sum). Bác nào có thể giúp em để em tham khảo với nhé. Tks các bác nhiều
Ý tôi là:
Nếu chỉ thoát khỏi vòng lặp (exit for) thì i, j còn đó.
Nếu thoát khỏi sub/function (exit sub/function) thì nếu i, j là biến nội thì chúng bị giải toả hêt. Phải đặt là biến toàn cục mới còn.
Nếu dừng chương trình (lời của chủ đề, tức là end) thì biến gì cũng mất hết. Phương pháp nào đó để moi lại hay giữ thì tôi chưa học tới.
Trong trường hợp thứ 3, nếu muốn giữ thì phải giữ trước khi thoát chứ không thể "...dừng lại và lấy giá trị..." được
Người hỏi bài này cần học lại về phạm vi của biến, chương trình con và chương trình chính, và dùng đúng từ ngữ.
Bài của bác Ba Tê là thỏa ý người hỏi rồi. Bài của bạn tuy đúng nhưng làm người ta sợ. Tôi đã học VBA 5 năm nay nhưng cũng chưa học đến những bài này. Với những bạn mới học VBA thì cứ tà tà làm tới đâu học tới đó, không cần quan tâm bắt đầu từ đâu, càng đơn giản hóa vấn đề càng dễ học hỏi, cái gì cần biết thì dần dần sẽ biết (có lẽ do mình bảo thủ chăng ?).
Nếu điều trên không đúng thì tôi xin lỗi mọi người và hứa rằng kể từ nay tôi không nói chuyện về cách thức làm việc nữa.
For I = 1 to 10
If a = b then
For j=1 to 10
If c<d then Exit For[COLOR=#008000] ' nhảy ra khỏi vòng trong[/COLOR]
End if
Next
If j <= 10 Then Exit For[COLOR=#008000] ' nhảy ra khỏi vòng ngoài[/COLOR]
End if
Next
[COLOR=#008000]' ở đây có thể lấy trị i, j.
' Tuy nhiên vì vòng lặp j chứa trong điều kiện If a = b cho nên trị j là trị chỉ có ý nghĩa tuỳ theo điều kiện
' Cách tốt hơn là lấy i, j ngay lúc thoả điều kiện c<d và dùng lệnh goto để nhảy vào một label nghay sau hai vòng lặp
[/COLOR]
Trở lại vấn đề câu hỏi. Câu hỏi dùng từ "dừng chương trình" nên tôi mới đề nghị dùng lệnh "end"
Nếu nguời hỏi muốn biết làm cách nào để thoát ra khỏi 2 vòng lặp thì phải làm như sau:
...Mã:For I = 1 to 10 If a = b then For j=1 to 10 [COLOR=#ff0000]If c<d then Exit For [/COLOR][COLOR=#008000]' nhảy ra khỏi vòng trong[/COLOR] [COLOR=#ff0000]End if[/COLOR] Next [COLOR=#ff0000]If j <= 10 Then Exit For[/COLOR][COLOR=#008000] ' nhảy ra khỏi vòng ngoài[/COLOR] End if Next [COLOR=#008000]... [/COLOR]
VetMini hoặc bạn nào biết giúp mình câu hỏi này:
Khi viết If .... Then .... thì không cần phải End if (giống như câu lệnh If j <= 10 Then Exit For ở trên)
Vậy tại sao trong đoạn mã dưới đây đã If c<d then Exit For rồi mà vẫn phải End if ?
If c<d then Exit For ' nhảy ra khỏi vòng trong
End if
Câu hỏi thành tâm, không có ý gì khác nếu như đoạn code trên có sơ xuất. Thanks !
VetMini
Cấu trúc Then ... bảo compiler rằng điểm nhảy rẽ (nếu không thoả điều kiện) là lệnh (dòng) kế tiếp
Cấu trúc Then (xuống dòng) bảo compiler rằng điểm nhảy rẽ (nếu không thoả điều kiện) là dòng Else, ElseIf hoặc End If gần nhất.
=IF(ISTEXT(B3),DATE(RIGHT(B3,4),MID(B3,4,2),LEFT(B3,2)),B3)
1 cách thủ công:Xin chào Thầy cô và Anh Chị trong GPE!
Em đang gặp phải một tình trạng là file định dạng dữ liệu vừa kiểu ngày tháng năm và vừa kiểu dạng text.
Hiện giờ Em đã định dạng dữ liệu về kiểu "dd/mm/yyy" nhưng có một số dữ liệu kiểu text không thể chuyển đổi được mà buộc phải kích đúp chuột vào ô đó thì mới được.
Nếu dữ liệu ót thì không sao nhưng bảng dữ liệu cũng khá nhiều vì vậy Em muốn hỏi GPE có cách nào để chuyển đổi nhanh hơn không ạ!
Cụ thể hơn thì Thầy cô và Anh Chị xem file kèm ạ!
Em xin cảm ơn!
1 cách thủ công:
1/ Nhập số 1 vào 1 ô nào đó, Copy
2/ Chọn nguyên vùng dữ liệu muốn chuyển, Paste special - Multiply
3/ Format vùng vừa Paste kiểu Date mà bạn muốn.
4/ Xóa ô vừa nhập số 1 hồi nãy.
Không hiểu bạn làm kiểu gì và không biết dữ liệu của bạn có các dạng ra sao?Thầy ạ! Em làm như thế này Nhập số một theo các ngày tương ứng rồi sau đó Paste special - Multiply thì những giá trị dạng text nó vẫn là số 1 Thầy ạ!
Thầy có thể gửi video hướng dẫn lên con coi với được không ạ.
Cảm ơn Thầy!
Con làm như thế này Thầy ạ:Không hiểu bạn làm kiểu gì và không biết dữ liệu của bạn có các dạng ra sao?
Với dữ liệu như file mẫu của bạn ở trên thì tôi đã làm như vậy và đã ra kết quả là ngày tháng.
Con làm như thế này Thầy ạ:
[video=youtube;sUWYMqsPzT4]http://www.youtube.com/watch?v=sUWYMqsPzT4&feature=youtu.be[/video]
Thầy ạ! Em làm như thế này Nhập số một theo các ngày tương ứng rồi sau đó Paste special - Multiply thì những giá trị dạng text nó vẫn là số 1 Thầy ạ!
Thầy có thể gửi video hướng dẫn lên con coi với được không ạ.
Cảm ơn Thầy!