WorksheetFunction trong VBA (1 người xem)

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

canguocs

Thành viên hoạt động
Tham gia
28/6/14
Bài viết
100
Được thích
7
Chào Anh, chị
Thứ nhất,từ code xóa dòng trắng của Thầy ndu, em đã tạo được Code Xóa cột trắng như sau:
Mã:
Sub EmpyColumns()
Dim i As Long
Application.ScreenUpdating = False
With Sheet1.UsedRange
  For i = .Columns.Count To 1 Step -1
    If WorksheetFunction.CountA(.Cells(1, i).EntireColumn) = 0 Then
    .Cells(1, i).EntireColumn.Delete
    End If
  Next i
End With
Application.ScreenUpdating = True
End Sub
Em được biết WorksheetFunction trong VBA và excel có hàm giống nhau , có hàm không
Nhưng chưa hiểu hết được ý ngĩa, nhờ anh chị giải thích thêm ah
Thứ hai, em nhờ anh chị giúp em code sau sai ở đâu ah
Debug báo sai ở Cells nhưng em chưa biết cách sửa:
Mã:
Sub Hanhkiem()
Sheets("Sheet3").Activate
Dim i As Integer
For i = 1 To 100
If WorksheetFunction(.Cells(i, 1)) > 40 Then
.Cells(i, 1).Offset(0, 1) = "Tot"
Else
Cells(i, 1).Offset(0, 1) = "Xau"
End If
Next i
End Sub
 

File đính kèm

Chào Anh, chị
Thứ nhất,từ code xóa dòng trắng của Thầy ndu, em đã tạo được Code Xóa cột trắng như sau:
Mã:
Sub EmpyColumns()
Dim i As Long
Application.ScreenUpdating = False
With Sheet1.UsedRange
  For i = .Columns.Count To 1 Step -1
    If WorksheetFunction.CountA(.Cells(1, i).EntireColumn) = 0 Then
    .Cells(1, i).EntireColumn.Delete
    End If
  Next i
End With
Application.ScreenUpdating = True
End Sub
Em được biết WorksheetFunction trong VBA và excel có hàm giống nhau , có hàm không
Nhưng chưa hiểu hết được ý ngĩa, nhờ anh chị giải thích thêm ah
Thứ hai, em nhờ anh chị giúp em code sau sai ở đâu ah
Debug báo sai ở Cells nhưng em chưa biết cách sửa:
Mã:
Sub Hanhkiem()
Sheets("Sheet3").Activate
Dim i As Integer
For i = 1 To 100
If WorksheetFunction(.Cells(i, 1)) > 40 Then
.Cells(i, 1).Offset(0, 1) = "Tot"
Else
Cells(i, 1).Offset(0, 1) = "Xau"
End If
Next i
End Sub

khi bạn WorksheetFuction. tức là bạn đang có mong muốn sử dụng các hàm có sẵn của excel vd : worksheetFunction.match(..), worksheetfunction.countA (..). Và tất cả các đối số trong cặp dấu (...) tương tự như khi bạn sử dụng các hàm này trên bảng tính!

Bạn gặp lỗi tại hàm .Cells bởi vì :
bạn để ý code trên có dòng :
With Sheet1.UsedRange
................
.cells
end with
còn code của bạn thì thiếu mất dòng này!
bạn tìm hiểu thêm về cấu trúc with ... end with sẽ ra được vấn đề!
 
Upvote 0
khi bạn WorksheetFuction. tức là bạn đang có mong muốn sử dụng các hàm có sẵn của excel vd : worksheetFunction.match(..), worksheetfunction.countA (..). Và tất cả các đối số trong cặp dấu (...) tương tự như khi bạn sử dụng các hàm này trên bảng tính!

Bạn gặp lỗi tại hàm .Cells bởi vì :
bạn để ý code trên có dòng :
With Sheet1.UsedRange
................
.cells
end with
còn code của bạn thì thiếu mất dòng này!
bạn tìm hiểu thêm về cấu trúc with ... end with sẽ ra được vấn đề!
Em mới học chưa biết cách sửa
Em đã thêm những câu lệnh còn lại nhưng chắc em áp dụng cells chưa đúng
Nhờ anh chị giúp ah
 
Upvote 0
Em mới học chưa biết cách sửa
Em đã thêm những câu lệnh còn lại nhưng chắc em áp dụng cells chưa đúng
Nhờ anh chị giúp ah
Ý nghĩa của With obj ... End with là để tránh phải viết lại tên đối tượng obj nhiều lần (hình như tốc độ nhanh hơn tý).
Trong đoạn
Mã:
With sheet1.usedrange
i=.columns....
.cells.....
End with
Có thể viết thành
Mã:
i=sheet1.usedrange.columns....
sheet1.usedrange.cells.....
Trong code của bạn cần bổ sung with... end with như code mẫu.
 
Upvote 0
Ý nghĩa của With obj ... End with là để tránh phải viết lại tên đối tượng obj nhiều lần (hình như tốc độ nhanh hơn tý).
Trong đoạn
Mã:
With sheet1.usedrange
i=.columns....
.cells.....
End with
Có thể viết thành
Mã:
i=sheet1.usedrange.columns....
sheet1.usedrange.cells.....
Trong code của bạn cần bổ sung with... end with như code mẫu.
Mã:
Sub Hanhkiem()
Sheets("Sheet1").Activate
Dim i As Integer
With Sheet1.UsedRange.Cells
For i = .Rows.Count To 1 Step -1
If WorksheetFunction.CountA(.Cells(i, 1).EntireRow) > 40 Then
.Cells(i, 1).Offset(0, 1) = "Tot"
Else
Cells(i, 1).Offset(0, 1) = "Xau"
End If
Next i
End With
End Sub
Em sửa thế này toàn ra Xau, khả năng câu lệnh này sai ah
Mã:
If WorksheetFunction.CountA(.Cells(i, 1).EntireRow) > 40 Then
.Cells(i, 1).Offset(0, 1) = "Tot"
 
Upvote 0
Chào Anh, chị
Thứ nhất,từ code xóa dòng trắng của Thầy ndu, em đã tạo được Code Xóa cột trắng như sau:
Mã:
Sub EmpyColumns()
Dim i As Long
Application.ScreenUpdating = False
With Sheet1.UsedRange
  For i = .Columns.Count To 1 Step -1
    If WorksheetFunction.CountA(.Cells(1, i).EntireColumn) = 0 Then
    .Cells(1, i).EntireColumn.Delete
    End If
  Next i
End With
Application.ScreenUpdating = True
End Sub
Em được biết WorksheetFunction trong VBA và excel có hàm giống nhau , có hàm không
Nhưng chưa hiểu hết được ý ngĩa, nhờ anh chị giải thích thêm ah
Thứ hai, em nhờ anh chị giúp em code sau sai ở đâu ah
Debug báo sai ở Cells nhưng em chưa biết cách sửa:
Mã:
Sub Hanhkiem()
Sheets("Sheet3").Activate
Dim i As Integer
For i = 1 To 100
If WorksheetFunction(.Cells(i, 1)) > 40 Then
.Cells(i, 1).Offset(0, 1) = "Tot"
Else
Cells(i, 1).Offset(0, 1) = "Xau"
End If
Next i
End Sub
Bạn dùng tạm cái này đi .
 

File đính kèm

Upvote 0
Bạn dùng tạm cái này đi .
Mã:
Sub Hanhkiem()
Dim i As Integer
For i = 1 To 100
If Cells(i, 2) >= 40 Then
Cells(i, 2).Offset(0, 1) = "T" & ChrW(7889) & "t"
Else
Cells(i, 2).Offset(0, 1) = "X" & ChrW(7845) & "u"
End If
If Cells(i, 2) = "" Then
Cells(i, 2).Offset(0, 1) = ""
End If
Next i
End Sub
Em sửa lại một chút thế này, em thấy ngắn hơn được chút ah
 
Upvote 0
Em thấy thầy Bate đang online
Thầy có thể giúp em câu lệnh với with , end with được ko ah
 
Upvote 0
Mã:
Sub Hanhkiem()
Sheets("Sheet1").Activate
Dim i As Integer
With Sheet1.UsedRange.Cells
 For i = 1 To 100
  If Cells(i, 2) >= 40 Then
  Cells(i, 2).Offset(0, 1) = "Tot"
Else
  Cells(i, 2).Offset(0, 1) = "Xau"
  End If
  If Cells(i, 2) = "" Then
  Cells(i, 2).Offset(0, 1) = ""
  End If
 Next i
End With
End Sub
Em tự xử được rồi ah,
Cảm ơn tất cả các anh chị đã giúp đỡ ah
 
Upvote 0

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

Back
Top Bottom