Chọn vùng trong VBA

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Chào các AC trong diễn đàn. Nhờ các AC xem giúm e file này, trong file e đã ghi rõ y/c. E cảm ơn ạ

Làm biếng "chế" lại cái mới nên lấy code của bạn luôn: Bạn sửa câu lệnh

Range(Cells(.Row, 2), Cells(.Row, 10).End(xlDown)).Select

thành

Range(Cells(.Row, 2), Cells(.Row, 10).End(xlDown)[COLOR=#ff0000][B].Offset(-5)[/B][/COLOR]).Select

www.giaiphapexcel.com/diendan/threads/ch%E1%BB%8Dn-v%C3%B9ng-trong-vba.109322/

Khóa học Power PI – Ứng dung trong Nhân sự
Khóa học SprinGO phù hợp

Khóa học Power PI – Ứng dung trong Nhân sự

TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...

Xem khóa học
★★★★★ 5 ★ 1 👤 3 ▥ 0
Quảng cáo

Bạn nên đọc

3 Responses

  1. hands says:

    Nếu chọn 1 vùng thì xác định điểm đầu cần chọn rồi mở rộng bằng resize ra số dòng, số cột . Nếu biết một chút về VBA thì tự sửa thôi …

    E chào A. Cho phép e nói 1 chút. Hôm qa đúng là em có thử cách của A, sau đó thử cách của A NghiaPhuc. Theo đó, cách của A nghiaphuc đáp ứng đúng y/c của e mong muốn, e vội cảm ơn A ý. Có thể trong lúc đó, e đã quên k Reply lại cho A. Mong a thông cảm ạ. Có thể a sẽ hỏi là: Hôm nay chẳng nhẻ vẫn quên… E còn trẻ ng, mới tập tành VBA và còn rất nhiều điều muốn hỏi A và các thầy, Ac trong diễn đàn. E sẽ rút kinh nghiệm. Chúc A 1 ngày tốt lành !

    Có thể trên thực tế thì cái dòng cuối cùng đó không biết là dòng nào, do đó cũng chưa biết được tổng số dòng cần chọn. Như vậy thì Resize trong trường hợp này là không ổn. Và tất nhiên nếu dòng cuối cùng mà không lớn hơn 5 thì cách dùng Offset như bài #2 cũng "tèo".

    Vẫn bài toán này, nhờ A và các Ac khác xem giúp em 1 chút nữa ạ. E cảm ơn nhìu !!!

    Sub GPE()
    Dim X, Y
    X = Application.Match(" -", Range("B2:B26"), 0)
    Y = Application.CountIf(Range("B2:B26"), " -")
        Range("B" & X + 2 & ":B" & X + Y).Select
    End Sub
  2. hands says:

    Hàng thứ i thì là cột thứ mấy? Hay chỉ là hàng không thôi? Nếu chỉ là chọn hàng không thôi thì bạn cứ cho luôn vào : Rows(i) . Nếu chọn vùng kiểu như Range("A5:B8") mà số 8 là i thì điền Range("A5:B" & i)

    Nếu chỉ muốn chọn hàng i thì sử dụng thế này.

    Worksheets("Sheet1").Rows([COLOR=#ff0000][B]i[/B][/COLOR]).Select

    cho em hỏi thêm câu này:
    em có sub sau mà sao khi chạy nó báo lỗi ở dòng tô đỏ.
    các bác giúp em với.

    Sub copy1() Dim copyrange As Range
    Dim numrow, numcol As Integer
    Set copyrange = Sheets("con1")..CurrentRegion
    copyrange.Offset(2).Resize(copyrange.Rows.Count – 2, copyrange.Columns.Count).Select
    Selection.copy
    Worksheets("FSB").Range("A5").Select
    Selection.Insert Shift:=xlDown
    End Sub

    Bạn xem lại sheet FSB có tồn tại hay không?

    em có sheet đó anh ơi !
    em đã làm như bác nói nhưng nó lại hiện bôi vàng dòng màu đỏ
    em gửi file lên bác xem hộ em cái. không biết excel của em có bị lỗi gì không

    Sub copy2()
    Dim copyrange As Range
    Dim numrow, numcol As Integer
    Set copyrange = Sheets("con1")..CurrentRegion
    copyrange.Offset(2).Resize(copyrange.Rows.Count – 2, copyrange.Columns.Count).Select
    Selection.copy
    Sheets("FSB").Select
    Worksheets("FSB").Range("A3").Select
    Selection.Insert Shift:=xlDown
    End Sub

    Thêm dòng màu xanh

    Set copyrange = Sheets("con1")..CurrentRegion
    Sheets("con1").Select
    copyrange.Offset(2).Resize(copyrange.Rows.Count – 2).Select

    cảm ơn bác rất nhiều nhiều nha ..dòng lệnh của em đã chạy.
    mà bác có thể giải thích cho em rõ hơn tại lại như vậy ạ.
    còn một vấn đề nữa khi em nhấn F5 để chạy thì chương trình hiện bảng "update Value" như hình . em không hiểu gì nên click "Cancel"..cái bảng đó lại hiện ra lần nữa, em tiếp tục click "cancel" thì bảng đó mất đi mà dòng lệnh chạy được.

    Sub copy2()
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.Calculation = xlCalculationManual
    [COLOR=#0000ff]'// code của bạn: Từ chỗ Dim tới trước End Sub
    '.......[/COLOR]
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
    Application.Calculation = xlCalculationAutomatic
    End Sub

    Khi "đứng" ở sheet nào (sheet.select hoặc sheet.Activate) thì mới chọn được range ở trên sheet đó (range().select)

  3. hands says:

    Các bác giúp em chọn các vùng khác nhau (màu vàng trong file gửi kèm) theo vùng chỉ định nhập ở ô L1:M2 (em muốn chọn kiểu như này ah; B&vlueL1:C&valueM1, B&valueL2:C&valueM2) em xin cảm ơn

    Dùng đỡ cái này:

    Option Explicit
    Sub chonvung()
    Dim i&, rng, startC As String, endC As String
    Dim u As Range, addr As String
    rng = Range("L1:M" & Cells(Rows.Count, "L").End(xlUp).Row).Value
    startC = "B"' cot dau
    endC = "C" ' cot cuoi
    For i = 1 To UBound(rng)
    If rng(i, 1) <> "" And rng(i, 2) <> "" Then
    addr = startC & rng(i, 1) & ":" & endC & rng(i, 2)
    If u Is Nothing Then
    Set u = Range(addr)
    Else
    Set u = Union(u, Range(addr))
    End If
    End If
    Next
    u.Select
    End Sub

    Bạn thử coi

    Sub troioi()
        With Sheets("Sheet1")
            Union(.Cells(2, 2), .Cells(2, 3), .Range(.Cells(7, 2), .Cells(8, 3))).Select
        End With
    End Sub

    hay wa cảm ơn bác nhiều

    ah không dc vì giá trị cột L1 đến M2 thay đổi nó ko chọn dc

    Trực quan hơn nè, mại zô:
    Sub SelectionRanges1()
    Dim Rng As Range

    With Sheets("Sheet1")
    Set Rng = .Range("B" & ..Value & ":C" & ..Value)
    MsgBox Rng.Address, , "Rng.Address:"
    Union(Rng, .Range("B" & ..Value & ":C" & ..Value)).Select
    MsgBox Selection.Address, , "Vùng Chon Theo Chi Sô Dòng & Côt"
    End With
    End Sub

    Bác lại trói cái vùng L1:M2 rồi. Thời đại 4.0 rồi thả rông cho nó tự do mát mẻ đi bác.

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm