Xin hỏi về cách tạo macro di chuyển đến sau dòng dữ liệu cuối cùng

  • Thread starter Thread starter NEO
  • Ngày gửi Ngày gửi
Liên hệ QC

NEO

Thành viên mới
Tham gia
10/8/06
Bài viết
30
Được thích
25
Chào cả nhàEm post bài xin hỏi một chútKhông biết có post sai topic không, nếu sai nhờ các anh chuyển giúp.Em có bảng dữ liệu như sau:Các dòng từ A1 ==>> A10: có chứa dữ liệu:

Bây giờ em muốn Macro thực hiện một lệnh mà bắt đầu từ dòng trống ngay sau dòng chứa dữ liệu cuối cùng, ở bảng dữ liệu của em chính là dòng thứ 11 và tại ô A11. Không biết có thực hiện được không??.Nhưng xin mạn phép nhờ các anh chị giúp đỡ.Cám ơn cả nhà. Chúc mọi người một ngày làm việc hiệu quả
 
cảm ơn bạn vnson rất nhiều, vậy mà ninh nghĩ mãi không ra cú pháp
 
Upvote 0
Sub dencuoitrang()
' Den cuoi trang​
Sheet1.Select​
Sheet1.Activate​
lastrow = Sheets("Sheet1").Range("D" & Rows.count).End(xlUp).Row ' Thay doi ten sheet​
Sheet1.Select​
Cells(lastrow, "D").Select ' Thay cot​
End Sub
 
Upvote 0
Nhờ các anh viết giúp đoạn code đếm dòng đến ô có dữ liệu trắng (blank) thì dừng lại.
Em có nói rõ trong bảng excel rồi ah.
Mong sớm hồi âm của các anh.
Thanks!
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Nhờ các anh viết giúp đoạn code đếm dòng đến ô có dữ liệu trắng (blank) thì dừng lại.
Em có nói rõ trong bảng excel rồi ah.
Mong sớm hồi âm của các anh.
Cảm ơn!
Bạn dùng thử
Mã:
Function NumberRow(ByVal Rng As Range) As Long
    Dim aTmp, I As Long, n As Long
On Error Resume Next
aTmp = Rng.Value
For I = 1 To UBound(aTmp)
    If aTmp(I, 1) <> Empty Then
        n = n + 1
    Else
        Exit For
    End If
Next I
If n Then NumberRow = n
End Function
 
Upvote 0
Nhờ các anh viết giúp đoạn code đếm dòng đến ô có dữ liệu trắng (blank) thì dừng lại.
Em có nói rõ trong bảng excel rồi ah.
Mong sớm hồi âm của các anh.
Cảm ơn!
Bạn thử:
PHP:
Sub Dem_abc()
    Dim i, k
    With Sheet1
        For i = 6 To 22
            If IsNumeric(Cells(i, 1)) And Cells(i, 1) <> "" Then
                k = k + 1
            End If
        Next
    End With
    [B26] = k
End Sub
 
Upvote 0
chào cả nhà,
mình vô tình đọc được topic này đúng với câu hỏi mình đang cần hỏi,
mình muốn viết công thức VBA chọn giá trị ,
mình sử dụng last row. để nó hiểu giả dụ như, A2 sẽ tương ứng với B2, C2 & D2. hết một chuỗi như thế sẽ quay lại vòng lặp
tương ứng với A3 là B3, C3 & D3.

dây là công thức của mình nhưng mình nghĩ last row của mình nó viết sai.
có bác nào sửa hộ với

If Not IsObject(sapplication) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set sapplication = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(Connection) Then
Set Connection = sapplication.Children(0)
End If
If Not IsObject(session) Then
Set session = Connection.Children(0)
End If
If IsObject(WScript) Then
WScript.ConnectObject session, "on"
WScript.ConnectObject sapplication, "on"
End If

With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Range("B2:C" & LastRow).Select
LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
Range("C2:D" & LastRow).Select
LastRow = .Cells(.Rows.Count, "C").End(xlUp).Row
Range("C2:D" & LastRow).Select

End With



For i = 2 To LastRow

vPON = Sheets(1).Cells(i, 1).Value
session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").Text = "/ncs02"
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/ctxtRC29N-MATNR").Text = "Vmaterial"
session.findById("wnd[0]/usr/ctxtRC29N-WERKS").Text = "fi20"
session.findById("wnd[0]/usr/ctxtRC29N-STLAN").Text = "1"
session.findById("wnd[0]/usr/ctxtRC29N-AENNR").Text = "Vecnnumber"
session.findById("wnd[0]/usr/ctxtRC29N-AENNR").SetFocus
session.findById("wnd[0]/usr/ctxtRC29N-AENNR").caretPosition = 10
session.findById("wnd[0]").sendVKey 0
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-KTEXT[4,2]").SetFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-KTEXT[4,2]").caretPosition = 0
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[0]").sendVKey 3
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-POSNR[0,6]").SetFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-POSNR[0,6]").caretPosition = 2
session.findById("wnd[0]/usr/btn%_AUTOTEXT001").press
session.findById("wnd[1]/usr/subPOS_SETP:SAPLCSDI:0710/txtRC29P-SELID").Text = "Vcomponent"
session.findById("wnd[1]/usr/subPOS_SETP:SAPLCSDI:0710/txtRC29P-SELID").SetFocus
session.findById("wnd[1]/usr/subPOS_SETP:SAPLCSDI:0710/txtRC29P-SELID").caretPosition = 11
session.findById("wnd[1]").sendVKey 0
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-POSNR[0,0]").SetFocus
session.findById("wnd[0]/usr/tabsTS_ITOV/tabpTCMA/ssubSUBPAGE:SAPLCSDI:0152/tblSAPLCSDITCMAT/txtRC29P-POSNR[0,0]").caretPosition = 2
session.findById("wnd[0]").sendVKey 2
session.findById("wnd[0]/usr/tabsTS_ITEM/tabpPHPT/ssubSUBPAGE:SAPLCSDI:0830/btnP_ALTERNATIVPOS").press
session.findById("wnd[1]/usr/txtRC29P-EWAHR").Text = "Vquota"
session.findById("wnd[1]/usr/txtRC29P-EWAHR").SetFocus
session.findById("wnd[1]/usr/txtRC29P-EWAHR").caretPosition = 0
session.findById("wnd[1]/tbar[0]/btn[0]").press
session.findById("wnd[2]/tbar[0]/btn[0]").press
End Sub

1533185952487.png
 
Upvote 0
Bạn dùng thử
Mã:
Function NumberRow(ByVal Rng As Range) As Long
    Dim aTmp, I As Long, n As Long
On Error Resume Next
aTmp = Rng.Value
For I = 1 To UBound(aTmp)
    If aTmp(I, 1) <> Empty Then
        n = n + 1
    Else
        Exit For
    End If
Next I
If n Then NumberRow = n
End Function

chào bạn mình vào macro không lên hàm để gọi. thêm nữa mình muốn đếm cả các hàng chứa chữ thì sửa hàm thế nào ạ? tức đếm các ô khác rổng. xin cảm ơn
Bài đã được tự động gộp:

Cám ơn anh. Em làm được rồi ah
Hoặc:
PHP:
Sub abc2()
    Dim a, c
    a = Range("A6:A22").SpecialCells(xlCellTypeConstants, 1).Count
    c = a: MsgBox c
End Sub

chào bạn mình muốn đếm cả các hàng chứa chữ thì sửa thế nào ạ? tức đếm các ô khác rổng. xin cảm ơn
 
Upvote 0
chào bạn mình vào macro không lên hàm để gọi. thêm nữa mình muốn đếm cả các hàng chứa chữ thì sửa hàm thế nào ạ? tức đếm các ô khác rổng. xin cảm ơn
Bài đã được tự động gộp:




chào bạn mình muốn đếm cả các hàng chứa chữ thì sửa thế nào ạ? tức đếm các ô khác rổng. xin cảm ơn
Bạn đưa ví dụ lên xem nào?
 
Upvote 0
Cách của Cường là dùng Ctrl+End chỉ đúng với trường hợp dữ liệu chưa bị xoá (Cường thử xoá dữ liệu ở dòng cuối cùng và nhấn các phím xem sao!).

Cách của bác SA_DQ theo mình nghĩ sẽ hiệu quả nếu vùng dữ liệu kết thúc trong cùng một hàng. Nếu không thì phải biết cột nào có số dòng nhiều nhất để đặt con trỏ rồi nhấn Ctrl+.....

Nếu dữ liệu không liên tục thì sao?
Với mình thì mình dùng thuộc tính UsedRange để biết vùng dữ liệu sử dụng
Bạn chạy macro sau để trả về ô cuối cùng:
Mã:
Public Sub End_Row()
Dim row_i As Long
row_i = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row
Cells(row_i, "A").Select
End Sub
lạ nhỉ, sao code em chạy ko đc
 
Upvote 0
Web KT

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

Back
Top Bottom