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:
Mình muốn i có thể bằng các giá trị từ 0 đến 10. Để mình có thể chọn được số dòng từ TDKQ theo ý mình để xuất sang PTKQ.
 

File đính kèm

Upvote 0
Mình muốn i có thể bằng các giá trị từ 0 đến 10. Để mình có thể chọn được số dòng từ TDKQ theo ý mình để xuất sang PTKQ.
Mình xem file của bạn rồi, nhưng chưa hiểu sheet PTKQ của bạn sao lại có hai bảng là sao, số dòng theo ý bạn là lấy những dòng nào từ sheet TDKQ rồi dán vào những dòng nào bên sheet PTKQ vậy.
 
Upvote 0
Bài #2947:
Bảng tính Excel 2007 trở lên có 1048576 dòng.
Khai báo integer sẽ bị lỗi over flow.
 
Upvote 0
Mình muốn i có thể bằng các giá trị từ 0 đến 10. Để mình có thể chọn được số dòng từ TDKQ theo ý mình để xuất sang PTKQ.
Bạn thử với macro sau & tự mình phát triển tiếp::
PHP:
Sub dc()
Dim DongDau As Long, SoDong As Integer

DongDau = ActiveCell.Row
SoDong = InputBox("Sô Dòng Ban Cân: ", "GPE.COM", 9)

Range("A" & DongDau & ":AD" & DongDau + SoDong).Select
    Selection.Copy
 MsgBox Selection.Address    
'Sheets("PTKQ").Select
'    Range("A2:A6").Select
'ActiveSheet.Paste
'    Application.CutCopyMode = False
'   Sheets("PTKQ").Select
End Sub
 
Upvote 0
Mình xem file của bạn rồi, nhưng chưa hiểu sheet PTKQ của bạn sao lại có hai bảng là sao, số dòng theo ý bạn là lấy những dòng nào từ sheet TDKQ rồi dán vào những dòng nào bên sheet PTKQ vậy.
minhg đã sửa được lỗi rồi. Cảm ơn bạn nhiều nha.:)
Bài đã được tự động gộp:

Bạn thử với macro sau & tự mình phát triển tiếp::
PHP:
Sub dc()
Dim DongDau As Long, SoDong As Integer

DongDau = ActiveCell.Row
SoDong = InputBox("Sô Dòng Ban Cân: ", "GPE.COM", 9)

Range("A" & DongDau & ":AD" & DongDau + SoDong).Select
    Selection.Copy
MsgBox Selection.Address   
'Sheets("PTKQ").Select
'    Range("A2:A6").Select
'ActiveSheet.Paste
'    Application.CutCopyMode = False
'   Sheets("PTKQ").Select
End Sub
Cảm ơn
Bạn thử với macro sau & tự mình phát triển tiếp::
PHP:
Sub dc()
Dim DongDau As Long, SoDong As Integer

DongDau = ActiveCell.Row
SoDong = InputBox("Sô Dòng Ban Cân: ", "GPE.COM", 9)

Range("A" & DongDau & ":AD" & DongDau + SoDong).Select
    Selection.Copy
MsgBox Selection.Address   
'Sheets("PTKQ").Select
'    Range("A2:A6").Select
'ActiveSheet.Paste
'    Application.CutCopyMode = False
'   Sheets("PTKQ").Select
End Sub
cảm ơn bạn, để mình thử dùng với mã code của bạn.
 
Upvote 0
Em thực hiện đoạn mã bị lỗi. Bác nào sửa giúp em với ạ
Runtime '-2147417851(80010105)'
method "Subject" of object"-Mailitem'Failed

em dùng office 2010




Sub Send_Files()

Dim OutApp As Object
Dim OutMail As Object
Dim sh As Worksheet
Dim cell As Range
Dim FileCell As Range
Dim rng As Range

With Application
.EnableEvents = False
.ScreenUpdating = False
End With

Set sh = Sheets("Sheet1")

Set OutApp = CreateObject("Outlook.Application")

For Each cell In sh.Columns("C").Cells.SpecialCells(xlCellTypeConstants)
'thay cot C là cot chua dia chi mail

'Enter the path/file names in the C:Z column in each row
Set rng = sh.Cells(cell.Row, 1).Range("D1:H1")

If cell.Value Like "?*@?*.?*" And _
Application.WorksheetFunction.CountA(rng) > 0 Then
Set OutMail = OutApp.CreateItem(0)

With OutMail
.to = cell.Value
.Subject = cell.Offset(0, -2) >>>>Lỗi

.Body = "hi" & cell.Offset(0, -1).Value

For Each FileCell In rng.SpecialCells(xlCellTypeConstants)
If Trim(FileCell) <> "" Then
If Dir(FileCell.Value) <> "" Then
.Attachments.Add FileCell.Value
End If
End If
Next FileCell

.Display
End With

Set OutMail = Nothing
End If
Next cell

Set OutApp = Nothing
With Application
.EnableEvents = True
.ScreenUpdating = True
End With
End Sub
 
Upvote 0
Chào các bạn,mình đang gặp phải vấn đề sau với câu lệnh:
Mã:
Sub AssistantAlert()
    With Application.Assistant
        Select Case _
            .DoAlert( _
            "Test", _
            "Click a button.", _
            msoAlertButtonYesAllNoCancel, _
            msoAlertIconCritical, _
            msoAlertDefaultSecond, _
            msoAlertCancelFirst, _
            False)
            Case vbYes: MsgBox "The user clicked Yes."
            Case vbNo: MsgBox "The user clicked No."
            Case vbCancel: MsgBox "The user clicked Cancel."
            Case 8: MsgBox "The user clicked Yes To All" 'This is the return value for YesToAll
            Case Else
        End Select
    End With
End Sub
Khi bấm nút close(dấu x) thì mặc định là yes, vậy làm thể nào để có thể mặc định là no hoặc cancel?
 
Upvote 0
Code gỡ pass trước khi chạy code
Tôi có 1 sheet Data lúc thì có pass sheet, lúc không có pass sheet
pass là sonthuy
Tôi muốn gỡ pass của Data để chạy code (nếu có)
Cảm ơn các bạn
 
Upvote 0
Mã:
Private Sub cbDSNV_Change()
Dim Rng As Range, sRng As Range
Dim Rws As Long
Dim MyAdd As String, Ma As String, STT As String

Rws = [C2].CurrentRegion.Rows.Count
Set Rng = [C1].Resize(Rws)
Ma = Me!cbDSNV.Text & Me!tbMaNgay.Text
Set sRng = Rng.Find(Ma, , xlFormulas, xlPart)
If sRng Is Nothing Then
    Me!tbMaHD.Text = Ma & "000"
Else
    MyAdd = sRng.Address
    Do
        If Right(sRng.Value, 3) > STT Then STT = Right(sRng.Value, 3)
        Set sRng = Rng.FindNext(sRng)
    Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
    Me!tbMaHD.Text = Ma & Right("00" & CStr(Int(STT) + 1), 3)
End If
End Sub
Code bài 11 https://www.giaiphapexcel.com/diend...tự-tự-động-trên-userform.154612/#post-1020391
Nhờ các anh chị em chú thích code trên giúp mình với. Xin cảm ơn.
 
Upvote 0
Chào các bạn,mình có lưu các file có đuôi txt trong một thư mục,với tên các file được lưu với quy định là: "tên file-" & thời điểm lưu file (yymmdd hhmmss)
ví dụ:
ABC-210327 230612.txt
AAB-210327 230120.txt
Các bạn giúp mình code vba lấy tên file có thời điểm lưu mới nhất với đó là: ABC-210327 230612.txt
 
Upvote 0
Chào các bạn,mình có lưu các file có đuôi txt trong một thư mục,với tên các file được lưu với quy định là: "tên file-" & thời điểm lưu file (yymmdd hhmmss)
ví dụ:
ABC-210327 230612.txt
AAB-210327 230120.txt
Các bạn giúp mình code vba lấy tên file có thời điểm lưu mới nhất với đó là: ABC-210327 230612.txt
Xem ví dụ
Mã:
  Dim maxFile$, maxTime, tFile, tmp
  '....
  'tFile = gì gì dó
  tFile = "ABC-040302 230612.txt" ' Vi du
  tmp = Split(Split(tFile, "-")(1), ".")(0)
  tmp = DateValue("20" & Mid(tmp, 1, 2) & "/" & Mid(tmp, 3, 2) & "/" & Mid(tmp, 5, 2)) _
          + TimeValue(Mid(tmp, 8, 2) & ":" & Mid(tmp, 10, 2) & ":" & Mid(tmp, 12, 2))
  If maxTime < tmp Then
    maxTime = tmp
    maxFile = tFile
  End If
  '...
 
Upvote 0
Xem ví dụ
Mã:
  Dim maxFile$, maxTime, tFile, tmp
  '....
  'tFile = gì gì dó
  tFile = "ABC-040302 230612.txt" ' Vi du
  tmp = Split(Split(tFile, "-")(1), ".")(0)
  tmp = DateValue("20" & Mid(tmp, 1, 2) & "/" & Mid(tmp, 3, 2) & "/" & Mid(tmp, 5, 2)) _
          + TimeValue(Mid(tmp, 8, 2) & ":" & Mid(tmp, 10, 2) & ":" & Mid(tmp, 12, 2))
  If maxTime < tmp Then
    maxTime = tmp
    maxFile = tFile
  End If
  '...
Cảm ơn bạn đã giúp, sao code không có vòng lặp nào thế bạn? Có thể do mình chưa mô tả kỹ, ý mình là code sẽ thực hiện:
1) Tìm và lấy tất cả các tên file trong thư mục theo đường dẫn cụ thể ví dụ: D:\Data\
2) Sau khi tìm được thì kiểm tra xem file nào mới nhất rồi chọn file đó, ví dụ tìm được 2 file thì chọn 1 file mới nhất.
 
Upvote 0
Cảm ơn bạn đã giúp, sao code không có vòng lặp nào thế bạn? Có thể do mình chưa mô tả kỹ, ý mình là code sẽ thực hiện:
1) Tìm và lấy tất cả các tên file trong thư mục theo đường dẫn cụ thể ví dụ: D:\Data\
2) Sau khi tìm được thì kiểm tra xem file nào mới nhất rồi chọn file đó, ví dụ tìm được 2 file thì chọn 1 file mới nhất.
Chổ ... bạn tự viết được mờ
 
Upvote 0
Cho em hỏi là em có 1 Form và 1 Button. Em mở Form sau đó nhấn Button sẽ ẩn Form đi và hiện InputBox để chọn ô..
Nhưng khi ẩn Form và hiện InputBox thì em phải click vào hộp thoại InputBox mới chọn ô được. Bình thường thì khi em gọi InputBox lên và chọn ô là được.
Bác nào giúp em với ạ. Em cảm ơn.
 

File đính kèm

Upvote 0
Mình sử dụng code của bạn trên diễn đàn để tô màu vùng dữ liệu K4:O55. Tuy nhiên nó tô màu không đúng vùng dữ liệu mình muốn (K4:O6548).
Mong các bạn chỉ lỗi sai giúp.
Cảm ơn rất nhiều.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom