Lập trình đổi thường sang chủ HOA trong Excel (1 người xem)

Liên hệ QC

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

sangpro2009

Thành viên mới
Tham gia
1/11/12
Bài viết
1
Được thích
0
Xin chào các anh em GPE, cho mình hỏi đoạn Code sau có vấn đề gì mà không thể đổi chữ thường sao chữ HOA được. Rất mong anh em giúp với!

Public Sub hoa()
Dim SelRan As Range
Set SelRan = Selection
Dim i As Long
Dim j As Long
Dim S As String
For i = 1 To SelRan.Rows.Count
For j = 1 To SelRan.Columns.Count
S = SelRan.Cells(j, i)
SelRan.Cells(j, i) = UCase(S)
Next i
Next j
End Sub
 
Xin chào các anh em GPE, cho mình hỏi đoạn Code sau có vấn đề gì mà không thể đổi chữ thường sao chữ HOA được. Rất mong anh em giúp với!

Public Sub hoa()
Dim SelRan As Range
Set SelRan = Selection
Dim i As Long
Dim j As Long
Dim S As String
For i = 1 To SelRan.Rows.Count
For j = 1 To SelRan.Columns.Count
S = SelRan.Cells(j, i)
SelRan.Cells(j, i) = UCase(S)
Next i
Next j
End Sub
Như vầy thì đủ rồi:
Public Sub hoa()
Dim Cll As Range
For Each Cll In Selection
Cll.Value = UCase(Cll)
Next Cll
End Sub
 
Upvote 0
PHP:
Public Sub hoa()
 Dim SelRan As Range
 Dim i As Long, j As Long
 Dim S As String

 Set SelRan = Selection
 For i = 1 To SelRan.Rows.Count
     For j = 1 To SelRan.Columns.Count
          S = SelRan.Cells(j, i)
          SelRan.Cells(j, i) = UCase(S)
9    Next i
Next j
End Sub

Bạn hoán đổ dòng lệnh mang số 9 với dòng lệnh dưới nó là được!

Chàng Ba Tê sai hướng rồi! Tác giả đâu cần con cá đâu; cần sửa lại cần câu mà!
 
Upvote 0
Nếu chỉ sửa code thôi thì như vầy mới đúng chứ bác HYen17:

Mã:
Public Sub hoa() Dim SelRan As Range
 Dim i As Long, j As Long
 Dim S As String


 Set SelRan = Selection
 For i = 1 To SelRan.Rows.Count
     For j = 1 To SelRan.Columns.Count
          S = SelRan.Cells(i, j)
          SelRan.Cells(i, j) = UCase(S)
     Next j
Next i
End Sub

Nếu làm mới thì dùng như thầy Batê là gọn nhất.
 
Upvote 0
Xin chào các anh em GPE, cho mình hỏi đoạn Code sau có vấn đề gì mà không thể đổi chữ thường sao chữ HOA được. Rất mong anh em giúp với! Public Sub hoa() Dim SelRan As Range Set SelRan = Selection Dim i As Long Dim j As Long Dim S As String For i = 1 To SelRan.Rows.Count For j = 1 To SelRan.Columns.Count S = SelRan.Cells(j, i) SelRan.Cells(j, i) = UCase(S) Next i Next j End Sub

Tôi không cho bạn con cá vì có người cho bạn rồi. Tôi muốn phân tích code để trong tương lai bạn viết code chuẩn hơn.

1. Tôi hơi ngạc nhiên là bạn "chạy" được code. Rất có thể "không thể đổi chữ thường sao chữ HOA được" không phải là "không đổi được" mà chính xác là "không chạy được code". Vì code của bạn không chạy được.

Mã:
Public Sub hoa()
Dim SelRan As Range
Dim i As Long
Dim j As Long
Dim S As String
    Set SelRan = Selection
    For i = 1 To SelRan.Rows.Count
        For j = 1 To SelRan.Columns.Count
            S = SelRan.Cells(j, i)
            SelRan.Cells(j, i) = UCase(S)
        Next i
    Next j
End Sub

Bạn có cấu trúc:
Mã:
    For i = ...
        For j = ...
            ...
        Next [SIZE=4][COLOR=#ff0000]i[/COLOR][/SIZE]
    Next [SIZE=4][COLOR=#ff0000]j[/COLOR][/SIZE]

Cấu trúc đúng phải là

Mã:
    For i = ...
        For j = ...
            ...
        Next[SIZE=4][COLOR=#ff0000] j[/COLOR][/SIZE]
    Next[SIZE=4][COLOR=#ff0000] i[/COLOR][/SIZE]

2.

Mã:
S = SelRan.Cells(j, i)
            SelRan.Cells(j, i) = UCase(S)

là sai. i là chỉ số dòng, j là chỉ số cột chứ không phải ngược lại. Bạn làm thế này sẽ thấy sai ngay (sau khi sửa cấu trúc FOR FOR như điểm 1): nhập dữ liệu vào A1:C3 --> chọn vùng A1:B3 --> chạy code --> kết quả là cột C không được chọn nhưng bị đổi thành hoa trong khi A3:B3 được chọn nhưng không được đổi thành hoa.

3. Code đúng

Mã:
Public Sub hoa()
Dim SelRan As Range
Dim i As Long
Dim j As Long
Dim S As String
    Set SelRan = Selection
    For i = 1 To SelRan.Rows.Count
        For j = 1 To SelRan.Columns.Count
            S = SelRan.Cells(i, j)
            SelRan.Cells(i, j) = UCase(S)
        Next j
    Next i
End Sub

4. Code rút gọn

Mã:
Public Sub hoa()
Dim SelRan As Range
Dim i As Long
Dim j As Long
    Set SelRan = Selection
    For i = 1 To SelRan.Rows.Count
        For j = 1 To SelRan.Columns.Count
            SelRan.Cells(i, j) = UCase(SelRan.Cells(i, j))
        Next j
    Next i
End Sub

5. Rút gọn tiếp

Mã:
Public Sub hoa()
Dim i As Long
Dim j As Long
    For i = 1 To Selection.Rows.Count
        For j = 1 To Selection.Columns.Count
            Selection.Cells(i, j) = UCase(Selection.Cells(i, j))
        Next j
    Next i
End Sub

6. Rút gọn tiếp

Mã:
Public Sub hoa()
Dim i As Long
Dim j As Long
    For i = 1 To Selection.Rows.Count
        For j = 1 To Selection.Columns.Count
            Selection(i, j) = UCase(Selection(i, j))
        Next j
    Next i
End Sub
------------------
Đấy là dùng For. Bạn có thể dùng cấu trúc "For Each" để duyệt từng phần tử của tập (collection) bất kỳ. Ở vd. này là tập các ô (cell collection)
 
Lần chỉnh sửa cuối:
Upvote 0

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

Back
Top Bottom