Hướng dẫn cách tạo nút bấm tự động copy tất cả các ô có chứa dự liệu trong bảng tính

xuandongql

Thành viên mới
Tham gia ngày
18 Tháng mười một 2013
Bài viết
20
Được thích
0
Điểm
0
Tuổi
42
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.
 

Ba Tê

Gội Rồi Mới Cạo
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,708
Được thích
16,709
Điểm
1,860
Tuổi
61
Nơi ở
An Giang
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ì.
Copy xong để nó trong bộ nhớ rồi tắt máy?
 

xuandongql

Thành viên mới
Tham gia ngày
18 Tháng mười một 2013
Bài viết
20
Được thích
0
Điểm
0
Tuổi
42
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é.
 
Lần chỉnh sửa cuối:

chuot0106

Thành viên gắn bó
Tham gia ngày
20 Tháng một 2013
Bài viết
2,571
Được thích
1,670
Điểm
560
Tuổi
35
Nơi ở
Hạ Long - Tỉnh Quảng Ninh
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é.
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ả!
 

xuandongql

Thành viên mới
Tham gia ngày
18 Tháng mười một 2013
Bài viết
20
Được thích
0
Điểm
0
Tuổi
42
Mõi người xem ở file đính kèm nhé :
Khi nháy chuột vào nút Copy dữ liệu thì nó tự chọn vùng dữ liệu như bôi đỏ trong file đính kèm , nếu cố định dòng chọn thì mình làm được , còn bây giờ mình đánh thêm thông tin cho 4 em hoặc nhiều hơn nữa thì nó chọn vùng chọn thêm 4 em hoặc nhiều hơn nữa để copy (Không copy các ô không có dự liệu phía dưới), có nghĩa nếu cột TT mà có dữ liệu thì nó sẽ copy.
 

File đính kèm

diemhuyenanh

Thành viên hoạt động
Tham gia ngày
6 Tháng chín 2009
Bài viết
158
Được thích
56
Điểm
380
Tuổi
47
Copy xong cho vào đâu hả người, đút túi hay là cho vào sheet nào. file của bạn bị lỗi không mở được vba
 

xuandongql

Thành viên mới
Tham gia ngày
18 Tháng mười một 2013
Bài viết
20
Được thích
0
Điểm
0
Tuổi
42
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é.
 

File đính kèm

Lần chỉnh sửa cuối:

Ba Tê

Gội Rồi Mới Cạo
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,708
Được thích
16,709
Điểm
1,860
Tuổi
61
Nơi ở
An Giang
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é.
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.
chỉ cần copy thôi bạn ơi
[GPECODE=vb]Public Sub Copyyy()
Range([A5], [A65536].End(xlUp)).Resize(, 45).Copy
End Sub
[/GPECODE]
 

quanghai1969

Thành viên gạo cội
Tham gia ngày
21 Tháng hai 2009
Bài viết
5,754
Được thích
7,341
Điểm
860
Nơi ở
Thuận An, Bình Dương
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é.
Mấy đoạn code bên trong bạn hay quá. Lâu rồi mới thấy đoạn code hay.
PHP:
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
Người ấy không biết là mình có thể bẻ khóa VBA trong 5s. ka ka
 
Lần chỉnh sửa cuối:

xuandongql

Thành viên mới
Tham gia ngày
18 Tháng mười một 2013
Bài viết
20
Được thích
0
Điểm
0
Tuổi
42
cảm ơn bạn Ba tê rất nhiễu nhé vì đã hiểu được ý của mình và cho code rất tốt, bạn cho mình code dán dữ liệu vừa copy vào sheel1 và chỉ lấy giá trị của nó ( giống như ta dùng lệnh paste Special và chọn Values), xin cảm ơn các bạn nhiều.
 
Lần chỉnh sửa cuối:

Ba Tê

Gội Rồi Mới Cạo
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,708
Được thích
16,709
Điểm
1,860
Tuổi
61
Nơi ở
An Giang
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é.
Cảm ơn đã quá khen là "kha tốt"
[GPECODE=vb]Public Sub Copyyy()
Range([B5], [B65536].End(xlUp)).Resize(, 45).Copy
End Sub[/GPECODE]
 
Lần chỉnh sửa cuối:

quanghai1969

Thành viên gạo cội
Tham gia ngày
21 Tháng hai 2009
Bài viết
5,754
Được thích
7,341
Điểm
860
Nơi ở
Thuận An, Bình Dương
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]
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.
 

Ba Tê

Gội Rồi Mới Cạo
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,708
Được thích
16,709
Điểm
1,860
Tuổi
61
Nơi ở
An Giang
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.
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?
 
Lần chỉnh sửa cuối:

quanghai1969

Thành viên gạo cội
Tham gia ngày
21 Tháng hai 2009
Bài viết
5,754
Được thích
7,341
Điểm
860
Nơi ở
Thuận An, Bình Dương
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?
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.
 

ptt

Thành viên mới
Tham gia ngày
14 Tháng mười hai 2006
Bài viết
33
Được thích
3
Điểm
0
Em ko bít về code, nhưng có mò đc ra cái code này:
PHP:
Sub Copy()
    Sheets("Sheet1").Select    
    Selection.SpecialCells(xlCellTypeVisible).Select
    Range("B1:AT65536").Select
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste
End Sub
Ko bít có ổn ko ạ? --=0
 

Ba Tê

Gội Rồi Mới Cạo
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,708
Được thích
16,709
Điểm
1,860
Tuổi
61
Nơi ở
An Giang
Em ko bít về code, nhưng có mò đc ra cái code này:
PHP:
Sub Copy()
    Sheets("Sheet1").Select    
    Selection.SpecialCells(xlCellTypeVisible).Select
    Range("B1:AT65536").Select
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste
End Sub
Ko bít có ổn ko ạ? --=0
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.
 

quanghai1969

Thành viên gạo cội
Tham gia ngày
21 Tháng hai 2009
Bài viết
5,754
Được thích
7,341
Điểm
860
Nơi ở
Thuận An, Bình Dương
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.
Đừ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.
 

xuandongql

Thành viên mới
Tham gia ngày
18 Tháng mười một 2013
Bài viết
20
Được thích
0
Điểm
0
Tuổi
42
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é.
 

quanghai1969

Thành viên gạo cội
Tham gia ngày
21 Tháng hai 2009
Bài viết
5,754
Được thích
7,341
Điểm
860
Nơi ở
Thuận An, Bình Dương
..... 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é.
Trong topic này mình chưa đưa ra 1 đoạn nào à nghen. Vu oan hả?
Muốn copy và dán giá trị thì có thể nghiên cứu theo hướng này rồi sửa lại cho đúng yêu cầu thật của bạn.
PHP:
With Sheet1
  .Range("A5",.[B65536].End(3).Offset(,44)).Copy
  Sheet2.[A5].PasteSpecial 3
End With
 

Kiều Mạnh

Thành viên gạo cội
Tham gia ngày
9 Tháng sáu 2012
Bài viết
4,210
Được thích
2,925
Điểm
560
Nơi ở
IIIIIIIIIIIIIIIII
Mấy đoạn code bên trong bạn hay quá. Lâu rồi mới thấy đoạn code hay.
PHP:
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
Người ấy không biết là mình có thể bẻ khóa VBA trong 5s. ka ka
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 Anh
 
Lần chỉnh sửa cuối:
Top Bottom