Mong Thầy và các bạn hỗ trợ...Tham chiếu 2 WorkBooks theo Range (1 người xem)

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

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

ninh_lu

Thành viên mới
Tham gia
28/5/15
Bài viết
24
Được thích
1

Dear Thy và cácbn.

Em có đon codesau chy tham chiếu gia 2 workbooks…Và tham chiếu theo Range như “embevinhphuc” có sửdụng. Nhưng không hiểu sao chạy không được và nó báo lỗi “ Application-defined orobject define error “ở dòng code bên dưới mà em có Highlight màu đỏ đậm


Rấtmong Thầy và các bạn coi giùm ạ.

Emxin cảm ơn!





“OptionExplicit

SubPCMA_Button1_Click()

Dim i As Integer
Dim j As Integer
Dim a21 As Integer
Dim result As String

result = InputBox("Pls kindly inputPassword..!", "Authentication")
If result = "112233" Then

WithApplication

.Interactive= False
.EnableEvents= False
.ScreenUpdating= False
.Calculation= xlCalculationManual
EndWith

For i = 5 To 30 ' so luong nguoi trong 1 bo phan
For j = 17 To 22

If Sheet1.Cells(2, 1) = "21" Then
For a21 = 6 To 11

If Sheet1.Cells(i,2).Text = Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2)) Then
IfSheet1.Cells(4, j).Text = Workbooks("OVT.xlsm").Sheets(1).Cells(7,a21) Then
Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8,a21), Cells(700, a21)) = Sheet1.Cells(i, j).Text

EndIf
EndIf
Next a21
EndIf

Next j
Next i

WithApplication
.Interactive= True
.EnableEvents= True
.ScreenUpdating= True
.Calculation= xlCalculationManual
EndWith

Else
MsgBox " Invalid Password..."
EndIf


EndSub
 
Lần chỉnh sửa cuối:
Dear you.

Cm ơn bạn , mình có thử nhiều cáchnhưng chưa đc.
Filenày hơi confidential nên tiếc là mình k gửi đc. Nhưng đại loai là tham chiếu giữa2 workbooks theo kiểu Range, vì 1 biến nó chạy dài quá nên mình cắt nó và họctheo kiểu tham chiếu Range như 1 bạn từng làm….
Mình cũngmi đến vi VBAnên khá bỡ ngỡ. Cảm ơn bạn J
 
Upvote 0
Bài viết gì mà Kinh quá vậy. Còn không có lấy cái file nữa.
Dòng màu đỏ sao kỳ kỳ quá
thay Sheet1.Cells(i,2).Text
Thành Sheet1.Cells(i,2).Value
thử xem

file của bạn ấy hơi confidential nên không gửi lên được bạn nhé
bạn ấy là wall piece new nên có gì bỡ ngỡ mong bạn thông cảm
 
Upvote 0
file của bạn ấy hơi confidential nên không gửi lên được bạn nhé
bạn ấy là wall piece new nên có gì bỡ ngỡ mong bạn thông cảm

Đâu có chiện wall piece? phải nói là castle garden, hoặc form balls mới đúng.
Mà dạng bài này là tiger help greedy shine, có thể phải coi chừng cái workbook dùng để greedy shine nó có đang lard không.
 
Upvote 0
Trướcmình có biến k chạy hàng từ 8 đến 700….Vì chạy như thế lâu quá nên mình bỏ biến“ k “ và thay bằng tham chiếu Range trực tiếp như vậy.
Mong thầy và các bạn giúp nhé…Thanks all J
 
Upvote 0
Nếu thế này thì Workbooks("OVT.xlsm"). phải đang được mở, còn không thì no object
Và chú ý, dù Sheet1.Cells(i,2).Value thì vẫn lỗi vì Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2)) là 1 range (vùng) giá trị, 1 giá trị sao so sánh với 1 range giá trị. nên xem lại cách đặt vấn đề.
 
Upvote 0
Nếu thế này thì Workbooks("OVT.xlsm"). phải đang được mở, còn không thì no object
Và chú ý, dù Sheet1.Cells(i,2).Value thì vẫn lỗi vì Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2)) là 1 range (vùng) giá trị, 1 giá trị sao so sánh với 1 range giá trị. nên xem lại cách đặt vấn đề.
trước khi nói người khác xem lại cách đặt vấn đề thì bạn nên học lại về VBA trước khi viết bình luận tiếp theo
 
Upvote 0
trước khi nói người khác xem lại cách đặt vấn đề thì bạn nên học lại về VBA trước khi viết bình luận tiếp theo

nghĩa là sao?
Để ý thấy rằng, dù đổi Text thành Value thì ...
If Sheet1.Cells(i,2).Text = Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2)) Then
So sánh giữa 1 giá trị và 1 vùng giá trị thì không so sánh được về mặt logic
 
Upvote 0
Nếu thế này thì Workbooks("OVT.xlsm"). phải đang được mở, còn không thì no object
Và chú ý, dù Sheet1.Cells(i,2).Value thì vẫn lỗi vì Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2)) là 1 range (vùng) giá trị, 1 giá trị sao so sánh với 1 range giá trị. nên xem lại cách đặt vấn đề.

Tất nhiên là các file phải đang mở mới tham chiếu đc bạn ạ. Còncode ở đây theo mình hiểu thì nó đang tham chiếu vùng với vùng mà.

Mình đã sửa lại “

If Sheet1.Cells(i, 2).Text = Workbooks("OVT.xlsm").Worksheets("11").Range(Cells(8,2), Cells(700, 2)).Text Then


If Sheet1.Cells(4, j) =Workbooks("OVT.xlsm").Worksheets("11").Cells(7, a21) Then
Workbooks("OVT.xlsm").Worksheets("11").Range(Cells(8,a21), Cells(700, a21)).Value = Sheet1.Cells(i, j).Value

Như thế nàynó có chạy nhưng k ra kết quả :D
 
Upvote 0
nghĩa là sao?
Để ý thấy rằng, dù đổi Text thành Value thì ...
If Sheet1.Cells(i,2).Text = Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2)) Then
So sánh giữa 1 giá trị và 1 vùng giá trị thì không so sánh được về mặt logic

bạn có ghi là
Nếu thế này thì Workbooks("OVT.xlsm"). phải đang được mở, còn không thì no object
Và chú ý, dù Sheet1.Cells(i,2).Value thì vẫn lỗi vì Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2)) 1 range (vùng) giá trị, 1 giá trị sao so sánh với 1 range giá trị. nên xem lại cách đặt vấn đề.

nhưng lúc này bên phải dấu bằng đâu còn là Range nữa ???
 
Upvote 0
bạn có ghi là


nhưng lúc này bên phải dấu bằng đâu còn là Range nữa ???

vì chủ topic thích dùng English, mà range trong English là 1 loạt / 1 vùng

Workbooks("OVT.xlsm").Sheets(1).Range(Cells(8, 2),Cells(700, 2))
bên phải này sẽ là nhiều giá trị vì nó là giá trị của cả vùng (từ cell hàng 8 cột 2 đến cell hàng 700 cột 2), đúng thực tế, VBA sẽ hiểu đó là 1 mảng giá trị.
 
Upvote 0
Cảm ơn mọi người đã hỗ trợ nhé. Mình xin gửi 2 file như đính kèm…Trong2 file mình đã highlight màu đỏ những trường tham chiếu với nhau. Cái này là 1dạng chấm công OverTime cho công ty thôi. Rat mong cac ban giup do...


Thanks mọi ng J
 

File đính kèm

Upvote 0
Cảm ơn mọi người đã hỗ trợ nhé. Mình xin gửi 2 file như đính kèm…Trong2 file mình đã highlight màu đỏ những trường tham chiếu với nhau. Cái này là 1dạng chấm công OverTime cho công ty thôi. Rat mong cac ban giup do...


Thanks mọi ng J

tôi chỉ viết lại phần vòng lặp thôi còn các phần khác không liên quan
Mã:
Dim arr, r As Long, Dic As Object
Set Dic = CreateObject("scripting.dictionary")
With Sheet1
    If .[A2].Value = 21 Then
        arr = .Range("B5:V" & .[B100000].End(xlUp).Row).Value
        For r = 1 To UBound(arr) Step 1
            If Not Dic.exists(arr(r, 1)) Then Dic.Add arr(r, 1), Array( _
            arr(r, 16), arr(r, 17), arr(r, 18), arr(r, 19), arr(r, 20), arr(r, 21))
        Next
    End If
End With
With Workbooks("OVT.xlsm").Worksheets("11")
    arr = .Range("B8:B" & .[B100000].End(xlUp).Row).Value
    For r = 1 To UBound(arr) Step 1
        If Dic.exists(arr(r, 1)) Then
            .Range("F" & r + 7).Resize(, 6).Value = Dic(arr(r, 1))
        End If
    Next
End With

ở trên anh VetMini đã nói rồi đó
Đâu có chiện wall piece? phải nói là castle garden, hoặc form balls mới đúng.
Mà dạng bài này là tiger help greedy shine, có thể phải coi chừng cái workbook dùng để greedy shine nó có đang lard không.

giờ còn confidential nữa không ta ?
 

File đính kèm

Upvote 0
tôi chỉ viết lại phần vòng lặp thôi còn các phần khác không liên quan
Mã:
Dim arr, r As Long, Dic As Object
Set Dic = CreateObject("scripting.dictionary")
With Sheet1
    If .[A2].Value = 21 Then
        arr = .Range("B5:V" & .[B100000].End(xlUp).Row).Value
        For r = 1 To UBound(arr) Step 1
            If Not Dic.exists(arr(r, 1)) Then Dic.Add arr(r, 1), Array( _
            arr(r, 16), arr(r, 17), arr(r, 18), arr(r, 19), arr(r, 20), arr(r, 21))
        Next
    End If
End With
With Workbooks("OVT.xlsm").Worksheets("11")
    arr = .Range("B8:B" & .[B100000].End(xlUp).Row).Value
    For r = 1 To UBound(arr) Step 1
        If Dic.exists(arr(r, 1)) Then
            .Range("F" & r + 7).Resize(, 6).Value = Dic(arr(r, 1))
        End If
    Next
End With

ở trên anh VetMini đã nói rồi đó


giờ còn confidential nữa không ta ?

DearDoveandRose.

Chânthành cảm ơn bạn rất nhiều.
Mìnhmới bập vào VBA nên quả thật vấp vào phần mảng này thấy hơi khó hiểu nhưng sẽ cốgắng tìm hiểu them.
Bạncó thể vui long bớt chút thời gian note giúp mình ý nghĩa của từng dòng lệnh bạnviết được k? Mình biết làm cái này hơi mất thời gian cho bạn nhưng phiền bạnvui long support giải thích nốt giúp mình với nhé.
Ngàn lần cảm ơn bạn!
 
Upvote 0
Dear DoveandRose.

Chânthành cảm ơn bạn rất nhiều.
Mìnhmới bập vào VBA nên quả thật vấp vào phần mảng này thấy hơi khó hiểu nhưng sẽ cốgắng tìm hiểu them.
Bạncó thể vui long bớt chút thời gian note giúp mình ý nghĩa của từng dòng lệnh bạnviết được k? Mình biết làm cái này hơi mất thời gian cho bạn nhưng phiền bạnvui long support giải thích nốt giúp mình với nhé.
Ngàn lần cảm ơn bạn!
thật không may cho bạn , tôi cực dốt cái khoản đi solve like code cho người khác , tôi nghĩ sao thì viết code vậy
tôi thậm chí còn không hiểu mấy cái chữ in đậm bạn viết nó có ý nghĩa gì , hi vọng mong manh anh VetMini có đi ngang thì tiger help mấy chữ đó giúp tôi chăng ? chứ tình hình này là thua
 
Upvote 0
thật không may cho bạn , tôi cực dốt cái khoản đi solve like code cho người khác , tôi nghĩ sao thì viết code vậy
tôi thậm chí còn không hiểu mấy cái chữ in đậm bạn viết nó có ý nghĩa gì , hi vọng mong manh anh VetMini có đi ngang thì tiger help mấy chữ đó giúp tôi chăng ? chứ tình hình này là thua

DearDoveandRose.

Dù sao cũng cm ơn bạn rất nhiều J

Mấychữ highlight k phải ý mình muốn vậy đâu, mình type trong word rồi paste lên đâynên vô tình nó bị vậy đó.

Một lần nữa cảm ơn bạn nhiều nhé.
 
Upvote 0
Bạn ấy muốn thì DoveAndRose cứ "Like then afternoon" bạn í đi )(&&@@

Thật sự đoạn code của DoveandRose chạy rất chính xác…nhưngmình chưa tham chiếu kiểu này nên vập vào đọc thấy chưa hiểu từng dòng lệnh lắm.

Nếubạn nào hiểu, vui long note giúp mình từng dòng xem ý nghĩa nó là gì được không?
Cảm ơn mọi người!
 
Upvote 0
Web KT

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

Back
Top Bottom