Hỏi về tính toán trong VBA

  • Thread starter Thread starter 790312
  • Ngày gửi Ngày gửi
Liên hệ QC

790312

Thành viên hoạt động
Tham gia
7/4/08
Bài viết
181
Được thích
8
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.
 
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.
Làm vầy nè:
PHP:
Sub Tong()
  With Range("C1:C100")
    .Formula = "=RC[-2]+RC[-1]"
  End With
End Sub
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]"
    .Value = .Value
  End With
End Sub
 
Upvote 0
Làm vầy nè:
PHP:
Sub Tong()
  With Range("C1:C100")
    .Formula = "=RC[-2]+RC[-1]"
  End With
End Sub
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]"
    .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.
 
Upvote 0
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.
Bạn gán code vào đâu ?
Nếu chép Code của bạn ndu vào Sheet hay Workbook thì báo lỗi là đúng rồi. Đây là Sub trong Module, để chép vào Module thì bạn phải insert VBA Project ra Module rồi paste vào
sau Run Macro nhé
Chúc thành công
 
Upvote 0
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.
 
Upvote 0
Nếu chép vào Sheet hay Workbook thì phải xóa bớt End sub thì mới chạy ! ( vì ở đây bạn đã Copy toàn bộ khi paste vào Sub sự kiện của Sheet hay Workbook thì dư End sub của thủ tục này )
 
Lần chỉnh sửa cuối:
Upvote 0
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.
 
Upvote 0
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.
Nế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...
 
Upvote 0
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.
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é !
Còn viết hàm là Fun... trong VBA nhé kim Nguyen !
Thân chào
 
Lần chỉnh sửa cuối:
Upvote 0
Nế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ì tôi cũng đã biết.Thanks
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
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

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
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
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
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.
 
Upvote 0
Đối với
Mã:
[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]
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 nhau
Còn
Mã:
Function TinhTong( Rng1 As Range, Rng2 As Range)
  TinhTong = Rng1.Value + Rng2.Value
 End Function
TinhTong thì nhập 2 số bất kì
thử lại xem
 
Lần chỉnh sửa cuối:
Upvote 0
Đối với
Mã:
[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]
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 nhau
Còn
Mã:
Function TinhTong( Rng1 As Range, Rng2 As Range)
  TinhTong = Rng1.Value + Rng2.Value
 End Function
TinhTong thì nhập 2 số bất kì
thử lại xem

Cảm ơn bạn đã nhiệt tình giúp đỡ,mình có file đính kèm nhờ bạn chỉ giúp.Thanks.
 

File đính kèm

Upvote 0
Không hiểu ý bạn lắm, Vì đã gọi là Hàm thì bạn cứ kéo công thức bình thường thì kết quả cũng tham chiếu theo ý và kết quả bình thường
 
Upvote 0
Cảm ơn bạn đã nhiệt tình giúp đỡ,mình có file đính kèm nhờ bạn chỉ giúp.Thanks.
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)
 
Upvote 0
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)
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 File
 
Upvote 0
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)
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.
 
Upvote 0
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.
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 đâu
 
Upvote 0
Web KT

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

Back
Top Bottom