Word macro lặp qua bảng và dừng ở cuối


1

Tôi có kịch bản phim. Cột đầu tiên là mã thời gian, cột thứ hai là loa, cột thứ ba là hộp thoại.

Tôi muốn lặp qua toàn bộ tập lệnh, nhưng chỉ làm một cái gì đó cho cột thứ ba (hộp thoại).

Tôi đã có một macro cho những gì tôi làm cho cột thứ ba. Tôi chỉ cần nó để:

  • bắt đầu ở hàng 1 cột 1
  • tab để hàng 1 cột 2
  • tab một lần nữa vào hàng 1 cột 3 (sau đó thực hiện macro dựng sẵn của tôi)
  • sau đó tab lại đưa tôi trở lại r2 c1

Nhưng nó phải dừng lại khi chạm vào một ô trống. Các macro của tôi tiếp tục nhấn các vòng lặp vô hạn, tiếp tục tạo các ô mới vì phím tab được kiểm tra theo chương trình mặc dù có nhiều kiểm tra khác nhau về phần cuối của tài liệu. Tất cả các giải pháp ngoài kia đều cho rằng đó là một tài liệu thông thường, không có thẻ và mã, chẳng hạn như:

Do Until ActiveDocument.Bookmarks("\Sel") = ActiveDocument.Bookmarks("\EndOfDoc")
    '(Do something)
Loop

thất bại


Sub looper () 'một ví dụ về vba thất bại của tôi: Với ActiveDocument.Content.Find Do While .Execute (Forward: = True, Format: = True) = True Selection.MoveLeft Unit: = wdCell Lựa chọn Đơn vị .MoveLeft: = wdCell Application.Run MacroName: = "FixPar Đoạn2" Kết thúc vòng lặp với kết thúc phụ
chris G

Xin chào Chris! Chào mừng đến với Siêu người dùng. Vui lòng chỉnh sửa bài viết của bạn để bao gồm thông tin bổ sung. Sẽ thật tuyệt nếu bạn có thể kiểm tra trợ giúp định dạng của chúng tôi và sử dụng viết hoa đúng. Cảm ơn bạn!
slhck

Câu trả lời:


2

Bạn có thể lặp qua các hàng và ô của một bảng theo chương trình mà không cần lập bảng cho từng ô:

Sub ProcessScriptTable()
  Dim oTbl As Table
  Set oTbl = ActiveDocument.Tables(1)

  For Each oRow In oTbl.Rows
    Set oCell = oRow.Cells(3)

    'Do something with each cell
    MsgBox oCell.Range.Text
  Next

End Sub

Tôi đã thử giải pháp của @ Adam, nhưng nó chỉ hiển thị một hộp thông báo mỗi khi nó truy cập vào một ô trong cột 3 mà không thực sự thực hiện các bước trong macro dựng sẵn của tôi. Nó không làm gì với tế bào. Đây là macro khi nó đứng: Sub Descriptive_3 () Dim oTbl As Table Set oTbl = ActiveDocument.Tables (1) For Each oRow In oTbl.Rows Set oCell = oRow.Cells (3) 'macro dựng sẵn hoạt động như một macro độc lập cắt tỉa câu như tôi cần. chạy Application.Run MacroName: = "FixPar Đoạn" MsgBox oCell.Range.Text Tiếp theo Kết thúc phụ
chris G

@Chris, bạn có gặp khó khăn khi tích hợp macro hiện có với mã trên không? Nếu vậy, xin vui lòng chỉnh sửa bài viết của bạn với macro của bạn và chúng tôi có thể giúp đỡ.
Adam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.