bí Cách điều khiển range trong VBA

Liên hệ QC

ducky_dhkt

Thành viên mới
Tham gia
17/9/07
Bài viết
16
Được thích
0
Các bác ơi em đang tạo hàm số "tichvohuong" của 2 vecto: tichvohuong(a as range,b as range).nhưng bí ở chỗ là a,b chọn bằng chuột (nên vùng range tùy ý người chọn) em bí không biết làm sao để điều khiển vùng range đó trong code gồm vị trí địa chỉ ô bắt đầu, kết thúc NHờ các đại ca giúp cho. Cảm ơn rất nhiều.
 

File đính kèm

Viết hàm chi cho cực vậy bạn trong Excel có rồi, bạn dùng SumProduct là được. Bạn xem file nha! Bạn nhấn Alt + F11 sẽ thấy code trong file này!
PHP:
Function vector(cel1 As Range, cel2 As Range)     vector = Application.WorksheetFunction.SumProduct(cel1, cel2) End Function
Đối với bài này thì không cần nằm cách điều khiển vùng range gì hết. Nếu bạn thực sự muốn nắm cách chính sát điều khiển vùng range thì có hai cách: Cách 1: Dựa vào hàm Range("địa chỉ tham chiếu").value Ví dụ:
Range("A1").value| Range("A" & i).value| với i là 1 biến số ví dụ i = 1 hoặc i = 2 Range(vung).value| với vung là 1 name
Cách 2: Là dùng công thức Cells(,) Ví dụ: Muốn tham chiếu dữ liệu ở D5 thì viết: Cells(5,4).value Bạn cũng có thể kết hợp với các biến khác, ví dụ: i = 5 j = 4 Cells(i,j).value Đại khái là như vậy, tùy ý mình sử dụng. Bạn có thể tìm thêm các giáo trình dạy lập trình VBA để tìm hiểu thêm. Thân.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
anh có thể viết code để em xem được không mục đích chính để nắm được cách điều khiển vùng range, và ứng dụng lập trình khác,em đang lập trình nhưng bị bí chỗ đó.
 
Upvote 0
Bạn thử dùng tạm hàm này xem; Nếu còn khiếm khuyết cho biết với nha!

Có thể viết code được không; mục đích chính để nắm được cách điều khiển vùng range, và ứng dụng lập trình khác,em đang bị bí chỗ đó.
:-=

PHP:
Option Explicit

Function TichVoHuong(Rng1 As Range, Rng2 As Range)
 Dim Jj As Long
 If Rng1.Rows.Count > Rng2.Rows.Count Or Rng1 Is Nothing _
   Or Rng2 Is Nothing Then
   TichVoHuong = "Vung Sau Thieu Dong!":        Exit Function
 End If
 For Jj = 1 To Rng1.Rows.Count
   TichVoHuong = TichVoHuong + Rng1.Cells(Jj) * Rng2.Cells(Jj)
 Next Jj
End Function
 

File đính kèm

Upvote 0
:-=

PHP:
Option Explicit
 
Function TichVoHuong(Rng1 As Range, Rng2 As Range)
 Dim Jj As Long
 If Rng1.Rows.Count > Rng2.Rows.Count Or Rng1 Is Nothing _
   Or Rng2 Is Nothing Then
   TichVoHuong = "Vung Sau Thieu Dong!":        Exit Function
 End If
 For Jj = 1 To Rng1.Rows.Count
   TichVoHuong = TichVoHuong + Rng1.Cells(Jj) * Rng2.Cells(Jj)
 Next Jj
End Function


Hình như còn thiếu bác SA ah, nhỡ số hàng của range trước nhỏ hơn thì sao

Sửa lại như sau
PHP:
Option Explicit 
 
Function TichVoHuong(Rng1 As Range, Rng2 As Range) 
 Dim Jj As Long 
 If Rng1.Rows.Count <> Rng2.Rows.Count Or Rng1 Is Nothing _ 
   Or Rng2 Is Nothing Then 
   TichVoHuong = "Vung Sau Thieu Dong!":        Exit Function 
 End If 
 For Jj = 1 To Rng1.Rows.Count 
   TichVoHuong = TichVoHuong + Rng1(Jj) * Rng2(Jj) 
 Next Jj 
End Function
 
Upvote 0
Web KT

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

Back
Top Bottom