Chuyên đề giải đáp những thắc mắc về code VBA

Liên hệ QC

maytinhvp01

Thành viên thường trực
Tham gia
27/7/13
Bài viết
390
Được thích
179
Mình muốn nhờ giải thich câu lệnh " If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c) "
trong ví du:
Public Function LonNhat(Ran As Range)
Dim max As Double, v As Integer, d As Integer, c As Integer
max = Ran.Cells(1, 1)
For d = 1 To Ran.Rows.Count
For c = 1 To Ran.Columns.Count
If Ran.Cells(d, c) > max Then max = Ran.Cells(d, c)
Next c
Next d
v = Tim(max, Ran)
LonNhat = max
End Function
-------------------------------------------------------
[INFO1]Thông báo:
Vì topic này:
http://www.giaiphapexcel.com/forum/...ải-thích-các-code-đề-nghị-các-bạn-gửi-vào-đây
đã quá dài nên BQT đóng lại.
Nay tôi mở topic mới với cùng chủ đề: GIẢI THÍCH NHỮNG THẮC MẮC VỀ CODE
Các bạn nếu có nhu cầu giải thích code, vui lòng post tại đây nhé
NDU96081631

[/INFO1]
 
Chỉnh sửa lần cuối bởi điều hành viên:
Chào các thầy cô ạ. em có 1 file gồm 104 sheet lần lượt có tên "Table 1" tới "Table 104"
bây giờ em muốn xóa những sheets có số chẵn đi thì code viết như nào ạ.
 
Upvote 0
Chào các thầy cô ạ. em có 1 file gồm 104 sheet lần lượt có tên "Table 1" tới "Table 104"
bây giờ em muốn xóa những sheets có số chẵn đi thì code viết như nào ạ.
Thử:
Mã:
Public Sub DelSheet()
Dim ws As Worksheet
Dim i
Application.DisplayAlerts = False
    For Each ws In Worksheets
        i = Right(ws.Name, 1)
        If IsNumeric(i) Then
            If i Mod 2 = 0 Then
                ws.Delete
            End If
        End If
    Next ws
Application.DisplayAlerts = True
End Sub
 
Upvote 0
Thử:
Mã:
Public Sub DelSheet()
Dim ws As Worksheet
Dim i
Application.DisplayAlerts = False
    For Each ws In Worksheets
        i = Right(ws.Name, 1)
        If IsNumeric(i) Then
            If i Mod 2 = 0 Then
                ws.Delete
            End If
        End If
    Next ws
Application.DisplayAlerts = True
End Sub
Cám ơn thầy ạ
 
Upvote 0
Mọi người giúp em tí : Sau khi em sử dụng phương thức
Mã:
oFolder=Fso.GetFolder(thisworkbook.path)
bây giờ mình làm sao để liệt kê tên folder trong oFolder ạ.
Em cám ơn !
 
Upvote 0
Mọi người giúp em tí : Sau khi em sử dụng phương thức
Mã:
oFolder=Fso.GetFolder(thisworkbook.path)
bây giờ mình làm sao để liệt kê tên folder trong oFolder ạ.
Em cám ơn !
Dùng thử thế này xem sao.
Mã:
For Each objFolder In oFolder.SubFolders
    MsgBox objFolder
Next
 
Upvote 0
Chào các anh chị em,

Em xin nhờ các anh chị một chút ạ: Hiện tại em đang muốn lập VBA dạng Sub để hiện outline chỉ một số dòng cụ thể (ví dụ chỉ các mục 2.1, 3.1, 4.1...) nhưng khi em thử ghi macro thì không hiện dòng mã. Em cũng thử tìm trên help nhưng chưa tìm đc dòng lệnh để điều khiển ẩn hiện outline từng dòng mà chỉ ẩn hiện chung theo level đã group.

Có anh chị nào biết chỉ em với ạ.
Em cảm ơn ace.
 
Upvote 0
Anh/Chị trên diễn đàn cho e hỏi : Có cách nào để lấy một giá trị trên 1 Cell bằng hàm iputbox hoặc hàm gì khác không ạ.?
E sử dụng hàm iputbox thì nó chỉ cho phép nhập bằng tay chứ không cho chọn giá trị trên Cell.
Cám ơn!
 
Upvote 0
Thì bạn nhập chỉ số dòng (hàng) & chỉ số cột vô InputBox, như ví dụ sau:
PHP:
Sub LayDuLieu1OBangInputBox()
 Dim TriCanLay, Hang_Cot As String
 Dim Dg As Long, Cot As Integer, VTr As Byte
 Hang_Cot = InputBox("Nhâp Theo Kiêu 'Number(Hàng)|Numbrt(Côt)'", "GPE.COM", "5|9")
 If Len(Hang_Cot) > 2 Then
    VTr = InStr(Hang_Cot, "|")
    Dg = CLng(Left(Hang_Cot, VTr - 1))
    Cot = CInt(Mid(Hang_Cot, VTr + 1, Len(Hang_Cot)))
    TriCanLay = Cells(Dg, Cot).Value
    MsgBox TriCanLay
 End If
End Sub
 
Upvote 0
Thì bạn nhập chỉ số dòng (hàng) & chỉ số cột vô InputBox, như ví dụ sau:
PHP:
Sub LayDuLieu1OBangInputBox()
Dim TriCanLay, Hang_Cot As String
Dim Dg As Long, Cot As Integer, VTr As Byte
Hang_Cot = InputBox("Nhâp Theo Kiêu 'Number(Hàng)|Numbrt(Côt)'", "GPE.COM", "5|9")
If Len(Hang_Cot) > 2 Then
    VTr = InStr(Hang_Cot, "|")
    Dg = CLng(Left(Hang_Cot, VTr - 1))
    Cot = CInt(Mid(Hang_Cot, VTr + 1, Len(Hang_Cot)))
    TriCanLay = Cells(Dg, Cot).Value
    MsgBox TriCanLay
End If
End Sub
Em cám ơn.
Thực ra là e muốn viết một sub xóa dòng trống bằng việc lựa chọn cột điều kiện tùy ý bằng iputbox mà không chọn lên Cell được.
Thôi thì đành nhập bằng tay lên iputbox vậy.
 
Upvote 0
Có phải thế này là bạn muốn không:
Giả dụ cột F có dự liệu từ F5 cho đến F99; Nhưng trong nớ có vài ô trống (trắng) như [F35] & [F40:F41] mà bạn muốn xóa nguyên những dòng đó?
 
Upvote 0
Có phải thế này là bạn muốn không:
Giả dụ cột F có dự liệu từ F5 cho đến F99; Nhưng trong nớ có vài ô trống (trắng) như [F35] & [F40:F41] mà bạn muốn xóa nguyên những dòng đó?
Vâng đúng rồi ạ.
Nên e tính sử dụng inputbox chọn đại 1 ô trên cột F. Sau đó dùng lệnh .row để xác định cột cần xóa dữ liệu ạ
 
Upvote 0
Bạn khai báo 1 biến kiểu Range
Tạo vòng lặp duyệt theo cột f:f mà mình ví dụ
Gạp ô nào trống thì nạp nó vô biến (đã khai báo)
Sau khi duyệt hết cột F:F thì nếu tham biến không phải là Nothing thì xóa . . .
 
Upvote 0
Bạn khai báo 1 biến kiểu Range
Tạo vòng lặp duyệt theo cột f:f mà mình ví dụ
Gạp ô nào trống thì nạp nó vô biến (đã khai báo)
Sau khi duyệt hết cột F:F thì nếu tham biến không phải là Nothing thì xóa . . .
Nếu vậy hình như nó không được linh động cho lắm ạ. Em muốn là mình muốn lựa chọn cột trước khi duyệt for. Bởi đâu cố định vd là cột F mãi được
 
Upvote 0
Càng linh động thì càng sai sót thêm thôi.
Mà 1 CSDL chỉ 1 sai sót nhỏ là thành đống rác.
 
Upvote 0
Nếu vậy hình như nó không được linh động cho lắm ạ. Em muốn là mình muốn lựa chọn cột trước khi duyệt for. Bởi đâu cố định vd là cột F mãi được
Yêu cầu của bạn chỉ áp dụng đối với tiêu đề cột là dòng 1, vì nếu chọn Cell rổng và Delete và xóa dòng thì nó sẽ dịch chuyển dữ liệu lên trên.
 
Upvote 0
Dạ xin chào các bác,

Chả là em mới tập tành học VBA nên trình độ còn kém quá, có bài toán như ở file đính kèm nghĩ mãi mà vẫn chưa ra cách giải. Nhờ các bác chỉ giáo giúp em với ạ. Em cảm ơn nhiều.
 

File đính kèm

  • baitoan.xlsx
    9.5 KB · Đọc: 21
Upvote 0
Web KT
Back
Top Bottom