Xin hỏi về hàm mảng trong VBA? (1 người xem)

Liên hệ QC

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

tuyetbay

Thành viên hoạt động
Tham gia
23/1/08
Bài viết
154
Được thích
179
Cho em hỏi có thể dùng code Array để lấy 1 mảng hình chữ nhật trên bảng tính Excel làm dữ liệu được không?
Nếu được thì có thể xin 1 ví dụ về việc lấy và rút trích ra lại bằng lệnh for...next được không?
Ví dụ:
arr = array (vùng range("C3:D10").value)
For i = 1 to 50
IF arr(i).value >=5 or arr(i).value <=10 then
range("A"&i).value = arr(i)
End IF
Next

Đại khái là vậy, nhưng sao em làm hoài mà vẩn báo lỗi vậy!
Xin bổ sung kiến thức cho!
Thanks.
 
Thế sao bạn không dùng:
PHP:
Set Rng = Range("C3:D10")
i = 1
  For Each Clls In Rng
    If Clls >= 5 And Clls <= 10 Then
      Cells(i, 1) = Clls: i = i + 1
     End If
  Next Clls
Có lẽ bạn nhầm giữa And và Or thì phải (ở đây AND thì hợp lý hơn)
 
Upvote 0
Vâng, cảm ơn bác nhiều. Vì đây là ví dụ nên có thể không đúng lắm với ý định của em.
Tại vì em thấy mấy bác có viết code
"Dim Arr(4) As String
Arr(1) = "Thang 1"
Arr(2) = "Thang 2"
Arr(3) = "Thang 3"
Arr(4) = "Thang 4"
.."
Hoặc:
"Dim Array("M","D","P","J")"
Và đó là những hàm mảng cố định. Vậy có cách nào làm được các hàm mảng động không? Nhưng các giá trị "M","D","P","J" sẽ tự thay đổi nếu như một lệnh nào đó trong code được thay đổi, kiểu như hàm indirect vậy?
Không biết em nói vậy có đúng không nữa?

(Còn chữ or sữa thành and thì đúng rồi! Tại em chỉ mới nghĩ ra nên chưa thử nữa. Thanks bác nha!)
Thân.
 
Upvote 0
To TuyetBay: Bạn xem qua macro sau & cho biết ý kiến

Mình lượm được ngoài đường í mà!

PHP:
Sub CreateCalendar()
 Dim lMonth As Long, lDays As Long
 Dim strMonth As String, strAddress As String
 Dim rStart As Range, rCell As Range:              Dim dDate As Date
 'Add new sheet and format'
 Worksheets.Add
 ActiveWindow.DisplayGridlines = False
 
 With Cells
   .ColumnWidth = 4#:                              .Font.Size = 8
 End With
 'Create the Month headings'
 For lMonth = 1 To 4
   strMonth = Choose(lMonth, "January", "April", "July", "October")
   Set rStart = Cells(1 + 7 * (lMonth - 1), 1)
   'Merge, AutoFill and align months'
 
   With rStart
      .Value = strMonth:                           .Interior.ColorIndex = 35
      .HorizontalAlignment = xlCenter:             .Font.Bold = True
 
      With .Range("A1:G1")
         .BorderAround LineStyle:=xlContinuous:    .Merge
      End With
 
      .Range("A1:G1").AutoFill Destination:=.Range("A1:U1")
   End With
 
 Next lMonth
 'Pass ranges for months'
 For lMonth = 1 To 12
   strAddress = Choose(lMonth, "A2:G7", "H2:N7", "O2:U7", _
      "A9:G14", "H9:N14", "O9:U14", "A16:G21", "H16:N21", "O16:U21", _
      "A23:G28", "H23:N28", "O23:U28")
   lDays = 0
   Range(strAddress).BorderAround LineStyle:=xlContinuous
   'Add dates to month range and format'
   For Each rCell In Range(strAddress)
      lDays = lDays + 1
      dDate = DateSerial(Year(Date), lMonth, lDays)
      If Month(dDate) = lMonth Then ' It is a valid date'
 
         With rCell
            .NumberFormat = "ddd dd":              .Value = dDate:
         End With
 
      End If
   Next rCell
 Next lMonth
 'add con formatting'
 
 With Range("A1:U28")
   .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=TODAY()"
   .FormatConditions(1).Font.ColorIndex = 2
   .FormatConditions(1).Interior.ColorIndex = 1
 End With
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom