Thắc mắc code

akayzai1

New Member
Hội viên mới
Subdien()
Dim x As Double
Dim y As Double
x = Val(InputBox("nhap x = "))
y = Val(InputBox("nhap y = "))
If x > y Then
For i = y + 1 To x - 1
Cells(i, 1) = i
Next i
End If
If x < y Then
For i = x + 1 To y - 1
Cells(i, 1) = i
Next i
End If
Application.Columns(1).Select
For Each cell In Selection
If cell.Value Mod 2 = 0 Andcell.Value<> "" Then
cell.Interior.Color = vbGreen
End If
Next cell
End Sub
Bây giờ e muốn nhập 1 số âm , 1 số dương bất kỳ hoặc 2 số âm thì sửa code như thế nào các bác cho e ý kiến.
 
Ðề: Thắc mắc code

Subdien()
Dim x As Double
Dim y As Double
x = Val(InputBox("nhap x = "))
y = Val(InputBox("nhap y = "))
If x > y Then
For i = y + 1 To x - 1
Cells(i, 1) = i
Next i
End If
If x < y Then
For i = x + 1 To y - 1
Cells(i, 1) = i
Next i
End If
Application.Columns(1).Select
For Each cell In Selection
If cell.Value Mod 2 = 0 Andcell.Value<> "" Then
cell.Interior.Color = vbGreen
End If
Next cell
End Sub
Bây giờ e muốn nhập 1 số âm , 1 số dương bất kỳ hoặc 2 số âm thì sửa code như thế nào các bác cho e ý kiến.

Thoáng nhìn vào ta thấy
Application.Columns(1).Select
Nghĩa là họ chọn cột A rồi . Đâu có cho cơ hội số âm

Muốn số âm thì phải move cột xác định ra phía giữa . Ví dụ la cột F và Row của trục là row =10 . Có vậy ta mới dùng Âm . Khi âm thì nó sẽ cạy sang trái tức là Column chạy từ F đến A, hoặc từ row =10 đến 1 . Số dương thì ngược lại .

Muốn chạy âm hay dương thì dùng Offset nhé

Các cô cậu này học nghành gì vậy mà sao hỏi về toán ko vậy ???
 
Ðề: Thắc mắc code

Đề bài như vậy bác Flower: Nhập 2 số nguyên bất kỳ bằng inputbox.Điền vào cột A giá trị nằm giữa hai số đó tô màu xanh cho các ô chứa giá trị chẵn
Nhưng khi e nhập x,y là 2 sô dương thì nó đúng.Nhưng khi nhập 1 số dương 1 số âm hoặc 2 số âm thì sai
 
Ðề: Thắc mắc code

Đề bài như vậy bác Flower: Nhập 2 số nguyên bất kỳ bằng inputbox.Điền vào cột A giá trị nằm giữa hai số đó tô màu xanh cho các ô chứa giá trị chẵn
Nhưng khi e nhập x,y là 2 sô dương thì nó đúng.Nhưng khi nhập 1 số dương 1 số âm hoặc 2 số âm thì sai

Dĩ nhiên là SAI vì Cell(row,col) kho dùng row hay col âm
Muốn dùng âm thì Offset(row,col)

Example : x=-1 , y=4

Sub dien()
Dim x As Double
Dim y As Double
x = Val(InputBox("nhap x = "))
y = Val(InputBox("nhap y = "))

Range("A5").Select
If x > y Then
For i = y + 1 To x - 1
Range("A5").Offset(x, 0) = i
Next i
End If
If x < y Then
For i = x + 1 To y - 1
Range("A5").Offset(x, 0) = i
Next i
End If

For Each cell In Selection
If cell.Value Mod 2 = 0 And cell.Value <> "" Then
cell.Interior.Color = vbGreen
End If
Next cell
End Sub

hiểu chưa ???? :alo::alo::alo:
 
Sửa lần cuối:
Ðề: Thắc mắc code

ok rồi bác ạ
Sub dien()
Dim x As Double
Dim y As Double
x = Val(InputBox("nhap x = "))
y = Val(InputBox("nhap y = "))
If x > y Then
For i = y + 1 To x - 1
Cells(i - y, 1) = i
Next i
End If
If x < y Then
For i = x + 1 To y - 1
Cells(i - x, 1) = i
Next i
End If
Application.Columns(1).Select
For Each cell In Selection
If cell.Value Mod 2 = 0 And cell.Value <> "" Then
cell.Interior.Color = vbGreen
End If
Next cell
End Sub
 
Ðề: Thắc mắc code

Dĩ nhiên là SAI vì Cell(row,col) kho dùng row hay col âm
Muốn dùng âm thì Offset(row,col)

Example : x=-1 , y=4

Sub dien()
Dim x As Double
Dim y As Double
x = Val(InputBox("nhap x = "))
y = Val(InputBox("nhap y = "))

Range("A5").Select
If x > y Then
For i = y + 1 To x - 1
Range("A5").Offset(x, 0) = i
Next i
End If
If x < y Then
For i = x + 1 To y - 1
Range("A5").Offset(x, 0) = i
Next i
End If

For Each cell In Selection
If cell.Value Mod 2 = 0 And cell.Value <> "" Then
cell.Interior.Color = vbGreen
End If
Next cell
End Sub

hiểu chưa ???? :alo::alo::alo:
Tiện bác cho e hỏi nốt câu này nhé.
e cần lập 1 hàm làm tròn số về đuôi 0 hoặc 5 .Số có chữ số cuối cùng < 5 thì làm tròn =5, >=5 thì làm tròn =0.Vd: 34 làm tròn = 35,23=25; 25=30, 36=40.Nhưng khi e viết nó lại chỉ làm tròn đc về 0

Function tong(a As Double, b As Double) As Double
x = a + b
y = x Mod 10
If x <= 5 Then
tong = 5
End If
If 5 < x <= 10 Then
tong = 10
End If
If x > 10 Then
If y = 0 Or y = 5 Then
tong = x
End If
If 0 < y < 5 Then
tong = x - y + 5
End If
If 5 < y < 10 Then
tong = x - y + 10
End If
End If
End Function
 
Ðề: Thắc mắc code

Tiện bác cho e hỏi nốt câu này nhé.
e cần lập 1 hàm làm tròn số về đuôi 0 hoặc 5 .Số có chữ số cuối cùng < 5 thì làm tròn =5, >=5 thì làm tròn =0.Vd: 34 làm tròn = 35,23=25; 25=30, 36=40.Nhưng khi e viết nó lại chỉ làm tròn đc về 0

Function tong(a As Double, b As Double) As Double
x = a + b
y = x Mod 10
If x <= 5 Then
tong = 5
End If
If 5 < x <= 10 Then
tong = 10
End If
If x > 10 Then
If y = 0 Or y = 5 Then
tong = x
End If
If 0 < y < 5 Then
tong = x - y + 5
End If
If 5 < y < 10 Then
tong = x - y + 10
End If
End If
End Function

:nheo::nheo:
b là Divisor . Tại sao x = a + b !!!!!!!!!!!!!!
y = x Mod 10 !!!!!!!!!!!!!!!!
trong VBA dau có MOD()
:chetne::chetne:

Theo như đại sư CPearson thì VBA pfải tự viết là

Function XMod(ByVal Number As Double, ByVal Divisor As Double) As Double
Number = Int(Abs(Number))
Divisor = Int(Abs(Divisor))
XMod = Number - (Int(Number / Divisor) * Divisor)
End Function

Còn như dùng formula thì =MOD(Number,Divisor )

Ví dụ
Muốn 23 thành 25 thì
=ROUND(23+MOD(23,3),0)
 

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Cách làm file Excel quản lý lãi vay

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top