2013-06-10 44 views
7

Tôi cực kỳ mới viết trong VB.NET, và tôi thậm chí không nhận ra rằng có một sự khác biệt đáng kể giữa VB.NET và VBA. Tôi đã viết ứng dụng của tôi trong Visual Studio, nhưng tôi nhận ra rằng tôi sẽ cần phải chuyển nó sang VBA trong Outlook, và có một số vấn đề cú pháp mà tôi cần phải giải quyết. Tôi đã tìm kiếm, nhưng tôi không thể tìm thấy bất kỳ loại tài liệu tham khảo dứt khoát (như msdn) cho VBA hoặc thậm chí VB6, mà từ những gì tôi nghe là gần gũi hơn với VBA hơn VB.NET.danh sách và mảng trong VBA

Tôi sẽ bao gồm các phần mã có liên quan tại đây. Nếu có ai cần thêm ngữ cảnh, xin vui lòng cho tôi biết - Tôi có thể đăng tải toàn bộ nội dung, không lâu đâu. Tuy nhiên, tôi muốn giữ bài đăng này càng đơn giản càng tốt.

Dim DateToday As String = String.Format("0:{yyyy/MM/dd}", DateTime.Now) 
Dim Computers As New SortedList() 
Dim disabledList As New List(Of String) 
'\\ four additional lists 
Dim compArray As Array 

... 

Computers.Add(ComputerName, ErrorState) 

Danh sách mới và danh sách được sắp xếp đưa ra Dự kiến: Kết thúc bản khai tại dấu ngoặc đơn sau Danh sách. Mảng này cung cấp cho Expected: identifier tại Array. Chuỗi DateToday cho một kết thúc dự kiến ​​của câu lệnh tại dấu bằng. Nỗ lực để thêm vào danh sách được sắp xếp cho một dự kiến: =.

Tôi đã làm việc với VB.NET trong hai hoặc ba ngày, và tôi chưa bao giờ làm việc với VBA hoặc VB6 trước đây, vì vậy tôi chỉ không có kinh nghiệm cần biết để đi đâu từ đây. Nếu bất kỳ ai trong các bạn sẵn lòng giúp tôi, tôi thực sự sẽ đánh giá cao điều đó!

+1

Nói một cách đơn giản, mã mà bạn đang viết không phải là cú pháp VBA hợp lệ. VBA là một ngôn ngữ khác, và nó không hỗ trợ .NET framework. –

+1

Nếu bạn đang tìm kiếm tài liệu tham khảo, MSDN thực sự có tài liệu toàn diện cho VBA: http://msdn.microsoft.com/en-us/library/gg278934%28v=office.14%29.aspx –

+1

Bạn có thể bắt đầu với Tham khảo ngôn ngữ VBA trên MSDN: http://msdn.microsoft.com/en-us/library/office/gg264383(v=office.14).aspx – Joe

Trả lời

9

Bạn sẽ phải thay đổi một số loại dữ liệu nhưng những điều cơ bản về những gì bạn vừa mới đăng có thể được chuyển đổi thành thứ gì đó tương tự như điều này vì loại dữ liệu tôi sử dụng có thể không chính xác.

Dim DateToday As String: DateToday = Format(Date, "yyyy/MM/dd") 
Dim Computers As New Collection 
Dim disabledList As New Collection 
Dim compArray(1 To 1) As String 

'Assign data to first item in array 
compArray(1) = "asdf" 

'Format = Item, Key 
Computers.Add "ErrorState", "Computer Name" 

'Prints "ErrorState" 
Debug.Print Computers("Computer Name") 

Không thể sắp xếp bộ sưu tập để nếu bạn cần sắp xếp dữ liệu, bạn có thể muốn sử dụng mảng.

Đây là liên kết đến tham chiếu nhà phát triển triển vọng. http://msdn.microsoft.com/en-us/library/office/ff866465%28v=office.14%29.aspx

Một trang web tuyệt vời để giúp bạn bắt đầu là http://www.cpearson.com/Excel/Topic.aspx

Di chuyển tất cả mọi thứ trên để VBA từ VB.Net sẽ không đơn giản vì không phải tất cả các kiểu dữ liệu đều giống nhau và bạn không có khung .Net. Nếu bạn gặp khó khăn chỉ cần đăng các mã bạn đang mắc kẹt chuyển đổi và bạn chắc chắn sẽ nhận được một số trợ giúp!

Edit:

Sub ArrayExample() 
    Dim subject As String 
    Dim TestArray() As String 
    Dim counter As Long 

    subject = "Example" 
    counter = Len(subject) 

    ReDim TestArray(1 To counter) As String 

    For counter = 1 To Len(subject) 
     TestArray(counter) = Right(Left(subject, counter), 1) 
    Next 
End Sub 
+0

Cảm ơn bạn rất nhiều! Lý do tôi đã sử dụng danh sách thay vì mảng là chương trình không biết chắc chắn bao nhiêu mục sẽ có trong mảng trước khi nó được thực hiện. Nhưng tôi có thể chuyển đổi nó thành một mảng. Một câu hỏi ngu ngốc: tôi có phải khai báo mảng ở đầu chương trình hay tôi có thể đợi cho đến khi tôi xác định được bao nhiêu khoảng trống cần thiết, và sau đó khai báo nó? – Wolves

+1

Bạn sẽ phải lặp qua dữ liệu để xác định số lượng các mục sẽ được thêm vào mảng và lưu số trong một biến. Sử dụng ReDim để khởi tạo lại mảng với kích thước chính xác hoặc tùy thuộc vào định dạng dữ liệu của bạn, bạn có thể sử dụng ReDim để tránh lặp lại dữ liệu của bạn hai lần, một lần để đếm, một lần để đọc. Vấn đề duy nhất là nếu bạn đang sử dụng một mảng đa chiều, bạn chỉ có thể thay đổi kích thước kích thước cuối cùng. Tôi sẽ đưa một ví dụ trong câu trả lời của tôi cho bạn. – Ripster

+0

Cảm ơn bạn! Điều đó rất hữu ích! – Wolves

Các vấn đề liên quan