hướng dẫn về vòng lặp for each (1 người xem)

Liên hệ QC

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

minhtri.utc2

Thành viên mới
Tham gia
17/5/13
Bài viết
5
Được thích
0
em có bài thế này:
§ Tạo một vùng bảng tính liên tục chứa các số có giá trị ngẫu nhiên từ -100 đến +100 (số hàng và cột là bất kỳ).
§ Lập chương trình thực hiện nội dung sau:
o Yêu cầu người dùng chọn vùng dữ liệu bất kỳ bằng mouse
o Với vùng dữ liệu được chọn, tìm các số âm (<0) và thực hiện việc thay đổi định dạng cho chúng như sau:
§ Thay đổi màu hiện tại của chữ sang màu đỏ.
§ Đổi kiểu chữ hiện tại sang kiểu đậm (Bold).
bài làm của em thế này :
Dim user As range
Dim k As Variant


Set user = Application.InputBox(prompt:="vung du lieu duoc chon", Title:="chon vung du lieu", Default:=defaultrange, Type:=8)


For Each k In user


If k < 0 Then
With Selection.Font
.Name = ".VnTime"
.FontStyle = "Bold"
.Size = 14
.ColorIndex = 3
End With
End If
Next k
hình như k không được xem là một số để mà so sánh phải không?
phải viết thế nào đây ạ?giúp em với.làm cả ngày mà k ra
 
Lần chỉnh sửa cuối:
Bạn thay đổi 1 chút đoạn
Mã:
[COLOR=#000000]With Selection.Font[/COLOR]
thành
Mã:
[COLOR=#000000]With k.Font
[/COLOR]


Nên khai báo

Mã:
[/COLOR][COLOR=#000000]Dim k As range
[/COLOR]
 
Upvote 0
Bạn thay đổi 1 chút đoạn
Mã:
[COLOR=#000000]With Selection.Font[/COLOR]
thành
Mã:
[COLOR=#000000]With k.Font
[/COLOR]


Nên khai báo

Mã:
[COLOR=#000000]Dim k As range
[/COLOR]

Ngoài chuyện ấy thì còn phải tính đến trường hợp InputBox mở ra nhưng người dùng bấm Cancel hoặc dấu X để... không làm gì cả
Tôi đề xuất code này:
Mã:
Sub Test()
  Dim rng, rCel As Range
  On Error Resume Next
  Set rng = Application.InputBox(prompt:="vung du lieu duoc chon", Title:="chon vung du lieu", Type:=8)
  [COLOR=#ff0000]If TypeName(rng) = "Range" Then[/COLOR]
    For Each rCel In rng
      If rCel.Value < 0 Then
        With rCel.Font
          .ColorIndex = 3
          .Bold = True
        End With
      End If
    Next
  End If
End Sub
Và cũng do đó mà biến rng không thể khai báo As Range được (vì chưa biết rng có phải là Range hay không?)
 
Upvote 0
Web KT

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

Back
Top Bottom