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
Anh chị cho em hỏi, hiện tại code của em khi chạy chỉ áp dụng cho Sheet đang select. Bây giờ em muốn làm sao mỗi lần chạy nó hiện Box để nhập sheet cần tính thì em phải làm thế nào ạ?
PHP:
Option Explicit
Sub LuaChon1Trong2TrangTinh()
 Dim Wh As String, ShName As String

 Wh = InputBox("A- Cong Doan A" & Chr(10) & "B- Cong Doan Hoàn Tát", "GPE.COM Xin Chào!")
 If Wh < "A" And Wh > "B" Then
    MsgBox "Tam Biet!":         Exit Sub
 End If
 ShName = Choose(Asc(UCase(Wh)) - 64, "CD_A", "HT", "GPE.COM")
 MsgBox ShName
End Sub
 
Upvote 0
PHP:
Option Explicit
Sub LuaChon1Trong2TrangTinh()
 Dim Wh As String, ShName As String

 Wh = InputBox("A- Cong Doan A" & Chr(10) & "B- Cong Doan Hoàn Tát", "GPE.COM Xin Chào!")
 If Wh < "A" And Wh > "B" Then
    MsgBox "Tam Biet!":         Exit Sub
 End If
 ShName = Choose(Asc(UCase(Wh)) - 64, "CD_A", "HT", "GPE.COM")
 MsgBox ShName
End Sub

Anh ơi em không hiểu nhiều về VBA đâu nên em không biết làm nào để select cái sheet mà mình nhập trong InputBox cả :(
 
Lần chỉnh sửa cuối:
Upvote 0
Em chào các anh.
Em nhờ các anh viết code copy dữ liệu từ nhiều sheet về 1 sheet
Giải sử file có nhiều sheet, và chưa biết rõ số dòng cụ thể.
Em đã tìm kiếm trên diễn đàn thì có 1 bài viết code về vấn đề này rồi. Code đấy như sau:

Public Sub GPE()
Dim sArr(), dArr(1 To 65000, 1 To 250), I As Long, J As Long, K As Long, Col As Long, Ws As Worksheet
For Each Ws In ThisWorkbook.Worksheets
If Ws.Name <> "GPE" Then
sArr = Ws.Range(Ws.[A2], Ws.[A65000].End(xlUp)).Resize(, Ws.[IV1].End(xlToLeft).Column)
If Ws.[IV1].End(xlToLeft).Column > Col Then Col = Ws.[IV1].End(xlToLeft).Column
For I = 1 To UBound(sArr, 1)
K = K + 1
For J = 1 To UBound(sArr, 2)
dArr(K, J) = sArr(I, J)
Next J
Next I
End If
Next
With Sheets("GPE")
.[A4:IV65000].ClearContents
If K Then .[A4].Resize(K, Col).Value = dArr
End With
End Sub

Em đã chạy thử code này và code tự động chạy khi em chuyển từ sheet này sang sheet khác và cũng chỉ chạy được 65000 dòng thôi
Hiện tại file của em dữ liệu nhiều hơn 65000 dòng và em muốn khi nào mình chạy code thì file mới chạy các anh viết giúp em với.
Em cảm ơn.
 
Upvote 0
Cho em hỏi giữa việc lấy giá trị trong một ô để so sanh với việc viết luôn cái giá trị ấy vào vba thì cái nào nhanh hơn

Ví dụ so sánh ở ô A1 dữ liệu là YES thì thay vì em ghi [A1] em sẽ viết là "YES" thì cái nào nhanh hơn ạ?
 
Upvote 0
Cho em hỏi giữa việc lấy giá trị trong một ô để so sanh với việc viết luôn cái giá trị ấy vào vba thì cái nào nhanh hơn

Ví dụ so sánh ở ô A1 dữ liệu là YES thì thay vì em ghi [A1] em sẽ viết là "YES" thì cái nào nhanh hơn ạ?
Theo mình thì việc tham chiếu dữ liệu ở 1 ô nào đó trong VBA với việc viết cụ thể dữ liệu ở trong code thì tốc độ cũng còn tùy vào cách viết của mỗi người. Ở đây nên hiểu là việc viết cụ thể dữ liệu ở trong code thì rõ ràng là dữ liệu tĩnh và duy nhất để tham chiếu, còn đối với tham chiếu về ô nào đó trong bảng tính theo mình nó mang ý nghĩa rộng hơn.
-------
p/s: mình cũng không biết nhiều về VBA, chỉ nói theo cách mình hiểu thôi. hihi.
 
Upvote 0
Ừm mình cũng nghĩ giữa việc mang cái bánh cho người đang đói với việc chỉ chỗ có cái bánh thì việc mang chắc là nhanh hơn nhưng không "tiện hơn". Chỉ chỗ có bánh cũng giống như sau này có đói thì ra chỗ có bánh về lâu dài tiện hơn chứ không phải vòng vèo tìm người cho bánh.
Tuy nhiên trong nhiều trường hợp việc cầm cái bánh trên tay sẵn ăn thì tốt hơn nhiều nhỉ.
Cảm ơn bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Ừm mình cũng nghĩ giữa việc mang cái bánh cho người đang đói với việc chỉ chỗ có cái bánh thì việc mang chắc là nhanh hơn nhưng không "tiện hơn". Chỉ chỗ có bánh cũng giống như sau này có đói thì ra chỗ có bánh về lâu dài tiện hơn chứ không phải vòng vèo tìm người cho bánh.
Tuy nhiên trong nhiều trường hợp việc cầm cái bánh trên tay sẵn ăn thì tốt hơn nhiều nhỉ.
Cảm ơn bạn.

Vâng, đại loại là vậy. Mọi thứ đều có 2 mặt của nó mà.
 
Upvote 0
Nhờ giúp đỡ

Các bạn giúp mình xóa lệnh tự in trong bảng excel này với nhiều lúc nhắp chuột nó tự lưu, nhưng nhắp sai chỗ nó tự in ra trong khi mình không cần tự in
Cảm ơn các bạn nhiều
 

File đính kèm

  • 3.xls
    3.xls
    203.5 KB · Đọc: 5
Upvote 0
Các bạn giúp mình xóa lệnh tự in trong bảng excel này với nhiều lúc nhắp chuột nó tự lưu, nhưng nhắp sai chỗ nó tự in ra trong khi mình không cần tự in
Cảm ơn các bạn nhiều
ai biểu bạn gán hình cho macro tự chạy mà cho nó no fill và noline chi, để rồi không thấy khi nhấp chuột vào thì nó sẽ thực thi lệnh, bạn muốn rõ ràng thì phải cho cái hình đó nổi lên và cho nằm ở chỗ khác để tiện làm theo ý tại L13:L24 có 1 cái hình
 
Upvote 0
Các bác tiễn ông Công ông Táo ngon lành cả chứ? Chúc các bác ae chuẩn bị tết cổ truyền thật đầy đủ và vui vẻ đoàn viên nhé!
 
Upvote 0
Em đang có một rắc rối không hiểu tai sao:

Anh chị xem file đính kèm giúp em nhé.

Rõ ràng câu lệnh vba đầu nếu cột K L và M có dữ liệu thì cột O và P lấy theo dữ liệu ra vào ở cột K và L. Nhưng em không hiểu vì sao mà kết quả nó không như ý của em.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Em tìm ra nguyên nhân rồi, hóa ra nếu giá trị là 0 thì cũng là Empty. Em cứ tưởng Empty nghĩa là không có bất cứ cái gì.
 
Upvote 0
Chúc cả nhà ăn tết cổ truyền An khang thịnh vượng.
Happy new year! 2017.
 
Upvote 0
Đã sửa y/c 1 và 2 theo ý bạn.
Anh Thắng ơi! Chèn âm thanh vào code khi kết thúc mỗi hiệp đấu sẽ có tiếng kêu báo hiệu được không ạ? Và khi hết thời gian nghỉ giữa 2 hiệp cũng có tiếng kêu báo cho 2 VĐV vào sân để chuẩn bị thi đấu tiếp hiệp tiếp theo được không ạ?
Anh xem giúp em với ạ.!
 
Upvote 0
https://drive.google.com/open?id=0B075UkAw9fa3SEQ0OUNqSThTWVU
NHỜ CÁC ANH XEM GIÚP CODE COPPY

Private Sub COPYTOPTVT_Click()
'
' Macro1 Macro
' Macro recorded 5/11/2017 by PC
'

'
Range("A15:Q44").Select
Range("Q44").Activate
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("PTVT").Select
Rows("5:5").Select
ActiveWindow.SmallScroll Down:=-12
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-18
End Sub
đoạn code trên em dùng macro record lại ko biết tại sao, nhờ các anh sửa giúp code giúp em với, em muốn khi bấm nút coppy (chỉ copy từ dòng 15 đến dòng màu vàng thì dữ liệu coppy vào sheet ptvt và ghi tiếp không ghi đè lên nhau
 
Lần chỉnh sửa cuối:
Upvote 0
https://drive.google.com/open?id=0B075UkAw9fa3SEQ0OUNqSThTWVU
NHỜ CÁC ANH XEM GIÚP CODE COPPY

Private Sub COPYTOPTVT_Click()
'
' Macro1 Macro
' Macro recorded 5/11/2017 by PC
'

'
Range("A15:Q44").Select
Range("Q44").Activate
Selection.Copy
ActiveWindow.ScrollWorkbookTabs Position:=xlLast
Sheets("PTVT").Select
Rows("5:5").Select
ActiveWindow.SmallScroll Down:=-12
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-18
End Sub
đoạn code trên em dùng macro record lại ko biết tại sao, nhờ các anh sửa giúp code giúp em với, em muốn khi bấm nút coppy (chỉ copy từ dòng 15 đến dòng màu vàng thì dữ liệu coppy vào sheet ptvt và ghi tiếp không ghi đè lên nhau
Bạn sửa code lại thế này thử xem.
Mã:
Sub GPE()
    Sheets("CS4C-ML-XF93-T1.2").Range("A15:Q" & Sheets("CS4C-ML-XF93-T1.2").Range("A65000").End(xlUp).Row - 2).Copy
    Sheets("PTVT").Range("a65000").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
End Sub
 
Upvote 0
Bạn sửa code lại thế này thử xem.
Mã:
Sub GPE()
    Sheets("CS4C-ML-XF93-T1.2").Range("A15:Q" & Sheets("CS4C-ML-XF93-T1.2").Range("A65000").End(xlUp).Row - 2).Copy
    Sheets("PTVT").Range("a65000").End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone
    Application.CutCopyMode = False
End Sub
MÌNH SỬA LẠI CODE RỒI KHI CHẠY THỬ THẤY LỖI NÀY ANH XEM GIÚP EM VỚI
 

File đính kèm

  • LOI 1.png
    LOI 1.png
    287.6 KB · Đọc: 9
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