Xin trợ giúp về UserForm (1 người xem)

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

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

rockylk

Thành viên mới
Tham gia
22/2/19
Bài viết
18
Được thích
0
Chào cả nhà, mình đang tập làm VBA, mình có tạo 1 form (file 2019-Test), khi mình tạo nút nhấn OK để tạo new workbook và sẽ copy tất cả các sheet từ file BGmau sang new workbook vừa tạo ra. Mình đang bị kẹt chỗ là new workbook vừa tạo nó chỉ có copy dc Sheet "ChiTiet" còn Sheet "BGgui" nó lại ko qua được. Mong mọi người tham khảo đoạn code của mình và giúp mình gỡ rối nha. Thank all
P/S: New workbook tạo ra lúc nào cũng có thêm sheet1, nên mình mới nhập thêm dòng X.Sheets("sheet1").Delete để xóa Sheet1 đó đi. Có cách nào để khi tạo new workbook mới thì ko dính thêm sheet1 nữa ko ạ.Mình chỉ muốn có 2 sheet là "ChiTiet" và "BGgui" trong new workbook thôi.
 

File đính kèm

Chào cả nhà, mình đang tập làm VBA, mình có tạo 1 form (file 2019-Test), khi mình tạo nút nhấn OK để tạo new workbook và sẽ copy tất cả các sheet từ file BGmau sang new workbook vừa tạo ra. Mình đang bị kẹt chỗ là new workbook vừa tạo nó chỉ có copy dc Sheet "ChiTiet" còn Sheet "BGgui" nó lại ko qua được. Mong mọi người tham khảo đoạn code của mình và giúp mình gỡ rối nha. Thank all
P/S: New workbook tạo ra lúc nào cũng có thêm sheet1, nên mình mới nhập thêm dòng X.Sheets("sheet1").Delete để xóa Sheet1 đó đi. Có cách nào để khi tạo new workbook mới thì ko dính thêm sheet1 nữa ko ạ.Mình chỉ muốn có 2 sheet là "ChiTiet" và "BGgui" trong new workbook thôi.
Mình vừa làm 1 cái Record macro nó ra code như vậy.Bạn dùng thử.
Mã:
Sub Macro1()
    Sheets(Array("ChiTiet", "BGgui")).Select
    Sheets(Array("ChiTiet", "BGgui")).Copy
End Sub
 
Upvote 0
Chào cả nhà, mình đang tập làm VBA, mình có tạo 1 form (file 2019-Test), khi mình tạo nút nhấn OK để tạo new workbook và sẽ copy tất cả các sheet từ file BGmau sang new workbook vừa tạo ra. Mình đang bị kẹt chỗ là new workbook vừa tạo nó chỉ có copy dc Sheet "ChiTiet" còn Sheet "BGgui" nó lại ko qua được. Mong mọi người tham khảo đoạn code của mình và giúp mình gỡ rối nha. Thank all
P/S: New workbook tạo ra lúc nào cũng có thêm sheet1, nên mình mới nhập thêm dòng X.Sheets("sheet1").Delete để xóa Sheet1 đó đi. Có cách nào để khi tạo new workbook mới thì ko dính thêm sheet1 nữa ko ạ.Mình chỉ muốn có 2 sheet là "ChiTiet" và "BGgui" trong new workbook thôi.
Thay đoạn code:

For Each sh In owb.Sheets 'Vòng lap xét toi tung sheet'
sh.Copy before:=ws 'Copy và paste sang workbook ket qua '

owb.Close False 'Ðóng workbook nhung không thuc hien luu'
Next sh
Bằng đoạn code:

Sheets(Array("ChiTiet", "BGgui")).Copy
owb.Close False

....................................

Đọc sơ qua code thì nhận thấy bạn chưa vững phần cơ bản của VBA mà chọc tới userform thì sẽ phải đối mặt với nhiều khó khăn lắm
 
Upvote 0
Mình vừa làm 1 cái Record macro nó ra code như vậy.Bạn dùng thử.
Mã:
Sub Macro1()
    Sheets(Array("ChiTiet", "BGgui")).Select
    Sheets(Array("ChiTiet", "BGgui")).Copy
End Sub
Thank bạn để mình sửa lại thử
Bài đã được tự động gộp:

Thay đoạn code:

For Each sh In owb.Sheets 'Vòng lap xét toi tung sheet'
sh.Copy before:=ws 'Copy và paste sang workbook ket qua '

owb.Close False 'Ðóng workbook nhung không thuc hien luu'
Next sh
Bằng đoạn code:

Sheets(Array("ChiTiet", "BGgui")).Copy
owb.Close False

....................................

Đọc sơ qua code thì nhận thấy bạn chưa vững phần cơ bản của VBA mà chọc tới userform thì sẽ phải đối mặt với nhiều khó khăn lắm
Thank, để em sửa lại thử. Nói thật chứ em mù về VBA, 1 phần do thấy nó hay với bên công ty yêu cầu em làm nên em mới mày mò với nó hơn tuần nay. Đúng là muốn rối loạn tiêu hóa với nó luôn @@. Em đã test lại đoạn code của 2 bác và đều OK cả ^^. Giờ em làm tiếp tới button NEXT và cũng đang rối loạn với nó luôn, yêu cầu của btt NEXT là sau khi tạo workbook mới từ btt OK: nhấn btt NEXT thì sẽ add thêm dữ liệu vào các dòng kế tiếp của workbook mới tạo (vì 1 báo giá sẽ có nhiều dòng). Xin cho em cao kiến ạ
 
Lần chỉnh sửa cuối:
Upvote 0
Thank bạn để mình sửa lại thử
Bài đã được tự động gộp:


Thank, để em sửa lại thử. Nói thật chứ em mù về VBA, 1 phần do thấy nó hay với bên công ty yêu cầu em làm nên em mới mày mò với nó hơn tuần nay. Đúng là muốn rối loạn tiêu hóa với nó luôn @@. Em đã test lại đoạn code của 2 bác và đều OK cả ^^. Giờ em làm tiếp tới button NEXT và cũng đang rối loạn với nó luôn, yêu cầu của btt NEXT là sau khi tạo workbook mới từ btt OK: nhấn btt NEXT thì sẽ add thêm dữ liệu vào các dòng kế tiếp của workbook mới tạo (vì 1 báo giá sẽ có nhiều dòng). Xin cho em cao kiến ạ
Cao kiến , nên luyện lại VBA từ bước cơ bản,
Còn vừa hỏi vừa học thế này không ăn thua (còn công việc thì nhờ hẳn trọn gói - mọi người giúp rồi dùng)
 
Upvote 0
Thank bạn để mình sửa lại thử
Thank, để em sửa lại thử. Nói thật chứ em mù về VBA, 1 phần do thấy nó hay với bên công ty yêu cầu em làm nên em mới mày mò với nó hơn tuần nay. Đúng là muốn rối loạn tiêu hóa với nó luôn @@. Em đã test lại đoạn code của 2 bác và đều OK cả ^^. Giờ em làm tiếp tới button NEXT và cũng đang rối loạn với nó luôn, yêu cầu của btt NEXT là sau khi tạo workbook mới từ btt OK: nhấn btt NEXT thì sẽ add thêm dữ liệu vào các dòng kế tiếp của workbook mới tạo (vì 1 báo giá sẽ có nhiều dòng). Xin cho em cao kiến ạ
Hôm nay thứ hai, thứ tư này (27/02) tôi về Long Khánh có cần giao lưu trợ giúp gì thì cho ý kiến.
 
Upvote 0
Đầu tiên cho em xin lỗi anh batman1. Bài bên topic kia em đăng lên hỏi khoảng 3 4 ngày trước rồi mà ko thấy ai trả lời với có người bảo em nên tạo topic mới để dễ theo dõi nên em mới tạo thêm. Anh thông cảm dùm em nha. Rất cám ơn sự giúp đỡ nhiệt tình của anh. E test thử code rồi mà nó báo lỗi, em gửi lại file anh và mọi người kiểm tra lại dùm em nha. Thank all
Bài đã được tự động gộp:

Hôm nay thứ hai, thứ tư này (27/02) tôi về Long Khánh có cần giao lưu trợ giúp gì thì cho ý kiến.
Ok anh mình có thể liên lạc bằng cách nào đây ạ, add zalo hay facebook được ko anh
 

File đính kèm

Upvote 0
Đầu tiên cho em xin lỗi anh batman1. Bài bên topic kia em đăng lên hỏi khoảng 3 4 ngày trước rồi mà ko thấy ai trả lời với có người bảo em nên tạo topic mới để dễ theo dõi nên em mới tạo thêm. Anh thông cảm dùm em nha. Rất cám ơn sự giúp đỡ nhiệt tình của anh. E test thử code rồi mà nó báo lỗi, em gửi lại file anh và mọi người kiểm tra lại dùm em nha. Thank all
Bài đã được tự động gộp:


Ok anh mình có thể liên lạc bằng cách nào đây ạ, add zalo hay facebook được ko anh
Em chỉ cần nêu tên thì anh về sẽ gọi qua số điện thoại trong File thì liên lạc được.
 
Upvote 0
Trong file BGmau.xlsx có 2 Sheets là "ChiTiet" và "BGgui", mà "BGgui" em có lập 1 bảng Pivottable lấy dữ liệu bên "ChiTiet" qua để em làm báo giá gửi cho khách hàng, vấn đề của em là sau khi tạo workbook mới (workbook mới được tạo bằng cách copy file BGmau.xlsx) rồi thì Sheet "BGgui" không thực hiện được Pivottable nữa, kiểu như nó bị mất đường dẫn lấy dữ liệu từ Sheet "ChiTiet". Mong mọi người có thể giúp em ạ.
Mã:
Private Sub btaddOK_Click()
Const sPath = "D:\Test VBA\"
Dim k As Long
Dim a, b, c As String
Dim owb As Workbook
    a = KH.Value
    b = MDH.Value
    c = TH.Value
    Application.ScreenUpdating = False
    Set owb = Workbooks.Open(sPath & "BGmau.xlsx")
    owb.Sheets(1).Copy
    For k = 2 To owb.Sheets.Count
        owb.Sheets(k).Copy ActiveSheet
    Next k
    owb.Close False
    Application.ScreenUpdating = True
    owb_filename = sPath & a & "." & b & "." & c & ".xlsx"
'    Save New workbook '
    With ActiveWorkbook
       .SaveAs Filename:=owb_filename
       .Close
    End With
End Sub
 

File đính kèm

Upvote 0
Hỏi người khác mà như đánh đố người khác thì nên tự làm. Hoặc chờ đợi, có ai đó rảnh rỗi thích chơi trò đoán ý đồng đội
, không thực hiện được Pivottable nữa
không thực hiện được Pivottable nữa? Chả nói lên điều gì cụ thể. Nếu nói rõ, huỵch toẹt ra được, thì sao không nói? Bắt người khác suy nghĩ, dò, đoán?
Trong file BGmau.xlsx có 2 Sheets là "ChiTiet" và "BGgui", mà "BGgui" em có lập 1 bảng Pivottable lấy dữ liệu bên "ChiTiet" qua để em làm báo giá gửi cho khách hàng
...
kiểu như nó bị mất đường dẫn lấy dữ liệu từ Sheet "ChiTiet"
Trong cả 2 tập tin làm gì có sheet nào là sheet "ChiTiet"?
vấn đề của em là sau khi tạo workbook mới (workbook mới được tạo bằng cách copy file BGmau.xlsx) rồi thì Sheet "BGgui" không thực hiện được Pivottable nữa
Nếu có lỗi thì phải đính kèm cả tập tin mới được tạo bằng cách copy file BGmau.xlsx mà có lỗi chứ ai biết nó đươc tạo ra trong quá trình như thế nào. Nếu chỉ: mở tập tin 2019 - TEST VBA.xlsm -> nhấn "Công việc" -> nhập KH, MDH, TH -> không làm gì thêm -> nhấn OK, nếu thế thì tập tin được tạo là y hệt tập tin BGmau.xlsx, làm sao có lỗi được? Còn nếu là sau đó thêm thắt dữ liệu vào tập tin mới kia mà sau đó nó "không thực hiện được Pivottable nữa" thì phải nói rõ cái "thêm thắt dữ liệu" kia mặt mũi thế nào chứ ai rỗi hơi ngồi đoán?

Không biết ý là gì nhưng với PivotTable mà thêm, xóa dữ liệu thì phải cập nhật Data Source chứ nhỉ? Làm tay mà thêm, xóa dữ liệu thì tiếp theo phải làm gì?

Tôi chỉ góp ý để biết nói rõ, nói trọn ý, nói cả câu để người khác hiểu. Có như thế những người đói bài trên GPE mới giúp được. Còn tôi không đói bài, xin đừng gọi nick của tôi.

À sao có cao thủ GPE về Long Khánh mà lại không hỏi từ A đến Z? Có gặp được không? :D
 
Upvote 0
Hỏi người khác mà như đánh đố người khác thì nên tự làm. Hoặc chờ đợi, có ai đó rảnh rỗi thích chơi trò đoán ý đồng đội

không thực hiện được Pivottable nữa? Chả nói lên điều gì cụ thể. Nếu nói rõ, huỵch toẹt ra được, thì sao không nói? Bắt người khác suy nghĩ, dò, đoán?
Trong cả 2 tập tin làm gì có sheet nào là sheet "ChiTiet"?
Nếu có lỗi thì phải đính kèm cả tập tin mới được tạo bằng cách copy file BGmau.xlsx mà có lỗi chứ ai biết nó đươc tạo ra trong quá trình như thế nào. Nếu chỉ: mở tập tin 2019 - TEST VBA.xlsm -> nhấn "Công việc" -> nhập KH, MDH, TH -> không làm gì thêm -> nhấn OK, nếu thế thì tập tin được tạo là y hệt tập tin BGmau.xlsx, làm sao có lỗi được? Còn nếu là sau đó thêm thắt dữ liệu vào tập tin mới kia mà sau đó nó "không thực hiện được Pivottable nữa" thì phải nói rõ cái "thêm thắt dữ liệu" kia mặt mũi thế nào chứ ai rỗi hơi ngồi đoán?
Không biết ý là gì nhưng với PivotTable mà thêm, xóa dữ liệu thì phải cập nhật Data Source chứ nhỉ? Làm tay mà thêm, xóa dữ liệu thì tiếp theo phải làm gì?
Tôi chỉ góp ý để biết nói rõ, nói trọn ý, nói cả câu để người khác hiểu. Có như thế những người đói bài trên GPE mới giúp được. Còn tôi không đói bài, xin đừng gọi nick của tôi.
À sao có cao thủ GPE về Long Khánh mà lại không hỏi từ A đến Z? Có gặp được không? :D
Chết, em dòm gà hóa cuốc bác ah, em gửi lộn file, bác thông cảm nha.
Không thực hiện được Pivot có nghĩa là ko thực hiện được chức năng lấy dữ liệu từ Sheet "ChiTiet" đó bác, do đường dẫn data source bị sai (vô workbook mới tạo chỉnh lại đường dẫn source bằng tay thì được)
Sau khi nhấn nút OK thì tạo ra workbook mới và đúng là workbook đó được copy từ file BGmau nhưng không hiểu sao lại bị sai data source, chứ nếu bình thường thì em đã không căng não lên rồi.
Em gọi nick bác là vì bác đã giúp em viết đoạn code đó nên em mới tìm tới bác lại đó ạ
Cao thủ nào về Long Khánh đâu bác, chỉ là chỗ chú và cháu gặp nhau giao lưu để em được học hỏi kiến thức và kinh nghiệm thôi.
Em xin được gửi lại file khác ạ. Mong mọi người thông cảm dùm em
 

File đính kèm

Upvote 0
Không hiểu. Bó tay.com

3 bài có "BG mau.xls" (có dấu cách). Bây giờ 2 bài cuối thì lại là "BGmau.xlsx". PivotTable lại đòi "BGmau.xls" (không có dấu cách).

Mà BGmau.xlsx cuối cùng tải về lại không mở được.

Tôi giúp bạn phần nào không quan trọng. Tôi muốn dừng tại đây.
 
Upvote 0
Không hiểu. Bó tay.com

3 bài có "BG mau.xls" (có dấu cách). Bây giờ 2 bài cuối thì lại là "BGmau.xlsx". PivotTable lại đòi "BGmau.xls" (không có dấu cách).

Mà BGmau.xlsx cuối cùng tải về lại không mở được.

Tôi giúp bạn phần nào không quan trọng. Tôi muốn dừng tại đây.
Chuyên đuôi qua xlsx file bị lỗi bác ạ @@
 

File đính kèm

Upvote 0
Thôi tôi cũng không cần hiểu bạn muốn gì. Nhưng nhìn lại code OK thì hiểu là cần tạo bản sao của BGmau.xls. Vậy code mới chỉ là thế này
Mã:
Private Sub btaddOK_Click()  'Tao copy BGmau.xls
Const sPath = "D:\Test VBA\"  'Đuong dan toi thu muc chua BGmau.xls
Dim a, b, c As String
Dim owb As Workbook
    a = KH.Value
    b = MDH.Value
    c = TH.Value
'    mo tap tin can tao copy
    Set owb = Workbooks.Open(sPath & "BGmau.xls")
    owb_filename = sPath & a & "." & b & "." & c & ".xlsx"
'    Save as copy
    With owb
       .SaveAs Filename:=owb_filename, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
       .Close
    End With
End Sub
 
Upvote 0
Thôi tôi cũng không cần hiểu bạn muốn gì. Nhưng nhìn lại code OK thì hiểu là cần tạo bản sao của BGmau.xls. Vậy code mới chỉ là thế này
Mã:
Private Sub btaddOK_Click()  'Tao copy BGmau.xls
Const sPath = "D:\Test VBA\"  'Đuong dan toi thu muc chua BGmau.xls
Dim a, b, c As String
Dim owb As Workbook
    a = KH.Value
    b = MDH.Value
    c = TH.Value
'    mo tap tin can tao copy
    Set owb = Workbooks.Open(sPath & "BGmau.xls")
    owb_filename = sPath & a & "." & b & "." & c & ".xlsx"
'    Save as copy
    With owb
       .SaveAs Filename:=owb_filename, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
       .Close
    End With
End Sub
Em cám ơn bác ạ
 
Upvote 0
Web KT

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

Back
Top Bottom