Hỏi về lấy địa chỉ của 1 cell (1 người xem)

Liên hệ QC

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

khakha258

Thành viên mới
Tham gia
4/6/12
Bài viết
9
Được thích
1
Làm sao để lấy địa chỉ của 1 cell trả về dạng text trong VB?
VD: mình nhập vào Cells(2,5) thì nó trả về là "E2"
Range ngoài nhận giá trị string thì nó có nhận cells không?
như là
Mã:
range(cells(1,1),cells(5,8))
Mã:
 
Ban dùng thêm address thử xem sao

Range(Cells(1, 1), Cells(5, 8)).Address
 
Upvote 0
Thế này nhé bạn! Cells(2,5).Address hoặc Range("E2").Address nó trả về $E$2. Còn Range(cells(1,1),cells(5,8)).Address nó trả về $A$1:$H$5
 
Upvote 0
Thế này nhé bạn! Cells(2,5).Address hoặc Range("E2").Address nó trả về $E$2. Còn Range(cells(1,1),cells(5,8)).Address nó trả về $A$1:$H$5
Cám ơn bạn. Nhưng mà như vậy thì VB nó có hiểu không? Vì ý định của mình là chọn vùng nào đó dựa vào biến rồi copy qua một sheet khác.
VD thế này:
cho 2 biến x,y và mình tìm giá trị cho nó
rồi mình làm thế này
Mã:
range(cells(x,1),cells(x,y)).address
sau đó copy vùng đó qua sheet khác thì sao?
 
Lần chỉnh sửa cuối:
Upvote 0
Test thử như sau:

Mã:
Sub TEST()
Dim r1, r2 As String
    r1 = Cells(1, 1).Address: r2 = Cells(2, 5).Address
    Range(r1 & ":" & r2).Select
    MsgBox r1 & ":" & r2
End Sub
 
Upvote 0
VBA Hiều chứ bạn. Các chỉ số hàng và cột bạn hoàn toàn có thể dùng chỉ số động (ví dụ như dùng vòng lặp For Next).
 
Upvote 0
Mình lam rất nhiều cách rồi nhưng vẫn báo lỗi
Mình gửi cả đoạn code lên đây các bạn xem giúp mình với
Mã:
Sub Macro1()    Dim i, j, r, h As Integer
    Dim row, note As Long
    Dim vung, day, shtname, x, y As String
    i = Sheets.Count
    j = 1
    r = 1
    h = 1
    row = 15
    note = 2
    Sheets.Add after:=Sheets(Sheets.Count)
    Sheets(i + 1).Name = "Total"
        Do While (j <= i)
            Do While (Sheets(j).Cells(r, 1) = "")
                    r = r + 1
                Loop
            Do While (Sheets(j).Cells(r - 1, h) <> "")
                    h = h + 1
                Loop
            If (j > i) Then
                Sheets(j).Select
                x = Cells(r - 1, 1).Address
                y = Cells(r - 1, h - 1).Address
                Range(x & ":" & y).Select
                Selection.Copy
                Sheets("Total").Select
                day = "B" & note
                Range(day).Select
                ActiveSheet.Paste
                Cells(1, 1) = "Region"
                note = note + 1
            End If
        Do While (Sheets(j).Cells(row, 1) <> "")
        row = row + 1
        Loop
            Sheets(j).Select
            x = Cells(r - 1, 1)
            y = Cells(row - 1, h - 1)
            Range(x & ":" & y).Select
            Selection.Copy
            Sheets("Total").Select
            day = "B" & note
            Range(day).Select
            ActiveSheet.Paste
            day = "A" & note
            Range(day) = Sheets(j).Name
            shtname = day & ":A" & note + row - 2
            Range(shtname).Select
            Selection.FillDown
            note = note + row - 2
            row = 2
            j = j + 1
        Loop
        Sheets("Total").Select
        ActiveCell.SpecialCells(xlLastCell) = ""
        Cells.Select
        Cells.EntireColumn.AutoFit
        Cells.EntireRow.AutoFit
        Range("A1").Select
End Sub
Ý định của mình là copy dữ liệu từ nhiều sheet vào 1 sheet tổng hợp mà các sheet này cột và dòng chứa dữ liệu cần chép không xác định trước
 
Lần chỉnh sửa cuối:
Upvote 0
Lỗi mà mình thấy có thể xảy ra như sau: trường hợp r hoặc h =1 thì sẽ lỗi. Cái nữa là bạn không giới hạn giá trị để thoát vòng lặp cho r và h, vì nếu dùng excel 2003, mà r=66537 sẽ báo lỗi, vì excel 2003 chỉ có 66536 dòng thôi.
 
Upvote 0
Lỗi mà mình thấy có thể xảy ra như sau: trường hợp r hoặc h =1 thì sẽ lỗi. Cái nữa là bạn không giới hạn giá trị để thoát vòng lặp cho r và h, vì nếu dùng excel 2003, mà r=66537 sẽ báo lỗi, vì excel 2003 chỉ có 66536 dòng thôi.
Excel của mình là 2010, còn dữ liệu của mình thì bắt đầu từ A6:F6 trở đi, có cái A8:E8, có cái A14:H14, nói chung là không xác định trước được. Mà lỗi mình nhận đc là :
Mã:
runtime error '1004':
application-defined or object-defined error
và highlight ở
Mã:
y = Cells(row - 1, h - 1)
bây giờ phải sửa thế nào bạn?
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn cho chạy code, sau khi báo lỗi, bạn rê chuột vào vùng code bị lỗi, rê lần lượt đến các biến y, row, h để check xem các biến đó đang ở giá trị nào, từ đó tìm ra lỗi.
 
Upvote 0
hiện giờ code đã chạy đc nhưng mình lại bị vấn đề về logic, các dữ liệu bị chép đè lên nhau, mình biết đoạn bị lỗi nhưng nó lại không báo lỗi nên không biết nên chỉnh thế nào
Mã:
Sub Macro1()    Dim i, j, r, h As Integer
    Dim row, note As Long
    Dim vung, day, shtname, x, y As String
    i = Sheets.Count
    j = 1
    r = 1
    h = 1
    row = 15
    note = 2
    Sheets.Add after:=Sheets(Sheets.Count)
    Sheets(i + 1).Name = "Total"
    Sheets(j).Select
    Do While (Sheets(j).Cells(r, 1) = "")
            r = r + 1
    Loop
    Do While (Sheets(j).Cells(r, h) <> "")
            h = h + 1
    Loop
    x = Cells(r, 1).Address
    y = Cells(r, h).Address
    Range(x & ":" & y).Select
    Selection.Copy
    Sheets("Total").Select
    Range("B1").Select
    ActiveSheet.Paste
    Cells(1, 1) = "Region"
        Do While (j <= i)
            Do While (Sheets(j).Cells(r, 1) = "")
                    r = r + 1
                Loop
            Do While (Sheets(j).Cells(r, h) <> "")
                    h = h + 1
                Loop
            If (j > i) Then
                Sheets(j).Select
                x = Cells(r, 1).Address
                y = Cells(r, h).Address
                Range(x & ":" & y).Select
                Selection.Copy
                Sheets("Total").Select
                day = "B" & note
                Range(day).Select
                ActiveSheet.Paste
                note = note + 1
            End If
        Do While (Sheets(j).Cells(row, 2) <> "")
        row = row + 1
        Loop
            Sheets(j).Select
            x = Cells(r + 1, 1).Address
            y = Cells(row - 1, h - 1).Address
            Range(x & ":" & y).Select
            Selection.Copy
            Sheets("Total").Select
            day = "B" & note
            Range(day).Select
            ActiveSheet.Paste
            day = "A" & note
            Range(day) = Sheets(j).Name
            [COLOR=#ff0000]shtname = day & ":A" & note + row - r - 1
            Range(shtname).Select
            Selection.FillDown
            note = note + row - r - 1
            row = 15[/COLOR]
            j = j + 1
        Loop
        Sheets("Total").Select
        ActiveCell.SpecialCells(xlLastCell) = ""
        Cells.Select
        Cells.EntireColumn.AutoFit
        Cells.EntireRow.AutoFit
        Range("A1").Select
End Sub
ở đoạn
Mã:
note = note + row - r - 1
nên chỉnh ra sao để không bị chép đè?
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom