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