Những câu hỏi về code, xin giải thích các code, đề nghị các bạn gửi vào đây

Liên hệ QC
Status
Không mở trả lời sau này.

ST-Lu!

Love Wingchun
Tham gia
19/8/08
Bài viết
730
Được thích
546
Nghề nghiệp
Xích lô một thời
Kể từ hôm nay, tất cả những câu hỏi nhờ giải thích dùm một đoạn code, hay là hỏi những vấn đề linh tinh gì liên quan đến cách viết code, đề nghị các bạn gửi chung vào đây.

Những đề tài mới với tiêu đề: "Nhờ giải thích dùm đoạn code", mà không nói rõ là code gì, code dùng để làm gì, sẽ bị xóa.

BQT

----------------------------------------------------------------------------------------------------------------


Em xin được hỏi 2 đoạn code sau có tương đương nhau ?

Cells(Cells.Rows.Count, 1).End(xlUp).Row có tương đương với [A65000].End(xlup).row

Cám ơn các anh chỉ giáo
 
Chỉnh sửa lần cuối bởi điều hành viên:
Em chỉ muốn hỏi câu điều kiện If str<>"" nghĩa là gì. Theo như anh giải thích thì em hiểu câu đó có nghĩa là nếu str không rỗng
Đúng không ạ.
 
Upvote 0
giải thích giúp mình đoạn code này với

Ý nghĩa của đoạn code này là gì vậy các bạn


If Not Intersect(Target, Range("B2:E5")) Is Nothing Then
 
Upvote 0
Intersect = "giao"
Interset( Target, Range("B2:E5")) = Phần giao của Target và vùng B2:E5
Interset( Target, Range("B2:E5")) Is Nothing = Phần giao của Target và vùng B2:E5 hông có = 2 vùng hông giao nhau
Not = phủ định
Not Interset( Target, Range("B2:E5")) Is Nothing = Có giao nhau
 
Upvote 0
Ý nghĩa của đoạn code này là gì vậy các bạn

If Not Intersect(Target, Range("B2:E5")) Is Nothing Then

Bạn đã được trả lời về fần giao; Nhưng mình lại khuyên bạn ngâm cứu thêm fần "Hội" ("Union")

Cả "Giao" & "Hội" đều có trên diễn đàn hay trong chữ ký của mình. Rất vui lòng nếu bạn tham khảo cả hai khái niệm này 1 lúc. Đó cũng là cách học cái này để nhớ thêm cái kia vậy mà. & chúc bạn vui suốt tuần.

Thân ái.
 
Lần chỉnh sửa cuối:
Upvote 0
Chỉ những bài toán đơn giản thôi - mình mới học VBA

Chào mọi ng` mình mới học VBA , cái khó là học = tiếng nước ngoài , tài liệu ko đầy đủ lắm + thầy giáo cũng vui tính nên nói chung về căn bản mình chưa nắm đc , chỉ học vẹt , làm đc mấy bài mẫu có sẵn thôi . Mình sắp thi rồi mong mọi ng` giúp đỡ mình nhé , thật lòng đấy /*+

Bài 1
Tìm giá trị c sau khi thực hiện :
a= -5
b=14
b=b+a*2
if a<b then
c=a+b
else c=b-a
end if
Cái này thực ra làm ra nháp cũng ra nhưng mình ko biết viết code trên VBA ntn để ra đc đáp án cả

Mã:
Bài 2 Tính tổng 
Tính Sum của  x^m*m^2 ( for m = 1 to 20) , kết quả tùy vào x

Đáp án như sau : 
Function mySum(x)
Dim s, m
s = 0
For m = 1 To 20
s = s + x ^ m * m ^ 2
Next m
mySum = s

End Function
Ở đây mình thắc mắc là sao s= 0

Đừng nói mình ko chịu động não nhé , căn bản còn chưa nắm đc , với lại bận học nhiều môn khác nữa :;;;:::
 
Upvote 0
Chào mọi ng` mình mới học VBA , cái khó là học = tiếng nước ngoài , tài liệu ko đầy đủ lắm + thầy giáo cũng vui tính nên nói chung về căn bản mình chưa nắm đc , chỉ học vẹt , làm đc mấy bài mẫu có sẵn thôi . Mình sắp thi rồi mong mọi ng` giúp đỡ mình nhé , thật lòng đấy /*+

Cái này thực ra làm ra nháp cũng ra nhưng mình ko biết viết code trên VBA ntn để ra đc đáp án cả
Đừng nói mình ko chịu động não nhé , căn bản còn chưa nắm đc , với lại bận học nhiều môn khác nữa :;;;:::
Câu 1 của bạn mình viết tường minh cho bạn
Sub tinh()
'Tìm giá tri. c sau khi thu+.c hie^.n :
Dim a As Double
Dim b As Double
Dim c As Double
a = -5
b = 14
b = b + a * 2
If a < b Then
c = a + b
MsgBox ("gia tri :" & c)
Else
c = b - a
MsgBox ("gia tri :" & c)
End If
End Sub
CÒn S =0 thực ra nó là lệnh khoi gán giá trị ban đầu( để lúc này m xuất phát từ 1 trở đi)
 
Lần chỉnh sửa cuối:
Upvote 0
hihi cám ơn bạn nhiều lắm
Làm lệnh Sub đơn giản thật , mình cứ loay hoay làm lệnh Function
Bạn có thể add nick ym của mình để tiện trao đổi đc ko ? của mình là : frostimpression@yahoo.com
 
Lần chỉnh sửa cuối:
Upvote 0
Hàm của câu 1 đây, xin mời:
PHP:
Option Explicit
Function TimTriC(Aa As Double, Bb As Double)
 Dim Temp As Double
 
 Temp = Bb + Aa ^ 2
 If Aa < Temp Then
   TimTriC = Aa + Temp
 Else
   TimTriC = Temp - Aa
 End If
End Function

Câu 2 như sau:
PHP:
Function TinhTong(Xx As Double)
 Dim mM As Byte
 
 For mM = 1 To 20
   TinhTong = TinhTong + Xx ^ (mM * (mM ^ 2))
 Next mM
End Function

Chú í hàm này dễ bị làm ô chứa tràn số; Ta chỉ nên thử với các số <1, như 2/3 hay 4/9
(*) Trường hợp đầu hàm trả về trị 0.70570271
(*) Trường hợp sau: 0.445966884
 
Upvote 0
CÒn S =0 thực ra nó là lệnh khoi gán giá trị ban đầu( để lúc này m xuất phát từ 1 trở đi)
s có bằng không hay không thì m cũng xuất phát từ 1 trở đi theo câu lệnh for m = 1 to 20.

s = 0 có nghĩa là gán giá trị 0 ban đầu cho s (s là tổng), để sau khi cộng thêm cái gì đó, cụ thể là cộng 20 lần, s không bị cộng dư 1 con số vớ vẩn nào đó.
Thí dụ:
1. s = 0
2. s = s + 1 (kết quả 1)
3. s = s + 1 (kết quả 2)

nếu vì lý do nào đó, ban đầu s có 1 giá trị vớ vẩn là 0.5 mà không có câu lệnh 1, kết quả sẽ là 2.5, sai!
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ các bạn giúp mình code lấy địa chỉ của Name.
Ví dụ: Tại vùng B5:H10 của Sheet1 có Name là DuLieu. Mình muốn khi chạy code, Msgbox hiện thông báo là $B$5:$H$10 thì code viết như thế nào ?. Thanks
 
Upvote 0
Cách 1: Địa chỉ của range:
Msgbox Sheet1.Range("Dulieu").Address

Cách 2: Tham chiếu của Name:
Msgbox ThisWorkbook.Names("Dulieu").RefersTo

Cách 2 sẽ cho cả tên sheet và cả dấu bằng phía trước: "=Sheet1!$B$5:$H$10"
 
Lần chỉnh sửa cuối:
Upvote 0
Mọi người giúp mình làm 2 bài này với
1)Tìm số nghiệm của ptrinh
x^2+y^2=z^2 , với x,y số nguyên dương <= 100
2)Tính:
Tích (1-0.3/(i+j))
for i =1 to 8
for j= 1 to 7
 
Upvote 0
Tạm xài 2 Sub này vậy

PHP:
Option Explicit
Sub FTDuongTron()
 Dim Xx As Byte, yY As Byte, Zz As Double, Dem As Byte
 ReDim MDL(1, 99) As Long
 Columns("A:C").ClearContents
 [A1].Value = "XX":        [B1].Value = "YY"
 [C1].Value = "ZZ"
 For Xx = 1 To 100
   For yY = 1 To 100
      Zz = Abs((Xx ^ 2 + yY ^ 2) ^ (1 / 2))
      If Int(Zz) = Zz Then
         With [A999].End(xlUp).Offset(1)
            .Value = Xx:         .Offset(, 1).Value = yY
            .Offset(, 2).Value = Zz
         End With
      End If
 Next yY, Xx
End Sub

PHP:
Sub Tich2So()
 Dim Jj As Byte, Ww As Byte
 
 Columns("E:E").ClearContents:         [E1].Value = "TiCh"
 For Jj = 1 To 8
   For Ww = 1 To 7
      With [E999].End(xlUp).Offset(1)
         .Value = 1 - 0.3 / (Jj + Ww)
      End With
 Next Ww, Jj
End Sub

Câu đầu có thể viết cho bạn 1 hàm mảng tự tạo, nếu bạn có nhu cầu tham khảo.
 
Upvote 0
giải thích giúp mình đoạn code này với

giải thích giúp mình đoạn code này với

PHP:
''.......
With Sheets("Goc")
    If Not Intersect(Target, [B2]) Is Nothing Then
        Set Rng = .Range(.[B3], .[B65500].End(xlUp))
        Set sRng = Rng.Find(what:=Target, LookIn:=xlFormulas, lookat:=xlWhole)
''..............

Nhất là cấu trúc câu lệnh Find
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
giải thích giúp mình đoạn code này với
PHP:
With Sheets("Goc")
1    If Not Intersect(Target, [B2]) Is Nothing Then
        Set Rng = .Range(.[B3], .[B65500].End(xlUp))
3      Set sRng = Rng.Find(what:=Target, LookIn:=xlFormulas, lookat:=xlWhole)
    End If
Nhất là cấu trúc câu lệnh Find

Để hiểu câu lệnh 3 bạn nên đến đây & cho bạn 1 tuần ròng đó: http://www.giaiphapexcel.com/forum/showthread.php?15116-T%E1%BB%95ng-h%E1%BB%A3p-v%E1%BB%81-ph%C6%B0%C6%A1ng-th%E1%BB%A9c-t%C3%ACm-ki%E1%BA%BFm-FIND-(-Find-Method)

Câu 1 & 2

(1) Nếu vừa làm gì đó với [B2] (của trang tính có tên "Goc") thì thực hiện các lệnh dưới cho đến khi gặp End If

(2) (Thường nên đọc như chữ Tàu: Từ fải qua trái: Đem vùng từ [B3]. . . đến ô cuối của cột này chứa dữ liệu gàn vô biến đã khai báo Rng

(3) Ô tìm thấy đem gán vô biện sRng đã khai báo

Chúc bạn nhiều may mắn!
 
Upvote 0
Để hiểu câu lệnh 3 bạn nên đến đây & cho bạn 1 tuần ròng đó: http://www.giaiphapexcel.com/forum/showthread.php?15116-T%E1%BB%95ng-h%E1%BB%A3p-v%E1%BB%81-ph%C6%B0%C6%A1ng-th%E1%BB%A9c-t%C3%ACm-ki%E1%BA%BFm-FIND-(-Find-Method)

Câu 1 & 2

(1) Nếu vừa làm gì đó với [B2] (của trang tính có tên "Goc") thì thực hiện các lệnh dưới cho đến khi gặp End If

(2) (Thường nên đọc như chữ Tàu: Từ fải qua trái: Đem vùng từ [B3]. . . đến ô cuối của cột này chứa dữ liệu gàn vô biến đã khai báo Rng

(3) Ô tìm thấy đem gán vô biện sRng đã khai báo

Chúc bạn nhiều may mắn!


Muội xin ăn theo một chút
- Intersect: tiếng anh hiểu là gặp và cắt
- Target: hiểu nôm na như này
Mặt hồ đang phẳng lặng, bạn cầm hòn đá đám cải tủm cái, chỗ mà hòn đá rơi xuống chạm mặt nước đó là target
Cũng giống trong excel
- mặt hồ chính là trang tính gồm có cột và dòng
- Điẻm chạm của hòn đá chính là cell mà ta thao tác với một vùng, cột , dữ liệu nào đó

Còn về Set rng....bạn hiểu nó giống như define name ý, nếu bạn chưa biết define name thì bạn nên tìm đọc về bài này
 
Upvote 0
Phím tắt để chạy code Sort tự động.

Để chạy code Sort tự động, việc đầu tiên là phải chọn vùng muốn sort, mình muốn có 1 phím tắt hay 1 công cụ nào đó mà nó tự chọn vùng muốn sort và chạy code đó luôn, các bạn giúp mình nhé! Cảm ơn nhiều
 
Upvote 0
Phím tắt để chạy code Sort tự động.

Để chạy code Sort tự động, việc đầu tiên là phải chọn vùng muốn sort, mình muốn có 1 phím tắt hay 1 công cụ nào đó mà nó tự chọn vùng muốn sort và chạy code đó luôn, các bạn giúp mình nhé! Cảm ơn nhiều
Bạn muốn sort kiểu gì thì cứ Record macro rồi gán phím tắt cho nó là xong thôi!
 
Upvote 0
Mình đã gán phím tắt, nhưng khi thực hiện phải chọn range trước khi bấm phím tắt, vậy có cách nào không phải chọn range mà vẫn dùng phím tắt không
Vì bạn đã chọn range trước khi record macro nên trong code sẽ có đoạn Selection. gì gì đó
Giờ làm lại:
- Bật chức năng record macro trước
- Chọn range và sort
- Tắt record macro
- Gán phím tắt cho macro
--------------------------
Giờ chỉ cần gọi phím tắt là nó sort luôn, khỏi cần chọn range trước gì cả!
 
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