Chuyên mục xử lý, gỡ rối code VBA (2 người xem)

Liên hệ QC

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

Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,957
Bình thường mình chỉ thấy là End (xlUp) hoặc End(xlDown) hoặc End(xlToRight) hoặc End.(xlToLeft) chứ em thấy trong 1 số CODE có đoạn này..............End(3))..................

Số 3 này có phải ý nghĩa là xlUp hay không?

Hay là từ ô đang lựa chọn sẽ được di chuyển lên 3 dòng và qua trái 3 dòng ?????

Vậy không biết có các số 1, 2, 4 nữa không và nghĩa là gì ạ?

Nhờ các thầy và các bạn giải thích hộ mình với, em xin cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Bình thường mình chỉ thấy là End (xlUp) hoặc End(xlDown) hoặc End(xlToRight) hoặc End.(xlToLeft) chứ em thấy trong 1 số CODE có đoạn này..............End(3))..................

Số 3 này có phải ý nghĩa là xlUp hay không?

Hay là từ ô đang lựa chọn sẽ được di chuyển lên 3 dòng và qua trái 3 dòng ?????

Vậy không biết có các số 1, 2, 4 nữa không và nghĩa là gì ạ?

Nhờ các thầy và các bạn giải thích hộ mình với, em xin cảm ơn!
Úi. Viết được cả 1 dự án lớn bây giờ Bác còn hỏi cái này :p
End(xlDown) = End(4)
End(xlup)
= End(3)
End(xlToRight) = End(2)
End(xlToLeft) = End(1)
 
Upvote 0
Bình thường mình chỉ thấy là End (xlUp) hoặc End(xlDown) hoặc End(xlToRight) hoặc End.(xlToLeft) chứ em thấy trong 1 số CODE có đoạn này..............End(3))..................

Số 3 này có phải ý nghĩa là xlUp hay không?

Hay là từ ô đang lựa chọn sẽ được di chuyển lên 3 dòng và qua trái 3 dòng ?????

Vậy không biết có các số 1, 2, 4 nữa không và nghĩa là gì ạ?

Nhờ các thầy và các bạn giải thích hộ mình với, em xin cảm ơn!
số 3 tương đương với xlUp mà bạn, người ta viết xlUp trông trực quan hơn, 1 rừng xà nu code thì đọc cũng dễ hiểu hơn!
 
Upvote 0
Úi. Viết được cả 1 dự án lớn bây giờ Bác còn hỏi cái này :p
End(xlDown) = End(4)
End(xlup)
= End(3)
End(xlToRight) = End(2)
End(xlToLeft) = End(1)
(Ôi đối với mình thực thực là lớn đấy) nhưng mà toàn công sức của diễn đàn và đặc biệt là sự nhiệt tình của Bác PacificPr cả thôi. Thực sự cảm ơn các bạn nhiều lắm, mình không phải dân IT nhưng mà cũng đang cố gắng hiểu để có thể hoàn thiện dự án nhỏ của mình sớm nhất.
 
Upvote 0
Sao đến phần định dạng kẻ khung mình làm lúc thì được, lúc thì lại báo lỗi "unable to set the linestyle property of the border class"

Mình làm CODE như thế này bị báo lỗi tại sheet 1, còn các sheet khác thì sử dụng bình thường, Các bạn chỉ mình với lý do với
Mã:
Sub Dinh_Dang()

    Dim ir As Integer
    Dim ic As Integer

    ir = 6                                                                      ' Dòng đầu tiên chứa dữ liệu cần định dạng
    ic = Range("C65536").End(xlUp).Row        ' Dòng cuối cùng chứa dữ liệu cần định dạng

    Range("A" & ir, "L" & ic).Select
    Selection.HorizontalAlignment = xlCenter     'canh giữa cho đều theo cột
   
    Selection.Borders(xlInsideVertical).LineStyle = xlContinuous        ' Kẻ dòng đứng
    Selection.Borders(xlInsideHorizontal).LineStyle = xlDot             ' Kẻ dòng ngang
    Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous              ' Kẻ khung trái
    Selection.Borders(xlEdgeTop).LineStyle = xlContinuous               ' Kẻ khung trên
    Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous            ' Kẻ khung dưới
    Selection.Borders(xlEdgeRight).LineStyle = xlContinuous             ' Kẻ khung phải



End Sub
 
Upvote 0
Thưa thầy!
Cho em hỏi : Vùng bôi mầu xanh của em đang tìm được là J8 giờ em muốn cộng 1 thành J9 (bôi đỏ) thì phải làm như nào, mong thầy giúp đỡ em. Em xin chân thành cảm ơn!
Nmax = Application.Max(Rng)
NameSh = ActiveSheet.Name: DK = False
If NameSh = "CDL-K95" Then CelLink = "O8"
If NameSh = "DTL-K95" Then CelLink = "J8"
For i = LBound(arr) To UBound(arr)
If arr(i) = NameSh Then
DK = True: Exit For
End If
Next i
If DK = True Then
Sheets(NameSh).Range(CelLink).Copy
Sheets(NameSh).Range(CelLink + 1).PasteSpecial Paste:=xlPasteFormats
For i = 1 To Nmax
 

File đính kèm

  • Untitled.png
    Untitled.png
    46.2 KB · Đọc: 5
Upvote 0
Bạn thử xài .Offset(1) hay .Offset(,1)
Có thể 1 trong 2 cách này sẽ đúng í bạn.
 
Upvote 0
Thưa thầy!
Cho em hỏi : Vùng bôi mầu xanh của em đang tìm được là J8 giờ em muốn cộng 1 thành J9 (bôi đỏ) thì phải làm như nào, mong thầy giúp đỡ em. Em xin chân thành cảm ơn!
Bạn sửa lại vầy xem sao.
Mã:
Sheets(NameSh).Range(CelLink).Offset(1).PasteSpecial Paste:=xlPasteFormats
 
Upvote 0
Mình viết trên máy chạy ok nhưng khi gởi cho người khác dùng thì bị báo như vầy, có 2 file giống nhau nhưng chỉ có 1 file bị, các câu như chr , mid là báo, bỏ đi thì chạy bình thường, trong khi 1 file khác cũng dùng lệnh đó thì không thấy báo gì. thanks !
 

File đính kèm

  • Lỗi.png
    Lỗi.png
    249.2 KB · Đọc: 6
Upvote 0
Mình viết trên máy chạy ok nhưng khi gởi cho người khác dùng thì bị báo như vầy, có 2 file giống nhau nhưng chỉ có 1 file bị, các câu như chr , mid là báo, bỏ đi thì chạy bình thường, trong khi 1 file khác cũng dùng lệnh đó thì không thấy báo gì. thanks !
Viết đích danh thành "Strings.Chr(10)" xem có khỏi không?
 
Upvote 0
Nhờ chỉnh hộ code với ah:
1. Code file tạo addin:
Public Sub Xuat()
Dim i As Long
For i = 2 To 16
With ActiveWorkbook
Sheet2.Cells(i, 1).Formula = "='Sheet1'!B" & i
Sheet3.Cells(i, 1).Formula = "='Sheet1'!a" & i
End With
Next
End Sub
=======> code này mình tạo thành addin.xla (chỉ giữ lại sheet1).
2. Sau đó mình imort vào excel: Từ file excel thứ 2 mình dùng code sau gọi sub thì báo lỗi (chắc sai địa chỉ kiểu active mà mình ko biết xử lý sao):
Sub Button1_Click()
Application.Run ("'addin.xla'!xuat")
End Sub

Nhờ hướng dẫn (sửa code với ah). Thanks mọi người.
 
Upvote 0
Nhờ chỉnh hộ code với ah:
1. Code file tạo addin:
Public Sub Xuat()
Dim i As Long
For i = 2 To 16
With ActiveWorkbook
Sheet2.Cells(i, 1).Formula = "='Sheet1'!B" & i
Sheet3.Cells(i, 1).Formula = "='Sheet1'!a" & i
End With
Next
End Sub
=======> code này mình tạo thành addin.xla (chỉ giữ lại sheet1).
2. Sau đó mình imort vào excel: Từ file excel thứ 2 mình dùng code sau gọi sub thì báo lỗi (chắc sai địa chỉ kiểu active mà mình ko biết xử lý sao):
Sub Button1_Click()
Application.Run ("'addin.xla'!xuat")
End Sub

Nhờ hướng dẫn (sửa code với ah). Thanks mọi người.
Bạn thử sửa thế này nhé!
Mã:
Public Sub Xuat()
Dim i As Long
For i = 2 To 16
With ActiveWorkbook
    .Sheets(1).Cells(i, 1).Formula = "='Sheet1'!B" & i
End With
Next
End Sub
và code để gọi nó như sau:
Mã:
Sub GPE()
Application.Run ("'addin.xla'!xuat")
End Sub
 
Upvote 0
Anh chị giúp em với.
Trong file của em có 2 code, 1 code để em click vào icon sẽ tự động insert dòng và copy công thức của dòng trên xuống, nhưng file em chia sẻ cho người khác nhập nên khóa công thức bằng protect của excel, nên em cho thêm 1 code để vba vẫn chạy được khi sheet bị bảo vệ, 2 code này em lấy trên web của mình, nhưng khi tắt file đi và mở lại thì em phải unprotect, run lại code rồi protect lại mới được cho người khác dùng được, việc này rất bất tiện, mọi người có thể chỉnh giúp em code 2 để nó tự chạy khi mở file mà em không cần phải làm mấy thao tác trên được không ạ, với em muốn chỉnh để cho code này chạy trên toàn bộ workbook mà không phải cài vào từng sheet thì có được không? :(:(:(:(:(:(:(

Private Sub Workbook_Open()
With Sheet2
.EnableOutlining = True
.Protect Password:="123", Contents:=True, UserInterfaceOnly:=True
End With
End Sub


Em cảm ơn mọi người nhiều lắm.
 

File đính kèm

Upvote 0
Thưa thầy! em làm 1 code copy như này bị sai ở đâu, và có phải khai báo thêm biến gì nữa không. Và cách viết khác như thủ tục em làm không ạ:
Sub MaBB_KL()
Sheets("KLL-K95").Select
Range("J9").Copy

Sheets("KL-L1").Select
Range("J8").PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False
End Sub
 
Upvote 0
Thưa thầy! em làm 1 code copy như này bị sai ở đâu, và có phải khai báo thêm biến gì nữa không. Và cách viết khác như thủ tục em làm không ạ:
Sub MaBB_KL()
Sheets("KLL-K95").Select
Range("J9").Copy

Sheets("KL-L1").Select
Range("J8").PasteSpecial Paste:=xlPasteValues

Application.CutCopyMode = False
End Sub
http://www.giaiphapexcel.com/diendan/threads/vấn-đề-copy-trong-vba.29457/
Xem ở đây bạn
 
Upvote 0
Thưa thầy: Code của em dùng vòng For đang cho chạy từ 1~5 tách thành 5 sheet: giờ em muốn khi bấm vào code nó sẽ hỏi là muốn copy thành bao nhiêu sheets thì làm như nào ạ:
Sub Macro1()
Dim ShName As String
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Activate
For i = 1 To 5
ShName = ("KL.D") & i
ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = ShName
Next i
End Sub
 
Upvote 0
Thưa thầy: Code của em dùng vòng For đang cho chạy từ 1~5 tách thành 5 sheet: giờ em muốn khi bấm vào code nó sẽ hỏi là muốn copy thành bao nhiêu sheets thì làm như nào ạ:
Sub Macro1()
Dim ShName As String
Dim i As Long
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Activate
For i = 1 To 5
ShName = ("KL.D") & i
ws.Copy After:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)
ActiveSheet.Name = ShName
Next i
End Sub
Em xen ngang 1 tí nha
1. Nếu muốn xuất từ số ... đến số ... bạn làm 1 Form như kiểu máy in ấy .... Xong gắn vào vòng lặp
2. Nếu Sheet có công thức thì Code trên sẽ có vấn đè không lấy được số "chêt"
 
Upvote 0
Em xen ngang 1 tí nha
1. Nếu muốn xuất từ số ... đến số ... bạn làm 1 Form như kiểu máy in ấy .... Xong gắn vào vòng lặp
2. Nếu Sheet có công thức thì Code trên sẽ có vấn đè không lấy được số "chêt"
Em chỉ muốn copy số lượng sheet thôi ạ! Code sẽ phải sửa như nào ạ
 
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom