Excel VBA質問箱 IV

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

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


62312 / 76738 ←次へ | 前へ→

【19033】Re:非表示部分の連番の付け方
回答  ichinose  - 04/10/19(火) 23:14 -

引用なし
パスワード
   ▼YN61 さん:
こんばんは。


>行の部分的な非表示の時、表示行にのみ連番をつけ直す方法について教えて下さい。
>
>具体的には
>
>No. 氏名  住所
>1   A
>2   C
>4   E
>6   G
>
>3行目と5行目が現在非表示です。
>
>非表示の状態でそのまま、表示されたNo.の行に連番の付け直しをする方法を教えてください。
>連番を付け直した結果として下のような状態に仕上げたいのです。
>
>No. 氏名  住所
>1  A
>2  C
>3  E
>4  G
>
>最終的にはVBAに反映させたく思います。
ご提示された例のような表を対象として、以下のコードを試してみて下さい。
'============================================================
Sub test()
  Dim wk() As Variant
  Dim carea As Range
  Dim v_area As Areas
  Dim rng As Range
  Set rng = Range("b2", Cells(Rows.Count, 2).End(xlUp))
'   ↑B列を基準にして連番設定セル範囲を取得する
  If rng.Row = 1 Then '何も入力されていない
   Exit Sub
   End If
  With rng.Offset(0, -1)
   If .Count = 1 Then '取得セル範囲が一つだけのとき
    .Value = 1
   Else '複数のセル範囲の場合
    On Error Resume Next
    Set v_area = .SpecialCells(xlCellTypeVisible).Areas
'       ↑ 表示されている範囲をエリアとして取得
    If Err.Number <> 0 Then Exit Sub
    For Each carea In v_area
      If carea.Count > 1 Then '一つのエリア内に複数のセル範囲がある
       Erase wk()
       wk() = carea.Value
       For idx = LBound(wk) To UBound(wk)
         wk(idx, 1) = i + 1
         i = i + 1
         Next idx
       carea.Value = wk()
      Else '一つのエリア内に一つしかセルがない
       carea.Value = i + 1
       i = i + 1
       End If
      Next
    End If
   End With
End Sub

B列(氏名列)の入力されたセル範囲を連番設定対象としています。

0 hits

【19029】非表示部分の連番の付け方 YN61 04/10/19(火) 19:55 質問
【19033】Re:非表示部分の連番の付け方 ichinose 04/10/19(火) 23:14 回答
【19072】Re:非表示部分の連番の付け方 YN61 04/10/20(水) 20:33 お礼
【19039】Re:非表示部分の連番の付け方 Asaki 04/10/19(火) 23:59 回答
【19071】Re:非表示部分の連番の付け方 YN61 04/10/20(水) 20:30 質問
【19122】Re:非表示部分の連番の付け方 Asaki 04/10/22(金) 10:10 回答
【19133】Re:非表示部分の連番の付け方 bykin 04/10/22(金) 22:35 発言
【19148】Re:非表示部分の連番の付け方 Asaki 04/10/23(土) 11:40 発言
【19153】Re:非表示部分の連番の付け方 bykin 04/10/23(土) 19:53 発言
【19195】Re:非表示部分の連番の付け方 YN61 04/10/24(日) 23:11 お礼
【19313】Re:非表示部分の連番の付け方 YN61 04/10/28(木) 6:38 質問
【19347】Re:非表示部分の連番の付け方 bykin 04/10/28(木) 20:04 回答
【19505】Re:非表示部分の連番の付け方 YN61 04/11/5(金) 21:11 お礼
【19056】Re:非表示部分の連番の付け方 bykin 04/10/20(水) 12:24 回答
【19073】Re:非表示部分の連番の付け方 YN61 04/10/20(水) 20:37 お礼

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