Excel VBA質問箱 IV

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

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


17432 / 76732 ←次へ | 前へ→

【64753】Re:特定のセルを対象から外して連番を振る方法
回答  kei  - 10/3/11(木) 22:00 -

引用なし
パスワード
   ▼初心者 さん:
わたしも初心者です。^^
記述されている Sub Test() を実行すると、空白セルまで連番が振られますので条件を否定します。。

1.空白セルは空白とする。
2.グレイのセル ColorIndex = 15 は、連番を振らずにそのままにする。
3.見出しが入ったセル (A1 のみかしら?)は、そのままにする。

せっかく配列が記述してありましたので、改造に取り組みましたが、、、
配列を吐き出すと、空白セルに "0" が表示されます。><
一応配列の改造分です。。

Sub Test()
 Dim i As Long
 Dim f As Long
 Dim Lrow As Long
 Dim myNo() As Long
 With Worksheets("Sheet1")
    Lrow = .Range("A" & CStr(Rows.Count)).End(xlUp).Row - 1
    If Lrow = 1 Then Exit Sub
    ReDim myNo(1 To Lrow, 1 To 1)
    i = 1
    For f = i To Lrow
      If Not (Cells(f + 1, 1).Interior.ColorIndex = 15 Or Cells(f + 1, 1).Value = "") Then
        myNo(f, 1) = i
       i = i + 1
      ElseIf Cells(f + 1, 1).Value = "" Then
        myNo(f, 1) = Empty '← ここの表現が悪いのかしら?
      Else
        myNo(f, 1) = Cells(f + 1, 1)
      End If
    Next
    .Range("A2:A" & CStr(Lrow) + 1).Value = myNo
 End With
End Sub

上から順番にセルを判定して連番を振るしか対応しきれず、For Each Next で作成しました。

Sub Test2()
  Dim i As Long
  Dim Lrow As Long
  Dim myRange As Range
  Dim c As Range
  
  Lrow = Range("A" & Rows.Count).End(xlUp).Row
  Set myRange = Range("A2", Range("A" & Rows.Count).End(xlUp))
  For Each c In myRange
    With c
      If Not (.Interior.ColorIndex = 15 Or .Value = "") Then
        .Value = i + 1
        i = i + 1
      End If
    End With
  Next
End Sub

見出しの入ったセルは、A1 セルだけでしょうか?
他にあれば、見出しの特徴はなにかしら?

0 hits

【64748】特定のセルを対象から外して連番を振る方法 初心者 10/3/11(木) 16:39 質問
【64753】Re:特定のセルを対象から外して連番を振る... kei 10/3/11(木) 22:00 回答
【64755】Re:特定のセルを対象から外して連番を振る... みかこ 10/3/12(金) 10:50 質問
【64757】Re:特定のセルを対象から外して連番を振る... kei 10/3/12(金) 11:04 発言
【64758】Re:特定のセルを対象から外して連番を振る... みかこ 10/3/12(金) 11:10 お礼

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