Cần mọi người giải đáp thắc mắc liên quan đến việc khai báo biến và gán giá trị cho biến (1 người xem)

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

Người dùng đang xem chủ đề này

anhtb82

Thành viên mới
Tham gia
11/11/15
Bài viết
45
Được thích
9
Em là gà macro nên viết code như trong file đính kèm không chạy được.

Mong mọi người chỉ giáo và chỉ cho e chỗ sai với ạ

Ví dụ của mình như sau:
1. Khai báo biến "newdate" và gán "newdate" cho các ô bôi màu xanh (có chạy vòng lặp)
2. Xét điều kiện, nếu giá trị ở các ô xanh (Newdate) < giá trị ô vàng thì các ô xanh sẽ được gán lại giá trị mới = giá trị của các ô đỏ cùng hàng tương ứng.

1528873843518.png
 

File đính kèm

Em là gà macro nên viết code như trong file đính kèm không chạy được.

Mong mọi người chỉ giáo và chỉ cho e chỗ sai với ạ

Ví dụ của mình như sau:
1. Khai báo biến "newdate" và gán "newdate" cho các ô bôi màu xanh (có chạy vòng lặp)
2. Xét điều kiện, nếu giá trị ở các ô xanh (Newdate) < giá trị ô vàng thì các ô xanh sẽ được gán lại giá trị mới = giá trị của các ô đỏ cùng hàng tương ứng.

View attachment 197327
Bạn thử:
PHP:
Sub abc()
     Dim i&, LR&
     LR = Cells(Rows.Count, 1).End(3).Row
  For i = 2 To LR
    With Cells(i, 8)
      If .Value < Cells(1, 13).Value Then
        .Value = Cells(i, 3).Value
      End If
    End With
  Next
End Sub
Tuy nhiên tôi thấy nó đúng trong trường hợp các cột C và M là dạng số, nếu dạng Date, chắc sẽ khác đấy.
 
Upvote 0
Bạn thử:
PHP:
Sub abc()
     Dim i&, LR&
     LR = Cells(Rows.Count, 1).End(3).Row
  For i = 2 To LR
    With Cells(i, 8)
      If .Value < Cells(1, 13).Value Then
        .Value = Cells(i, 3).Value
      End If
    End With
  Next
End Sub
Tuy nhiên tôi thấy nó đúng trong trường hợp các cột C và M là dạng số, nếu dạng Date, chắc sẽ khác đấy.

Cảm ơn bạn, mình thì có thể làm nó chạy được nếu k khai báo biến còn bài của mình thì mình đang muốn khai báo biến cơ, vì mình chưa biết nên sau lại có thể dùng nó để áp dụng cho các dạng bài khác. mình rất mong muốn mọi người giúp để sửa lỗi cho bài của mình
 
Upvote 0
Em là gà macro nên viết code như trong file đính kèm không chạy được.

Mong mọi người chỉ giáo và chỉ cho e chỗ sai với ạ

Ví dụ của mình như sau:
1. Khai báo biến "newdate" và gán "newdate" cho các ô bôi màu xanh (có chạy vòng lặp)
2. Xét điều kiện, nếu giá trị ở các ô xanh (Newdate) < giá trị ô vàng thì các ô xanh sẽ được gán lại giá trị mới = giá trị của các ô đỏ cùng hàng tương ứng.

View attachment 197327
Set newdate = Range("H" & i)
câu này là sao? lúc đầu i chỉ là 0 thôi mà! đâu có cái này range("H0") đâu???
 
Upvote 0
Cảm ơn bạn, mình thì có thể làm nó chạy được nếu k khai báo biến còn bài của mình thì mình đang muốn khai báo biến cơ, vì mình chưa biết nên sau lại có thể dùng nó để áp dụng cho các dạng bài khác. mình rất mong muốn mọi người giúp để sửa lỗi cho bài của mình
Sao máy mình chạy đâu có lỗi gì đâu. Nó chậy rầm rầm mà
Mã:
Sub test()
    Dim i As Integer
    Dim ngaygiao As Integer
    Dim newdate As Range
For i = 2 To 10
    Set newdate = Range("H" & i)
    If newdate < Sheet1.Cells(1, 13).Value Then
        newdate = Sheet1.Cells(i, 3).Value
    End If
Next i
End Sub
 
Upvote 0
Sao máy mình chạy đâu có lỗi gì đâu. Nó chậy rầm rầm mà
Mã:
Sub test()
    Dim i As Integer
    Dim ngaygiao As Integer
    Dim newdate As Range
For i = 2 To 10
    Set newdate = Range("H" & i)
    If newdate < Sheet1.Cells(1, 13).Value Then
        newdate = Sheet1.Cells(i, 3).Value
    End If
Next i
End Sub
Lỗi là do Set newdate = Range("H" & i) trên For
 
Upvote 0
...
2. Xét điều kiện, nếu giá trị ở các ô xanh (Newdate) < giá trị ô vàng thì các ô xanh sẽ được gán lại giá trị mới = giá trị của các ô đỏ cùng hàng tương ứng.
.... mình rất mong muốn mọi người giúp để sửa lỗi cho bài của mình

Bài này từ cái yêu cầu nó đã sai rồi. Không cần xem đến cốt kiếc.
>>> nếu giá trị mới lại nhỏ hơn thì lại tiếp tục gán lần nữa?
 
Upvote 0
Upvote 0
Sao máy mình chạy đâu có lỗi gì đâu. Nó chậy rầm rầm mà
Mã:
Sub test()
    Dim i As Integer
    Dim ngaygiao As Integer
    Dim newdate As Range
For i = 2 To 10
    Set newdate = Range("H" & i)
    If newdate < Sheet1.Cells(1, 13).Value Then
        newdate = Sheet1.Cells(i, 3).Value
    End If
Next i
End Sub

oSet = Range("C1").Column - Range("H1").Column
Set cmpDate = Sheet1.Range("M1")
For Each cDate In Sheet1.Range("H2:H10")
If cmpDate.Value < cmpDate.Value Then cmpDate.Value = cmpDate.Offset(, oSet).Value
Next cDate
 
Upvote 0
Upvote 0
Web KT

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

Back
Top Bottom