Thay đổi vùng dữ liệu để edit cho tất cả các Sheet ? (2 người xem)

Liên hệ QC

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

Chuotdong

Thành viên thường trực
Tham gia
28/11/06
Bài viết
255
Được thích
60
Tôi cần giải quyết 1 bài toán quản lý như sau: có 1 file Excel có rất nhiều Sheet và các Sheet đều được qui định vùng có thể nhập dữ liệu (trong ví dụ là $2:$3). Tôi muốn từ giá trị 1 ô của Sheet INPUT thay đổi vùng nhập dữ liệu cho tất cả các sheet mà không phải làm thủ công, có các nào không các bạn. Tôi đã đặt thử =indirect(INPUT!$B$2) nhưng không được
 

File đính kèm

Bạn thử file sau nhé!
Cách sử dụng:
Nhập 1 dòng hoặc nhiều dòng (phân biệt bởi dấu 2 chấm) tại ô B2 của sheet INPUT là macro sẽ tự chạy....
 

File đính kèm

Cám ơn bạn, tôi sẽ kiểm tra lại
 
Lần chỉnh sửa cuối:
Chuotdong đã viết:
Cám ơn bạn, tôi đã chạy thử thì thấy như sau:
1. Vùng mở dữ liệu của bạn bị cố định quá, tôi muốn khi cần thì mở từ dòng 2 đến 3; sau đó lúc khác lại mở từ dòng 5 đến dòng 10(dĩ nhiên lúc này các dòng khác bị khóa)v....v...nên hiểu số liệu đầu vào phải là 2 tham số chứ ko phải 1 tham số như bạn làm
Các dòng khác bị khoá??? Nó có bao gồm cả dòng 2 đến 3 như ví dụ trên không hay chỉ là từ dòng 5 đến dòng 10 thôi?
 
nvson đã viết:
Các dòng khác bị khoá??? Nó có bao gồm cả dòng 2 đến 3 như ví dụ trên không hay chỉ là từ dòng 5 đến dòng 10 thôi?
Xin lỗi bạn làm đúng rồi, chỉ có điều tôi chưa có mạng LAN để Share thử, vì tôi dùng Allow User to Edit Ranges .. còn bạn chỉ thay đổi thuộc tính ô, ko biết có ý nghĩa, tác dụng có khác không.
 
Lần chỉnh sửa cuối:
bạn bổ sung giúp như thế này có được không: copy một vùng dữ liệu đã được định nghĩa trước (ví dụ có tên là Form) vào các dòng đã được mở ở tất cả các sheet, bắt đầu từ dòng đầu tiên ô đầu tiên, nếu ô đó chưa có dữ liệu nào Thanks in advanced.
 
Chuotdong đã viết:
bạn bổ sung giúp như thế này có được không: copy một vùng dữ liệu đã được định nghĩa trước (ví dụ có tên là Form) vào các dòng đã được mở ở tất cả các sheet, bắt đầu từ dòng đầu tiên ô đầu tiên, nếu ô đó chưa có dữ liệu nào Thanks in advanced.
Cũng ở file mình đã upload ở trên (Book__1.xls) bạn đặt tên một vùng chứa dữ liệu cần Copy là Form (Insert/ Name.... -->theo y/c của bạn)
Vào VBA thêm đoạn CODE sau vào Module1:
Mã:
'
Public Sub Copy_Range()
On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'
Dim sht As Worksheet
Dim Cell_Des As Long
Dim SourceRange As Range
Dim DestRange As Range
'
Set SourceRange = Range("Form")
Cell_Des = CLng(Val(Sheets("INPUT").Cells(2, 2)))
'
For Each sht In Worksheets
    If sht.Name <> "INPUT" And IsEmpty(sht.Cells(Cell_Des, "A")) Then
        Set DestRange = sht.Cells(1, "A")
        With SourceRange
            Set DestRange = sht.Cells(Cell_Des, "A").Resize(.Rows.Count, .Columns.Count)
        End With
        DestRange.Value = SourceRange.Value
    End If
Next sht
'
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
Khi cần Copy thì chạy Macro Copy_Range
 
Cam on ban, nhưng minh muon khi copy lay day du ca khuôn dạng (border, font chữ .....) của Name có tên là FORM đó, thi như thế nào ?
 
Vậy bạn sửa lại Macro Copy_Rang như sau:
Mã:
'
Public Sub Copy_Range()
On Error Resume Next
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
'
Dim Luachon
Dim sht As Worksheet
Dim Cell_Des As Long
Dim SourceRange As Range
Dim DestRange As Range
'
Set SourceRange = Range("Form")
Cell_Des = CLng(Val(Sheets("INPUT").Cells(2, 2)))
'
Luachon = MsgBox("Ban muon copy GIA TRI (nhan Yes) hay copy ca DINH DANG (nhan No)?", vbYesNo)
For Each sht In Worksheets
    If sht.Name <> "INPUT" And IsEmpty(sht.Cells(Cell_Des, "A")) Then
        Set DestRange = sht.Cells(Cell_Des, "A")
        If Luachon = 7 Then
            SourceRange.Copy DestRange
        Else
            With SourceRange
                Set DestRange = sht.Cells(Cell_Des, "A").Resize(.Rows.Count, .Columns.Count)
            End With
        DestRange.Value = SourceRange.Value
        End If
    End If
Next sht
'
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub
 
nvson đã viết:
Bạn thử file sau nhé!
Cách sử dụng:
Nhập 1 dòng hoặc nhiều dòng (phân biệt bởi dấu 2 chấm) tại ô B2 của sheet INPUT là macro sẽ tự chạy....

Tôi muốn thay đổi động các Range trong Allow... thì sửa đoạn mã bạn viết như thế nào, mật khẩu tạm là 1 hằng số nào đó:



Cái miền cũ bạn thay đổi chỉ là Unlock/Lock
 

File đính kèm

  • Range.JPG
    Range.JPG
    25.2 KB · Đọc: 24
Web KT

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

Back
Top Bottom