A列にB列の空白セル以外のセルの数だけ1から番号をふりたい。
WIN7 Excel2007でマクロ作成中です。A列にB列の番号の入っているセル(空白セル以外の)の数だけ番号を入力したいのですが、下記コードで、うまく出来ません。どうしたらよろしいでしょうか。
Sub 行番号を入れる2()
Dim i As Integer
Dim fCnt As Long
'シートが保護されていたら保護を解除
If ActiveSheet.ProtectContents = True Then
ActiveSheet.Unprotect
End If
fCnt = WorksheetFunction.CountA(Sheets("一覧").Columns(2)) 'COUNTA関数でB列の入力セル数を求める。
For i = 1 To fCnt
Worksheets("一覧").Cells(i + 3, 1).Value = i
Next i
End Sub
No.3ベストアンサー
- 回答日時:
見出し:1行目
データ:2行目~~
'-------------------------------------
Sub test()
Dim R As Long
Dim No As Long
ActiveSheet.Unprotect
For R = 2 To Cells(Rows.Count, "B").End(xlUp).Row
If Cells(R, "B").Value <> "" Then
No = No + 1
Cells(R, "A").Value = No
End If
Next R
ActiveSheet.Protect
End Sub
'---------------------------------------------
Protectの引数は省略。
以上です。
No.2
- 回答日時:
#1です。
すみません、タイトルに書いてありましたね。うまく行かないのは、for文が「B列の番号の入っているセル」までしか回らないこと。
正しくは「B列の番号の入っているセルの行」まで回すこと。
試験してないので、調整が必要かも。
fCnt=Sheets("一覧").Range("B65536").End(xlUp).Row
でもこのままだとB列の最後まで、A列連番が振られるので、連番用変数を追加で宣言し、
IF文でセルBがNULLでない時、1加算して設定すればよいでしょう。
あと、iはlongに変更してくださいね。32768行以降が扱えないから。
Sub 行番号を入れる2()
’インデント(字下げ)明示のため、スペースは全角です。コピペの際は注意
Dim i As long
Dim fCnt As Long
Dim nCount As Long
'シートが保護されていたら保護を解除
If ActiveSheet.ProtectContents = True Then
ActiveSheet.Unprotect
End If
'B列で入力されているセルの最終行を求める。
fCnt=Sheets("一覧").Range("B65536").End(xlUp).Row
nCount = 0
For i = 1 To fCnt
if isnull(Worksheets("一覧").Cells(i + 3, 2)) = false then
nCount = nCount + 1
Worksheets("一覧").Cells(i + 3, 1).Value = nCount
endif
Next i
End Sub
この回答への補足
お手数掛けます。今ご指導いただいたコードを実行しましたが。B列が空白のセルまでナンバーがはいってしまいます。原因を究明中ですが、わかりません。お助けください。
補足日時:2010/06/19 13:43お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Excel(エクセル) 日付で矢印マクロ 4 2023/07/25 16:47
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) Excelにて、シート1の行を削除するとシート2のシート1と同じ番号の行も削除したい 3 2022/05/08 04:24
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Visual Basic(VBA) A列B列C列 3 2023/04/26 18:11
- Visual Basic(VBA) 最終列の右へSUM関数を作成するため下記コードを実行しましたが、最終列「10月28日」が上書きされて 3 2022/12/05 20:32
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルが空白だったら、そ...
-
ExcelVBAを使って、値...
-
VBAでセルをクリックする回...
-
VBからEXCELのセルの値を取得す...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
【Excel】指定したセルの名前で...
-
Sub 要具ライフ() ActiveSheet....
-
任意フォルダから画像をすべて...
-
i=cells(Rows.Count, 1)とi=cel...
-
【VBA】飛び飛びの3セルに"完了...
-
Excel VBAで比較して数値があっ...
-
Excel VBA、 別ブックの最終行...
-
【Excel VBA】指定行以降をクリ...
-
TODAY()で設定したセルの日付...
-
エクセル(Excel) ワイルドカー...
-
EXCELで変数をペーストしたい
-
エクセルVBAで、シート上で結合...
-
ExcelのVBAで数字と文字列をマ...
-
VBAの計算で@が出てしまう件
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
【Excel VBA】指定行以降をクリ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel】指定したセルの名前で...
-
Excelで指定した日付から過去の...
-
特定の文字を条件に行挿入とそ...
-
Excel VBA、 別ブックの最終行...
-
EXCELで変数をペーストしたい
-
Excelのプルダウンで2列分の情...
-
Excel vbaで特定の文字以外が入...
-
TODAY()で設定したセルの日付...
-
screenupdatingが機能しなくて...
-
DataGridViewの各セル幅を自由...
-
Sub 要具ライフ() ActiveSheet....
-
【EXCEL VBA】Range("A:A").Fi...
-
VBAを使用した時間管理
-
VBAでセルをクリックする回...
-
セル色なしの行一括削除
-
エクセルVBAでコピーして順...
おすすめ情報