xuandongql
Thành viên mới

- Tham gia
- 18/11/13
- Bài viết
- 20
- Được thích
- 0
Mõi người hướng dẫn mình cách tạo một nút bấm mà khi nhấn chuột vào đó thì nó sẽ copy tất cả các ô chứa dữ liệu trong bảng tính , mình xin chân thành cảm ơn.
Đọc xong chẳng hiểu làm gì.Mõi người hướng dẫn mình cách tạo một nút bấm mà khi nhấn chuột vào đó thì nó sẽ copy tất cả các ô chứa dữ liệu trong bảng tính , mình xin chân thành cảm ơn.
Bạn đưa File giả lập nên đi. Tôi sẽ giúp! Mà copy từ đâu và để vào đâu vậy? Bạn miêu tả rõ ràng ra nếu muốn nhanh có kết quả!cảm ơn bạn đã quan tâm , giờ thì mình miêu tả yêu cầu một cách chi tiết cho mõi người dễ hiểu nhé:
ở trong excel muốn copy dữ liệu thì ta cần thực hiện 2 bước:
b1: chọn vùng dự liễu cần copy
b2: thực hiện lệnh copy băng cách (c1:nhấn tổ hợp phím ctrl+c,c2: nháy chuột vào nút copy trên thanh công cụ,c3,c4....)
bây giờ mình muốn tạo một nút bấm mà nó có chức năng làm 2 nhiệm vụ trên, nếu dùng record macro thì mình làm được nhưng áp dụng cho nhiều file thì không được vì mỗi file có số hàng khác nhau, mình muốn nút bấm này phải biết tìm được vùng dữ liệu cần copy một cách tự động cho dù file đưa vào có số hàng khác nhau (ví dụ mình tạo một bảng dữ liệu bảng điểm học sinh gồm 100 hàng và 3 cột mình nhập đầy đủ thông tin cho 50em bao gồm TT,Họ tên , Điểm thi thì khi ấn vào nút náy nó sẽ copy cho mình vùng lựa chọn 50 em đó vì mình có rất nhiều file dự liệu có số TT hơn 1000 em nên việc rê chuột chọn dữ liệu cần copy là hơi lâu mà nhấn ctrl+a thì không phải yêu cầu của mình), mình mong mõi người quan tâm và giúp đỡ giúp mình với nhé.
Chuyện nhỏ còn hơn con thỏ, nhưng với ý muốn "kỳ khôi" của bạn thì mọi người không khỏi "sốc" nên hỏi tới hỏi lui vậy thôi.chỉ cần copy thôi bạn ơi , còn để vào đâu thì mình sẽ bỏ , bạn có thể giúp mình tạo một nút bấm để khi nháy vào nút bấm đó thì nó dán dữ liệu vào sheet2 chẳng hạn, file mẫu có tên là book 1 trong file đính kèm các bạn nhé, có phải yêu cầu cần giúp đỡ của mình quá khó làm mõi người mất nhiều công sức , cảm ơn mõi người nhiêu nhé.
[GPECODE=vb]Public Sub Copyyy()chỉ cần copy thôi bạn ơi
chỉ cần copy thôi bạn ơi , còn để vào đâu thì mình sẽ bỏ , bạn có thể giúp mình tạo một nút bấm để khi nháy vào nút bấm đó thì nó dán dữ liệu vào sheet2 chẳng hạn, file mẫu có tên là book 1 trong file đính kèm các bạn nhé, có phải yêu cầu cần giúp đỡ của mình quá khó làm mõi người mất nhiều công sức , cảm ơn mõi người nhiêu nhé.
Function NamNhuan(ByVal Nam As Integer) As Integer
If Nam Mod 400 = 0 Then
NamNhuan = 1
Else
If Nam Mod 100 = 0 Then
NamNhuan = 0
Else
If Nam Mod 4 = 0 Then
NamNhuan = 1
End If
End If
End If
End Function
Function ProperUni(uni As String) As String
Dim vt As Long
If Trim(uni) = "" Then
ProperUni = uni
Else
uni = LCase(uni)
Mid(uni, 1, 1) = UCase(Mid(uni, 1, 1))
Do
vt = InStr(vt + 1, uni, " ")
If vt = 0 Then Exit Do
Mid(uni, vt + 1, 1) = UCase(Mid(uni, vt + 1, 1))
Loop
ProperUni = uni
End If
End Function
cảm ơn bạn đã hiểu được ý của mình , code của bạn kha tốt , vì file dữ liệu của mình cần copy bắt đầu từ ô b5 , và có thêm một cột ghi chú nữa, còn cột a đầu tiên để trống không copy , mình đã chỉnh trong code của bạn a5 thành b5, resize( , 45)thành Resize(, 46)mà không được bạn giúp mình nhé.
Chuyện nhỏ còn hơn con thỏ, nhưng với ý muốn "kỳ khôi" của bạn thì mọi người không khỏi "sốc" nên hỏi tới hỏi lui vậy thôi.
Tặng bạn cái Sub này vì không làm trên file bạn được.
[GPECODE=vb]Public Sub Copyyy()
Range([A5], [A65536].End(xlUp)).Resize(, 45).Copy
End Sub
[/GPECODE]
Học "quái chiêu" của Quang Hải đó thôi.Vậy mà anh cũng code ra được hay thiệt. Em nhìn thấy code anh không được nhưng không méc đâu. Anh biết sao không, cột A chứa công thức dài tè lè khúc dưới nên không end (xlup) được. Nhưng em giận rồi không nói anh nghe đâu.
Tại em nhìn cái comment là em biết file thật sẽ có công thức tự động tạo STT. Cộng thêm suy luận từ bài viết số 1 nên gieo quẻ thui.Học "quái chiêu" của Quang Hải đó thôi.
Uả! mà file nào có công thức tè lè ta?
Sub Copy()
Sheets("Sheet1").Select
Selection.SpecialCells(xlCellTypeVisible).Select
Range("B1:AT65536").Select
Selection.Copy
Sheets("Sheet2").Select
ActiveSheet.Paste
End Sub
Người ta chỉ cần Copy những dòng có dữ liệu chứ không phải từ dòng 1 đến tuốt xuống 65536 đâu.Em ko bít về code, nhưng có mò đc ra cái code này:
Ko bít có ổn ko ạ?PHP:Sub Copy() Sheets("Sheet1").Select Selection.SpecialCells(xlCellTypeVisible).Select Range("B1:AT65536").Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste End Sub
![]()
Đừng làm em nó sợ mà. 2 năm trước em cũng bắt đầu y chang vậy đó. Sai thì chết em nào xài, chứ người viết có chết đâu mà sợ chứ. Bởi vậy em phang ào ào. Trúng thì trúng, trật thì xí hụt.Người ta chỉ cần Copy những dòng có dữ liệu chứ không phải từ dòng 1 đến tuốt xuống 65536 đâu.
Trong topic này mình chưa đưa ra 1 đoạn nào à nghen. Vu oan hả?..... thứ 2 là code của anh quảng hải paste dữ liệu vào sheet2 nó paste tất cả định dạng của bảng tính luôn gồm cả màu , kích cỡ,......, còn mình thì chỉ muốn khi paste sang sheet2 nó chỉ paste dữ liệu của bảng tính thôi không paste cả định dạng của nó,các anh nghiên cứu giúp em nhé.
With Sheet1
.Range("A5",.[B65536].End(3).Offset(,44)).Copy
Sheet2.[A5].PasteSpecial 3
End With
Em thử mở file đó Xem ngoài mấy code hay còn thấy trong đó một rừng code nữa mới ghê chứ ...coi chóng cả mặt AnhMấy đoạn code bên trong bạn hay quá. Lâu rồi mới thấy đoạn code hay.
Người ấy không biết là mình có thể bẻ khóa VBA trong 5s. ka kaPHP:Function NamNhuan(ByVal Nam As Integer) As Integer If Nam Mod 400 = 0 Then NamNhuan = 1 Else If Nam Mod 100 = 0 Then NamNhuan = 0 Else If Nam Mod 4 = 0 Then NamNhuan = 1 End If End If End If End Function Function ProperUni(uni As String) As String Dim vt As Long If Trim(uni) = "" Then ProperUni = uni Else uni = LCase(uni) Mid(uni, 1, 1) = UCase(Mid(uni, 1, 1)) Do vt = InStr(vt + 1, uni, " ") If vt = 0 Then Exit Do Mid(uni, vt + 1, 1) = UCase(Mid(uni, vt + 1, 1)) Loop ProperUni = uni End If End Function
"dzô dziên" à nghe!cảm ơn anh ba tê và quang hải nhiều , code trên nó copy và paste dữ liệu bắt đầu từ ô a1, em muốn nó paste bắt đầu tờ ô b5 ở sheet2, thứ 2 là code của anh quảng hải paste dữ liệu vào sheet2 nó paste tất cả định dạng của bảng tính luôn gồm cả màu , kích cỡ,......, còn mình thì chỉ muốn khi paste sang sheet2 nó chỉ paste dữ liệu của bảng tính thôi không paste cả định dạng của nó,các anh nghiên cứu giúp em nhé.
lam the nao để sửa cho nó copyy sheet khác vậy bạnChuyện nhỏ còn hơn con thỏ, nhưng với ý muốn "kỳ khôi" của bạn thì mọi người không khỏi "sốc" nên hỏi tới hỏi lui vậy thôi.
Tặng bạn cái Sub này vì không làm trên file bạn được.
[GPECODE=vb]Public Sub Copyyy()
Range([A5], [A65536].End(xlUp)).Resize(, 45).Copy
End Sub
[/GPECODE]
Sửa lại vầy coilam the nao để sửa cho nó copyy sheet khác vậy bạn
Public Sub Copyyy()
Range([A5], [A65536].End(xlUp)).Resize(, 45).Copy
Sheet2.Range("A5").PasteSpecial 3
End Sub
Sao từ bài #1 bạn không hỏi luôn như vầy mà cứ hỏi lòng vòng đến bài #25 mới đi đến chuyện này?xin lỗi bạn quang hải nhé , đêm khuya nhìn nhầm comet , code copy đến sheet khác trong cùng bảng tính thì coi như đã ok rồi, cảm ơn mõi người nhiều nhé,bây giờ nhờ cả nhà giúp mình code copy dữ liệu từ file book1 đính kèm ở #7 sang file mẫu đính kèm ở #5 (2 file đặt trong cùng một thư mục ), ở file book1 copy từ ô b5 ,dán vào file mầu bắt đầu từ ô b5 , dán theo kiểu chỉ lấy giá trị không lấy các định dạng và công thức, mong cả nhà giúp mình nhé.
Từ bài #1 đến bài #5 là mọi người đều biết là sau khi Copy thì sẽ làm tiếp cái Paste vào 1 chỗ nào đó, hỏi bạn mà gặp câu này thì bó tay:thành thật xin lỗi anh , hôm trước em nghỉ được mõi ngươì giúp đỡ đến thế là tốt rồi , song kết quả ngoài mong đợi đối với em , cảm ơn một lần nữa sự giúp đỡ của mõi người đặc biệt là 2 anh ba tê va quang hải , trong khi làm em lại phát sinh ra ý tưởng mới nên mạnh giản hỏi các anh nhờ các anh giúp đỡ , nếu được thì vui quá còn không được thì cùng đành chịu vậy , mong anh ba tê hiểu cho em nhé.
Từ đầu bạn đưa 2 file lên và nêu yêu cầu cần giúp thì chỉ 1 bài trả lời là xong rồi, đấu đến giờ này.chỉ cần copy thôi bạn ơi , còn để vào đâu thì mình sẽ bỏ...
Bị ế độ quá nên sửa code của anh Ba Tê lại miếng coiTừ bài #1 đến bài #5 là mọi người đều biết là sau khi Copy thì sẽ làm tiếp cái Paste vào 1 chỗ nào đó, hỏi bạn mà gặp câu này thì bó tay:
Từ đầu bạn đưa 2 file lên và nêu yêu cầu cần giúp thì chỉ 1 bài trả lời là xong rồi, đấu đến giờ này.
Tôi làm cái nút trong FileMau2.xls
Bấm nút sẽ mở FileMau1.xls lên và copy dữ liệu trừ FileMau2.xls sang FileMau1.xls
Chú ý là cả 2 file phải cùng trong 1 thư mục
Public Sub GPE_()
Dim myPath As String, MyBook As String
Dim Sarr(), DK As Boolean, Wbk As Workbook
Sarr = Range([B5], [B5].End(xlDown)).Resize(, 45).Value
MyBook = "FileMau1.xls"
myPath = ThisWorkbook.Path & "\"
For Each Wbk In Workbooks
If Wbk.Name = MyBook Then DK = True
Next Wbk
If DK = False Then Workbooks.Open myPath & MyBook
With Workbooks(MyBook)
.Sheets("MauNhapLieu").[B5].Resize(UBound(Sarr), 45) = Sarr
.Close True
End With
End Sub
Ăn cỗ đi trước, lội nước theo sau.Bị ế độ quá nên sửa code của anh Ba Tê lại miếng coi
PHP:Public Sub GPE_() Dim myPath As String, MyBook As String Dim Sarr(), DK As Boolean, Wbk As Workbook Sarr = Range([B5], [B5].End(xlDown)).Resize(, 45).Value MyBook = "FileMau1.xls" myPath = ThisWorkbook.Path & "\" For Each Wbk In Workbooks If Wbk.Name = MyBook Then DK = True Next Wbk If DK = False Then Workbooks.Open myPath & MyBook With Workbooks(MyBook) .Sheets("MauNhapLieu").[B5].Resize(UBound(Sarr), 45) = Sarr .Close True End With End Sub
......................................................................................Public Sub Copyyy()
Range([A5], [A65536].End(xlUp)).Resize(, 45).Copy
End Sub
giúp em với em muốn chỉ copyy hàng dọc cột a không copy hang ngang sửa cho em với
em cảm ơn
Cái này mới thiệt là luxubu nè, hicccĂn cỗ đi trước, lội nước theo sau.
Mở đường rồi "chà láng" lại thì ẹc ẹc...
Code mà ngắn gọn quá đâu có "hoành tráng"
Thêm màu mè cho thêm phần Lu xu bu.
Sub Copyyy()
Dim ADOobject As Object, StrRequest As String, RS As Object
Dim Provider As String, Source As String, Ext As String
Set ADOobject = CreateObject("ADODB.Connection")
Set RS = CreateObject("ADODB.Recordset")
Provider = "Provider=Microsoft.Jet.OLEDB.4.0;"
Source = "Data Source=" & ThisWorkbook.FullName
Ext = ";Extended Properties=""Excel 8.0;HDR=NO;IMEX=1"";"
ADOobject.ConnectionString = Provider & Source & Ext
ADOobject.Open
StrRequest = "INSERT INTO [MauNhapLieu$B4:AT65536] IN '" _
& ThisWorkbook.Path & "\FileMau1.xls ' 'Excel 8.0;'" _
& "SELECT * FROM [Sheet1$B5:AT65536]"
RS.Open StrRequest, ADOobject, 3, 1
Set RS = Nothing
ADOobject.Close: Set ADOobject = Nothing
End Sub
......................................................................................
[GPECODE=vb]Public Sub Copyyy()
Range([A5], [A65536].End(xlUp)).Copy
End Sub
[/GPECODE]
ý nghĩ dòng code là s z anh/ chị.. cho e hỏi 1 câu hơi ngu xíuChuyện nhỏ còn hơn con thỏ, nhưng với ý muốn "kỳ khôi" của bạn thì mọi người không khỏi "sốc" nên hỏi tới hỏi lui vậy thôi.
Tặng bạn cái Sub này vì không làm trên file bạn được.
[GPECODE=vb]Public Sub Copyyy()
Range([A5], [A65536].End(xlUp)).Resize(, 45).Copy
End Sub
[/GPECODE]