Làm vầy nè:Mình mới tìm hiểu về VBA nên có câu cần hỏi: thí dụ ô C1=A1+B1 khi sử dụng VBA làm sao để mặc định C1:C100 đều bằng A1+B1,A2+B2,A3+B3...Chân thành cảm ơn.
Sub Tong()
With Range("C1:C100")
.Formula = "=RC[-2]+RC[-1]"
End With
End Sub
Sub Tong()
With Range("C1:C100")
.Formula = "=RC[-2]+RC[-1]"
.Value = .Value
End With
End Sub
Khi viết xong dòng lệnh này thì ô C1 gán bắng tổng hả bạn?mình làm như vậy thì báo lỗi.Thanks.Làm vầy nè:
Kết quả ở cột C sẽ ở dạng công thức ---> Còn muốn ra kết quả luôn thì thêm 1 dòng lệnh nữa:PHP:Sub Tong() With Range("C1:C100") .Formula = "=RC[-2]+RC[-1]" End With End Sub
PHP:Sub Tong() With Range("C1:C100") .Formula = "=RC[-2]+RC[-1]" .Value = .Value End With End Sub
Bạn gán code vào đâu ?Khi viết xong dòng lệnh này thì ô C1 gán bắng tổng hả bạn?mình làm như vậy thì báo lỗi.Thanks.
Đây là thủ tục (Sub), không phải hàm, nên không gõ C1 = Tong được, mà chạy trực tiếp code. Code chạy trực tiếp từ cửa sổ VBA thì để đâu cũng được. Nếu muốn chạy bằng menu - macro - macro - Run thì code phải để trong module.Khi viết xong dòng lệnh này thì ô C1 gán bắng tổng hả bạn?mình làm như vậy thì báo lỗi.Thanks.
Nếu chỉ có chuyện gán cho C1=A1+B1, thì viết hàm làm chi vậy?Cảm ơn các bạn mình đã làm được rồi,các bạn chỉ cho mình cách viết bằng hàm trường hợp này luôn đi.Thanks.
Bạn kim.nguyen ơi đọc trích dẫn ở trên chưa ?, ở đây là bạn 790312 muốn tìm hiểu về VBA , còn vấn đề " cái rẹt " như bạn nói còn tùy nhé !Mình mới tìm hiểu về VBA nên có câu cần hỏi: thí dụ ô C1=A1+B1 khi sử dụng VBA làm sao để mặc định C1:C100 đều bằng A1+B1,A2+B2,A3+B3...Chân thành cảm ơn.
Cái này là ví dụ điển hình để tui biết cách làm VBA và làm sao cho từ C1:C100 hiểu công thức khỏi cần kéo,cách làm như bạn thì tôi cũng đã biết.ThanksNếu chỉ có chuyện gán cho C1=A1+B1, thì viết hàm làm chi vậy?
Ở trên, mấy sư phụ kia ghi code, là để chạy một cái rẹt, khỏi lập công thức cho C1:C100.
Chứ nếu bạn muốn viết hàm, tui nghĩ, gõ =A1+B1 vào trong C1 rồi kéo cái rẹt xuống C100 còn lẹ hơn...
Cái này là ví dụ điển hình để tui biết cách làm VBA và làm sao cho từ C1:C100 hiểu công thức khỏi cần kéo,cách làm như bạn thì ai không biết.Thanks
Function Tong(so1 As Double, so2 As Double)
Tong = so1 + so2
so1 = ActiveCell.Offset(0, -1).Value
so2 = ActiveCell.Offset(0, -2).Value
End Function
Function TinhTong( Rng1 As Range, Rng2 As Range)
TinhTong = Rng1.Value + Rng2.Value
End Function
mình làm theo công thức ở trên thì tại ô =tong(a,b) báo lỗi value,bạn xem lại giùm mình.Thanks.Tôi chỉ biết ABC về VBA nhưng cũng tham gia cho vui, thử viết Function theo ý bạn
PHP:Function Tong(so1 As Double, so2 As Double) Tong = so1 + so2 so1 = ActiveCell.Offset(0, -1).Value so2 = ActiveCell.Offset(0, -2).Value End Function
Chép vào Module nhé, sau đó ở bất kì Cell nào :
VD :
nhập tại F5 = Tong(D5,E5)
Mã:Function TinhTong( Rng1 As Range, Rng2 As Range) TinhTong = Rng1.Value + Rng2.Value End Function
[COLOR=#000000][FONT=Courier New][COLOR=#007700]Function [/COLOR][COLOR=#0000bb]Tong[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]so1 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]so2 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Double[/COLOR][/FONT][FONT=Courier New][COLOR=#007700])[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]Tong [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]so1 [/COLOR][COLOR=#007700]+ [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]so2[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]so1 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]ActiveCell[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700], -[/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]).[/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]Value[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]so2 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]ActiveCell[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700], -[/COLOR][COLOR=#0000bb]2[/COLOR][COLOR=#007700]).[/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]Value[/COLOR][/FONT]
[FONT=Courier New][COLOR=#0000bb]End [/COLOR][COLOR=#007700]Function [/COLOR][/FONT][/COLOR]
Function TinhTong( Rng1 As Range, Rng2 As Range)
TinhTong = Rng1.Value + Rng2.Value
End Function
Đối với
Bạn phải nhập Tong(Cell1,Cell2) thay toán tử "+" bằng ", " phải nhập cell1 và cell2 kế liền nhauMã:[COLOR=#000000][FONT=Courier New][COLOR=#007700]Function [/COLOR][COLOR=#0000bb]Tong[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]so1 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Double[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000bb]so2 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000bb]Double[/COLOR][/FONT][FONT=Courier New][COLOR=#007700])[/COLOR][/FONT] [FONT=Courier New][COLOR=#0000bb]Tong [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]so1 [/COLOR][COLOR=#007700]+ [/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]so2[/COLOR][/FONT] [FONT=Courier New][COLOR=#0000bb]so1 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]ActiveCell[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700], -[/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]).[/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]Value[/COLOR][/FONT] [FONT=Courier New][COLOR=#0000bb]so2 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000bb]ActiveCell[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]Offset[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]0[/COLOR][COLOR=#007700], -[/COLOR][COLOR=#0000bb]2[/COLOR][COLOR=#007700]).[/COLOR][/FONT][FONT=Courier New][COLOR=#0000bb]Value[/COLOR][/FONT] [FONT=Courier New][COLOR=#0000bb]End [/COLOR][COLOR=#007700]Function [/COLOR][/FONT][/COLOR]
Còn
TinhTong thì nhập 2 số bất kìMã:Function TinhTong( Rng1 As Range, Rng2 As Range) TinhTong = Rng1.Value + Rng2.Value End Function
thử lại xem
Như yêu câu của bạn, tôi nghĩ bạn chạy 1 sub thì hay hơn so với việc tạo 1 FunctionCảm ơn bạn đã nhiệt tình giúp đỡ,mình có file đính kèm nhờ bạn chỉ giúp.Thanks.
Bạn ndu nêu như trên tôi thấy rất hợp lí và hiểu vấn đề bạn nêu trong FileNhư yêu câu của bạn, tôi nghĩ bạn chạy 1 sub thì hay hơn so với việc tạo 1 Function
Chẳng hạn, bạn đã định trước vùng tổng là F5:F10, vậy viết vào code để khi bấm nút là nó điền công thức cho bạn (giống như ví dụ tôi đưa ở trên)
Nhưng bài toán mình nó còn liên quan tới nhiều ô khác nên không thể dùng sub được,dù gì cũng cảm ơn 2 bạn.Như yêu câu của bạn, tôi nghĩ bạn chạy 1 sub thì hay hơn so với việc tạo 1 Function
Chẳng hạn, bạn đã định trước vùng tổng là F5:F10, vậy viết vào code để khi bấm nút là nó điền công thức cho bạn (giống như ví dụ tôi đưa ở trên)
Vậy bạn nói rõ mục đích xem nào! Có thể sẽ có cách khác ---> Nhiều khi cứ lòng vòng lại chẳng đi được đến đâuNhưng bài toán mình nó còn liên quan tới nhiều ô khác nên không thể dùng sub được,dù gì cũng cảm ơn 2 bạn.