Excel VBA質問箱 IV

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

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


12779 / 13644 ツリー ←次へ | 前へ→

【8623】罫線を早く引くには… COG 03/10/27(月) 14:57 質問
【8625】Re:罫線を早く引くには… INA 03/10/27(月) 15:28 回答
【8626】Re:罫線を早く引くには… コロスケ 03/10/27(月) 15:51 回答
【8702】Re:罫線を早く引くには… COG 03/10/29(水) 15:59 お礼

【8623】罫線を早く引くには…
質問  COG  - 03/10/27(月) 14:57 -

引用なし
パスワード
   こんにちは?。どなたかお教え下さい。
今、縦項目に当社部門・お客様名 横項目に月の売上表があります。
ここに当社部門計・総合計の行が入っているのですが、
このときに当社部門計・総合計の行の罫線(下)を変更したいのです。

        4月  5月  6月
    顧客A
    顧客B
   東京 小計
    顧客C
   関東 小計
    |
    |
  総合計

一応、自分で考え、下記のように考えてみました。

  Sheets("販売状況").Select
  N1 = 9        'データは9行目から
  Cells(N1, 2).Select  '2列目のデータ(計 の行か判断)で罫線の太さを変える
             'データの最後の判断 ↓
  Do Until (IsNull(Selection.Value) Or Selection.Value = "")
    If Cells(N1, 2).Value = "B" Then
     Range(Cells(N1, 5), Cells(N1, 26)).Select '5〜26列まで罫線
     With Selection.Borders(xlEdgeBottom)
      .Weight = xlThin
     End With
    Else
    End If
   N1 = N1 + 1
   Cells(N1, 2).Select
  Loop

しかし、これだと大量のデータ処理には不向きです。
1行1行、判断し、罫線を引くのではなく、
罫線を引く範囲を配列などで記憶し、一度に罫線を引けば早くなると
聞きましたが、どのように記述したら良いのか分かりません。
どなたか、help me、お助け下さい。

【8625】Re:罫線を早く引くには…
回答  INA  - 03/10/27(月) 15:28 -

引用なし
パスワード
   >このときに当社部門計・総合計の行の罫線(下)を変更したいのです。

ようは対象の行の求め方ですよね?

もしデータの最下行であれば、
A列にデータが入っている場合、
Range("A65536").End(xlup).Row で最下行の行数が求まります。
(一般操作の Ctrl+↑キー)

そうすれば、5〜26列までは、
Dim LastRow As Long
LastRow = Range("A65536").End(xlup).Row
Range(Cells(LastRow,5),Cells(LastRow,26)) で表せます。


もし対象行が最下行でないなら、一般機能の「検索」で総合計のセルにジャンプして
罫線を引けばよいと思います。(マクロの自動記録。Findメソッドの使用)

【8626】Re:罫線を早く引くには…
回答  コロスケ E-MAILWEB  - 03/10/27(月) 15:51 -

引用なし
パスワード
   こんにちは。
当社部門計・総合計はご提示の表の「総合計」の部分ですか?
それとも小計も含むのでしょうか?

一応「計」という文字列がA列に含まれる場合に罫線を引くコードを考えてみました。

Sub Test()
  Dim strSt As String
  Dim Target As Range
  Dim c As Range
  Set Target = Sheets("販売状況").Columns(1)
  Set c = Target.Find("計", LookAt:=xlPart)
  If c Is Nothing Then Exit Sub
  strSt = c.Address
  Do
    With c.Offset(, 4).Resize(, 22).Borders(9)
      .LineStyle = 1
      .Weight = 2
    End With
    Set c = Target.FindNext(c)
  Loop Until c.Address = strSt
  Set Target = Nothing
End Sub

【8702】Re:罫線を早く引くには…
お礼  COG  - 03/10/29(水) 15:59 -

引用なし
パスワード
   こんにちは、INAさん、コロスケさん、お礼が遅れ申し訳ありません。

INAさんへ、説明不足で申し訳ありません。
3,000から5,000行の表に小計・中計・総合計の行がランダムに入っている形です。
そのそれぞれの行に罫線を早く引こうと考えています。

一般機能の「検索」(Find)のマクロ化で記述してみます。

コロスケさんへ、
>当社部門計・総合計はご提示の表の「総合計」の部分ですか?
>それとも小計も含むのでしょうか?
>
>一応「計」という文字列がA列に含まれる場合に罫線を引くコードを考えてみました。
>
ありがとうございます。「計」という文字列が含まれる場合です。

教えて頂いた記述でトライしてみます。
INAさんへのご返事にも書いていますが、非常に縦長の表なので
他に速度UPの方法があれば、ご指摘をお願いします。

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