Word VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


35 / 306 ツリー ←次へ | 前へ→

【498】表の作成で もさ〜ん 06/9/26(火) 15:58 質問[未読]
【507】Re:表の作成で りん 06/10/30(月) 10:39 発言[未読]
【508】Re:表の作成で りん 06/10/30(月) 10:41 発言[未読]
【782】Re:表の作成で マナ 13/6/2(日) 15:17 発言[未読]

【498】表の作成で
質問  もさ〜ん  - 06/9/26(火) 15:58 -

引用なし
パスワード
   表を作成していて、処理を表が終わりになったら次のページへという事をやりたいんですが、表の終わりがうまく検索できません
今はセルを順番に右にシフトしているんですが、最後のセルから右にシフトするともう一段表ができてしまいます。
私は毎回行の最後のセルになったら次の行は表かどうか?というのをやりたいのですがうまくできないので右にカーソル移動して文字が入っているかチェックすることでやろうと思ったんです。今度は何も入っていないところが文字列バッファにいれて見ると♀のようなマークになっていてお手上げです。
意味がわかりにくいかもしれなくてごめんなさい・・・

【507】Re:表の作成で
発言  りん E-MAIL  - 06/10/30(月) 10:39 -

引用なし
パスワード
   もさ〜ん さん、おはようございます。

>今はセルを順番に右にシフトしているんですが、最後のセルから右にシフトするともう一段表ができてしまいます。
どういう処理をしてるかわかりませんが、Tableオブジェクトで何とかなりませんか?
(表).Rows.Count、(表).Column.Countで、右下セル位置が判定できます。

【508】Re:表の作成で
発言  りん  - 06/10/30(月) 10:41 -

引用なし
パスワード
   もさ〜ん さん、おはようございます。
一部訂正

(表).Columns.Countでした。

【782】Re:表の作成で
発言  マナ  - 13/6/2(日) 15:17 -

引用なし
パスワード
   質問とは少し違うかも知れませんが、勉強のつもりで、
自分でも使いそうなものを書いてみました。

まずは、りんさんの方法で。

Sub test()
  Dim t As Table
  Dim i As Long, j As Long
  Dim tmp As String
  
  For Each t In ActiveDocument.Tables
    For i = 2 To t.Rows.Count
      For j = 2 To t.Columns.Count
        With t.Cell(i, j).Range
          tmp = Replace(.Text, Chr(13) & Chr(7), "")
          If IsNumeric(tmp) Then
            If Val(tmp) > 100 Then
              .Font.Color = wdColorRed
            End If
          Else
            .Shading.BackgroundPatternColor = wdColorGray20
          End If
        End With
      Next
    Next
  Next

End Sub


他板↓の、んなっとさんの方法で
ht tp://www.moug.net/faq/viewtopic.php?t=65965
今の自分では、こんなの無理。
はやく、いろいろな方法で書けるようになりたいものです。

Sub test2()
  Dim t As Table
  Dim c As Cell
  Dim tmp As String
  
  For Each t In ActiveDocument.Tables
    Set c = t.Cell(1, 1)
    Do Until c Is Nothing
      If c.RowIndex > 1 And c.ColumnIndex > 1 Then
        With c.Range
          tmp = Replace(.Text, Chr(13) & Chr(7), "")
          If IsNumeric(tmp) Then
            If Val(tmp) > 100 Then
              .Font.Color = wdColorRed
            End If
          Else
            .Shading.BackgroundPatternColor = wdColorGray20
          End If
        End With
      End If
      Set c = c.Next
    Loop
  Next

End Sub

35 / 306 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
206491
(SS)C-BOARD v3.8 is Free