Chuyên mục xử lý, gỡ rối code VBA (3 người xem)

Liên hệ QC

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

Status
Không mở trả lời sau này.

ndu96081631

Huyền thoại GPE
Thành viên BQT
Super Moderator
Tham gia
5/6/08
Bài viết
30,703
Được thích
53,957
Cho hỏi thêm chút nhé bạn quanghai1969. VD tôi muốn cho code lập lại từ 1 đến 5 tại ô A1. Tôi có viết thử như thế này sao code chưa chạy được

Và tôi có thử thêm cái này thay đoạn màu đỏ thành nữa cũng chưa được. Tôi sai chổ nào bạn giải thích dùm. Cảm ơn bạn.

Muốn chọn 1 ô nào đó thì có nhiều cách, tùy trường hợp mà áp dụng

1. Range("A1")= i
2. [A1]=i
3. Cells(1,1)=i
 
Upvote 0
Các bạn giúp mình vấn đề này với:

Mình có tại A9:C9 và L9:N9 có chứa công thức bên trong
Mình muốn copy công thức trên từ A10:C10 đến "A10xx:C10xx" và L10:N10 đến "L10xx:N10xx".
Biết rằng mình chốt dòng cần Paste Special Formular bằng cách tại dòng "A10xx 1 : C10xx 1" bằng chữ "End"
Và chốt tại dòng "L10xx 1:N10xx 1" bằng một công thức khác (ví dụ như sum hay if,....)

Mình có làm thử bằng Macro nhưng khổ nỗi nó ko biết Paste đến đâu là ngưng.
Chân thành cám ơn.
 
Lần chỉnh sửa cuối:
Upvote 0
ai hướng dẫn mình với
 
Lần chỉnh sửa cuối:
Upvote 0
Các bạn giúp mình vấn đề này với:

Mình có tại A9:C9 và L9:N9 có chứa công thức bên trong
Mình muốn copy công thức trên từ A10:C10 đến "A10xx:C10xx" và L10:N10 đến "L10xx:N10xx".
Biết rằng mình chốt dòng cần Paste Special Formular bằng cách tại dòng "A10xx +1 : C10xx +1" bằng chữ "End"
Và chốt tại dòng "L10xx +1:N10xx +1" bằng một công thức khác (ví dụ như sum hay if,....)

Mình có làm thử bằng Macro nhưng khổ nỗi nó ko biết Paste đến đâu là ngưng.
Chân thành cám ơn.
Bạn chẳng đưa cái file lên gì cả, tôi nhắm mắt làm bừa cho bạn luôn!

Giả sử hàng màu vàng chứa công thức chuẩn (từ hàng 9), trong file tôi có một nút lệnh, khi bấm nút này sẽ có một inputbox hiện lên và đề nghị bạn nhập số hàng cần copy công thức (dĩ nhiên số hàng nhập vào phải lớn hơn 9, vì đó là hàng chuẩn). Khi bạn nhập số xong thì nó sẽ copy toàn bộ công thức xuống dưới. Hàng cuối cùng + 1 sẽ là một hàm, với tôi tôi tạm chọn hàm COUNTA, bạn tùy cơ xử lý hàm của mình.

Đây là thủ tục cho nút lệnh:

Mã:
Sub NhapCongThuc()
    Dim ipt
    ipt = InputBox("Must be greater than 9", "Input row number")
    ipt = Fix(Val(ipt))
    If ipt > 9 Then
        Range("A10:C1000, L10:N1000").ClearContents
        
        Range("A9:C9").AutoFill Range("A9:C" & ipt), xlFillValues
        Range("L9:N9").AutoFill Range("L9:N" & ipt), xlFillValues
        
        With Range("A" & ipt + 1)
            .Formula = "=COUNTA(" & Range("A9:A" & ipt).Address(0, 0) & ")"
            .AutoFill Range("A" & ipt + 1 & ":C" & ipt + 1), xlFillValues
        End With
        With Range("L" & ipt + 1)
            .Formula = "=COUNTA(" & Range("L9:L" & ipt).Address(0, 0) & ")"
            .AutoFill Range("L" & ipt + 1 & ":N" & ipt + 1), xlFillValues
        End With
    Else
        MsgBox "It's not done!"
    End If
End Sub
 

File đính kèm

Upvote 0
Bạn chẳng đưa cái file lên gì cả, tôi nhắm mắt làm bừa cho bạn luôn!

Giả sử hàng màu vàng chứa công thức chuẩn (từ hàng 9), trong file tôi có một nút lệnh, khi bấm nút này sẽ có một inputbox hiện lên và đề nghị bạn nhập số hàng cần copy công thức (dĩ nhiên số hàng nhập vào phải lớn hơn 9, vì đó là hàng chuẩn). Khi bạn nhập số xong thì nó sẽ copy toàn bộ công thức xuống dưới. Hàng cuối cùng + 1 sẽ là một hàm, với tôi tôi tạm chọn hàm COUNTA, bạn tùy cơ xử lý hàm của mình.

Đây là thủ tục cho nút lệnh:

Mã:
Sub NhapCongThuc()
    Dim ipt
    ipt = InputBox("Must be greater than 9", "Input row number")
    ipt = Fix(Val(ipt))
    If ipt > 9 Then
        Range("A10:C1000, L10:N1000").ClearContents
        
        Range("A9:C9").AutoFill Range("A9:C" & ipt), xlFillValues
        Range("L9:N9").AutoFill Range("L9:N" & ipt), xlFillValues
        
        With Range("A" & ipt + 1)
            .Formula = "=COUNTA(" & Range("A9:A" & ipt).Address(0, 0) & ")"
            .AutoFill Range("A" & ipt + 1 & ":C" & ipt + 1), xlFillValues
        End With
        With Range("L" & ipt + 1)
            .Formula = "=COUNTA(" & Range("L9:L" & ipt).Address(0, 0) & ")"
            .AutoFill Range("L" & ipt + 1 & ":N" & ipt + 1), xlFillValues
        End With
    Else
        MsgBox "It's not done!"
    End If
End Sub

Trời ơi tui viết bài này chỉ có 1 dòng lệnh duy nhất...
 
Upvote 0
Viết có 1 dòng code thiệt mà. Còn kết quả thì cốc có biết ra sao...
PHP:
Sub abc()
Selection.Resize(InputBox("Nhap so dong can dien cong thuc") + 1).FillDown
End Sub
 
Upvote 0
Mình xin lỗi, để mình bổ sung file.
Trong file mình có 2 sheet là Traicay và Dientu, mình muốn mỗi sheet có 1 code để copy 1 loạt công thức diễn giải như trong file.
Cám ơn các bạn đã nhiệt tình hướng dẫn.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Copy code này bỏ vào sheet2. Nếu đúng ý thì chế biến cho sheet1

*** Hình như cái dạng này nếu dùng Table thì nó sẽ tự động điền công thức cho mình mà
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C3:C100]) Is Nothing Then
   With Target.Offset(-1)
      .Offset(, -2).Resize(2, 2).FillDown
      .Offset(, 5).Resize(2).FillDown
   End With
End If
End Sub
 
Upvote 0
Copy code này bỏ vào sheet2. Nếu đúng ý thì chế biến cho sheet1

*** Hình như cái dạng này nếu dùng Table thì nó sẽ tự động điền công thức cho mình mà
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [C3:C100]) Is Nothing Then
   With Target.Offset(-1)
      .Offset(, -2).Resize(2, 2).FillDown
      .Offset(, 5).Resize(2).FillDown
   End With
End If
End Sub

Làm thì làm cho trót luôn đi đồng chí, dòng cuối cùng +1 thêm cái công thức SUM hay gì gì nữa đó.
 
Upvote 0
Em không được lanh trong lĩnh vực này lắm, em có tự mò mẫm bằng Macro còn hiểu sơ sơ, bác quanghai1969 viết các code này em mù luôn. Đã thế em knock out ngay từ cái khai báo đầu tiên "Private Sub Worksheet_Change(ByVal Target As Range)"
Trước đây em toàn biết sub hay dim gì thôi @@
Em ko thấy chỗ nào assign macro để chạy được hết
 
Lần chỉnh sửa cuối:
Upvote 0
Em không được lanh trong lĩnh vực này lắm, em có tự mò mẫm bằng Macro còn hiểu sơ sơ, bác quanghai1969 viết các code này em mù luôn. Đã thế em knock out ngay từ cái khai báo đầu tiên "Private Sub Worksheet_Change(ByVal Target As Range)"
Trước đây em toàn biết sub hay dim gì thôi @@
Em ko thấy chỗ nào assign macro để chạy được hết
Đây là thủ tục về sự kiện của sheet, đặt macro này vào trong module của sheet đó, mọi thay đổi tại cột C (C3:C100) đều làm cho sự kiện thực thi.
 
Upvote 0
Đây là thủ tục về sự kiện của sheet, đặt macro này vào trong module của sheet đó, mọi thay đổi tại cột C (C3:C100) đều làm cho sự kiện thực thi.
Anh cho em hỏi ở code anh chỉ em lần trước:
Sub NhapCongThuc()
Dim ipt
ipt = InputBox("Must be greater than 9", "Input row number")
ipt = Fix(Val(ipt))
If ipt > 9 Then
Range("A10:C1000, L10:N1000").ClearContents

Range("A9:C9").AutoFill Range("A9:C"
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ mọi người giải thích vì sao đoạn code này không hoạt động ak

Em đang làm một file bán hàng, muốn thêm 1 cái validation động mà khi sử dụng cái đoạn code này thì không hoạt động.
Mong cao nhân chỉ giúp ak, em cảm ơn
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheet4.Range("TenCT")
        .Range("$A$2:$A$" & Range("$A$65000").End(xlUp).Row).Name = "TenCT"
    End With
    With Sheet4.Range("TenHH")
        .Range("$C$2:$C$" & Range("$C$65000").End(xlUp).Row).Name = "TenHH"
    End With
End Sub
Update: Em đã đính kèm file cho các bác dễ hình dung ạ
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn chưa nói rỏ là bạn gởi cái macro thân iêu của bạn vô trang tính nào?
Nhưng dù sao macro của bạn có bậc tự do quá rọng hay sao í, bạn nên ràng buột bớt lại chăng?!
 
Upvote 0
Bạn chưa nói rỏ là bạn gởi cái macro thân iêu của bạn vô trang tính nào?
Nhưng dù sao macro của bạn có bậc tự do quá rọng hay sao í, bạn nên ràng buột bớt lại chăng?!

Em để ở sheet4 để nó tự update vào list mỗi khi mình thêm dữ liệu vào các cột kia ak, sau đó thì có 1 cái validation ở sheet 1 nhưng ở file minh họa em chỉ để ở 1 sheet thôi cũng được ak
em gà vba lắm, mới học được một ít, mong các bác chỉ bảo ak
 
Upvote 0
Em để ở sheet4 để nó tự update vào list mỗi khi mình thêm dữ liệu vào các cột kia ak, sau đó thì có 1 cái validation ở sheet 1 nhưng ở file minh họa em chỉ để ở 1 sheet thôi cũng được ak
em gà vba lắm, mới học được một ít, mong các bác chỉ bảo ak
Bạn thử sửa lại thành:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheets("Sheet4")
        .Range("$A$2:$A$" & Range("$A$65000").End(xlUp).Row).Name = "TenCT"
        .Range("$C$2:$C$" & Range("$C$65000").End(xlUp).Row).Name = "TenHH"
    End With
End Sub
 
Upvote 0
Em đang làm một file bán hàng, muốn thêm 1 cái validation động mà khi sử dụng cái đoạn code này thì không hoạt động.
Mong cao nhân chỉ giúp ak, em cảm ơn
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheet4.Range("TenCT")
        .Range("$A$2:$A$" & Range("$A$65000").End(xlUp).Row).Name = "TenCT"
    End With
    With Sheet4.Range("TenHH")
        .Range("$C$2:$C$" & Range("$C$65000").End(xlUp).Row).Name = "TenHH"
    End With
End Sub
Update: Em đã đính kèm file cho các bác dễ hình dung ạ
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    With Sheet4
        .Range([A2], [A65536].End(3)).Name = "TenCT"
        .Range([C2], [C65536].End(3)).Name = "TenHH"
    End With
End Sub
Up rồi mới thấy bài 159, nhưng bài 159 có thể sai tên sheet vì sheet đã có tên là List
 
Lần chỉnh sửa cuối:
Upvote 0
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom