Lệnh For i="A" to "Z" (1 người xem)

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

ninhtindcd

Thành viên mới
Tham gia
17/10/10
Bài viết
18
Được thích
1
Lệnh này trong Excel có được không các bác. Mong chỉ giáo
 
Đương nhiên là không rồi. Toán tử i phải là số nguyên, không nhận ký tự text. Nếu bạn muốn dùng ký tự A--> Z trong vòng lặp For, có lẽ nên dùng cách này: For i = 1 to 26. Sau đó dùng hàm sau để lấy ký tự tương ứng:
PHP:
Function ToLetter(A As Integer)
   If (A - 1) \ 26 <> 0 Then ToLetter = Chr((A - 1) \ 26 + 64)
   ToLetter = ToLetter + Chr((A - 1) Mod 26 + 65)
End Function
 
Lần chỉnh sửa cuối:
chắc chưa vậy bác, vi kiểu này là kiểu đếm được mà bác
 
Biến đổi 1 chút & chạy thử macro sau

PHP:
Sub ThuNghiem()
 Dim J As Byte
 For J = Asc("A") To Asc("Z")
    MsgBox J
 Next J
End Sub
 
Kiểu đếm được chỉ là đếm được. Thí dụ kiểu 'con bò" sẽ đếm được 1 con bò, 2 con bò, n con bò
Chắc bạn muốn nói kiểu "tăng dần"? 5 tăng dần sẽ là 6, 7, .... A tăng dần sẽ là B, C, ... ?

Nhưng vào vòng lặp for là không được. Đã bảo không, là không. Vì For tăng theo số nguyên. Con bò đực tăng 1 không trở thành con bò cái được.
 
thì i kiểu string mà bạn. không biết có được không được vậy
Thì lại tiếp tục như bài của bác Sa_DQ:

Mã:
Sub ThuNghiem()
    Dim J As Byte
    For J = Asc("A") To Asc("Z")
        MsgBox [COLOR=#ff0000][B]Chr(J)[/B][/COLOR]
    Next J
End Sub

Thử xem đã đúng ý bạn chưa nhé!
 
Bạn rất "nặng lòng" với Turbo Pascal khi nói đến từ "đếm được"
Nhưng câu sau đây thì không còn "lòng" nhẹ mất rồi (chữ đỏ, to)
thì i kiểu string mà bạn. không biết có được không được vậy


Cách tổ chức mã trong Turbo Pascal khác với VBA.

Xin chỉ nói về For
VBA không có khái niệm biến đếm được (kiểu Integer, Byte, Char, ShortInt, Boolean... của Turbo Pascal)
Lệnh For của VBA phải dùng biến đếm kiểu số
Ví dụ: For i=1.5 to 3.6 step 0.3 (i là số, không cần là số nguyên)
 
Trước khi bắt tay vào lập trình trong bất cứ ngôn ngữ nào thì phải có một số kiến thức tối thiểu. Vd. các kiểu dữ liệu, các kiểu cấu trúc dữ liệu (vd. array, collection), các cấu trúc ngôn ngữ (vd. For ... Next, If ... End If). Những cấu trúc ngôn ngữ trong các ngôn ngữ khác nhau rất giống nhau, tức triết lý của chúng giống nhau, lô gíc của chúng như nhau. Nhưng các chi tiết cụ thể có thể khác nhau. Vd. trong Delphi (Object Pascal) sau vòng For ... Next thì counter is undefined, trong VBA là xác định. Trong Delphi không thể thay đổi giá trị của counter (vd. counter = counter + ...) trong vòng lặp For ... Next còn trong VBA tự do. Trong Delphi muốn bỏ qua vòng lặp hiện hành (vd. khi thỏa điều kiện nào đó) thì dùng thủ tục Continue còn trong VBA không có. Muốn ra khỏi vòng For thì trong Delphi dùng thủ tục Break còn trong VBA - Exit For.

Đã muốn lập trình thì phải đọc help. Không có chuyện hỏi những cái cơ bản như thế để người khác đọc hộ help rồi dâng tận ...

Trích help
counter Numeric variable used as a loop counter

Numeric là numeric. Không có chuyện string gì ở đây. Thậm chí trong Pascal có thể khai báo

Mã:
counter: Char;

Nhưng không thể khai báo

Mã:
counter: String;

Trong Pascal không đòi hỏi counter là Numeric mà nó chỉ phải là ordinal type. Tức kiểu thứ tự. Nói nôm na thì mỗi kiểu thứ tự được gán cho một tập giá trị mà mỗi giá trị khác giá trị đầu có giá trị trước nó và mỗi giá trị trừ giá trị cuối có giá trị sau nó (Đã là thứ tự thì có trước có sau). Vd. nếu counter là Char thì tập giá trị gán cho kiểu Char là tất cả các ký tự có code từ 0 tới 255.
Cũng vì counter phải là ordinal type nên không thể
Mã:
var
counter: Double;
được vì Double không là ordinal type (phần tử trước và sau của 1,5 là gì vậy???).
Trong VBA counter là numeric vậy có thể
Mã:
counter as Double
 
Lần chỉnh sửa cuối:

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

Back
Top Bottom