- ベストアンサー
シートの増減あっても特定セルに連番したい
- Excel2007でマクロを使って、複数のシートで特定セルに連番を付ける方法を教えてください。
- 既存のマクロを改良して、新しく追加したシートにも連番が表示されるようにしたいです。
- 連番を自動的に付けるためのマクロの作り方を教えてください。
- みんなの回答 (3)
- 専門家の回答
関連するQ&A
- 同じセル位置にシートの連番をつけたい
Excel2007でマクロ作成の初心者です。 すべてのシートのR15セルに、シートの順番どおり 1から連番で番号をつけたいです。 途中でシートを削除したときも、即座に新しい連番が表示されるようにしたいです。 どうつくったらいいか、皆目わかりません。よろしくお願いします。 Sub test() Dim i As Integer For i = 1 To (Worksheets.Count - 3) Cells(18, 15) = Worksheets(i) Range("R15").Formula = "="1"" Next i End Sub
- ベストアンサー
- Visual Basic
- シート名変更マクロ
「1」というシートのH4にコピー数を入力し、「1」の後ろに挿入するマクロがあります。できたシートの名前は「1(2)」「1(3)」となってしまいます。このシート名を挿入した数の通し番号(「2」「3」に変更することはできるのでしょうか?挿入するシートの数は決まっていません。 Sub シートのコピー() Dim i As Integer Dim n As Integer n = Worksheets("1").Range("H4").Value For i = 1 To n Worksheets("1").Copy Before:=Worksheets(Sheets.Count) Next i End Sub
- ベストアンサー
- オフィス系ソフト
- ブック内に特定名のシートがある場合
はじめまして、こんにちは。 VBAを最近はじめたばかりの者です。質問が初歩的なもので申し訳ないのですが是非教えてください。 以下を使って、複数ブックの○○というシートから指定セルの内容を抜き出したいと思っています。 ところが、ブックによっては○○というシートが存在しない場合があり、その場合には「インデックスが有効でない」というエラーで動作が止まってしまいます。 ブック内に○○というシートがある場合にのみ動作させるようにするにはどのようにすれば良いのでしょうか。 よろしくお願いします。 Dim wb As Workbook, myRow As Long Dim e As Integer myRow = ThisWorkbook.Worksheets(1).Rows.Count With Application.FileSearch .NewSearch .LookIn = ThisWorkbook.Path .SearchSubFolders = True .FileType = msoFileTypeExcelWorkbooks If .Execute() > 0 Then For i = 1 To .FoundFiles.Count If .FoundFiles(i) <> ThisWorkbook.FullName Then Set wb = Workbooks.Open(.FoundFiles(i), UpdateLinks:=0) Application.ScreenUpdating = False ThisWorkbook.Worksheets(1).Range("A" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F6").Value ThisWorkbook.Worksheets(1).Range("B" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F7").Value ThisWorkbook.Worksheets(1).Range("C" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("F8").Value ThisWorkbook.Worksheets(1).Range("D" & myRow).End(xlUp).Offset(1, 0).Value = _ wb.Worksheets("○○").Range("Y6").Value wb.Close False End If Next i Else MsgBox "ファイルがありません。" End If End With End Sub
- ベストアンサー
- Visual Basic
- Excel VBAシートの同一番地のセルのリスト化
別々のシートの同一番地のセルの値をリスト化するのにこのようなVBAを見つけました。 シートは追加せず、既存のシートを指定したくて、色々と書き換えをチャレンジしましたがうまくいきません。 既存のシートを指定し、この作業を行うにはどうしたらよいのでしょうか? ご教示いただけますと幸甚です。 Sub Test1() Dim TmpSheet As Worksheet, i As Integer i = Worksheets.Count Set TmpSheet = Worksheets.Add(After:=Sheets(Sheets.Count)) With TmpSheet For i = 1 To i .Cells(i, 1).Value = Worksheets(i).Name .Cells(i, 2).Value = Worksheets(i).Range("E5").Value Next End With End Sub
- ベストアンサー
- Excel(エクセル)
- マクロで塗りつぶしセルのカウント
マクロ初心者です。アドバイスをお願いします。以下のマクロですとB列の100行目までの塗りつぶしのセルのカウントは出来るのですが、シート上の全てをカウントしたいのです。1TO 100の100の部分をどう変更したら良いのか教えてください。 Sub セルの色数1() Dim I As Integer Dim Count As Integer Count = 0 For I = 1 To 100 If Cells(I, 2).Interior.ColorIndex <> xlNone Then Count = Count + 1 Next I Range("C1").Value = Count End Sub
- 締切済み
- オフィス系ソフト
- 条件の付いた場合の串刺し集計について教えてください
エクセルでワークシート枚数が適当数あり、各シートのA1には0か1の数値が入っています。 また、各シートのA3からA10までは100以下の数値が入っているとします。 一番左側に空のシートを挿入して、A3からA10までを領域選択し、A1の値が1のシートのみ一番左側のシートに串刺し合計したいので以下のようなマクロを組んだのですが、うまくいきません。どこが悪いのかどなたかご指摘してくださいませんでしょうか? Sub test() Dim i As Integer Dim t As Integer Dim r As Range Worksheets(1).Activate For Each r In Selection For i = 2 To Worksheets.Count Worksheets(i).Activate If Range("A1").Value = 1 Then t = t + r.Value End If Next i Worksheets(1).Activate r.Value = t t = 0 Next r End Sub
- ベストアンサー
- オフィス系ソフト
- EXCELマクロでシート作成&シート名をつける方法
EXCELでセルK列に入力した名称でシートをどんどん作成したいのですが、 下記のようにやってみましたが、うまく実行されません。 2回目の←の部分で、終わってしまいます。 詳しい方、教えてください。 Sub Macro3() Dim neSheet As String Dim fMax As Integer Dim num As Integer Dim i As Integer fMax = Range("B2").Value num = 2 For i = 1 To fMax neSheet = Range("k" & num).Value Worksheets.Add(After:=Worksheets(1)).Name = neSheet ← num = num + 1 Next i End Sub
- ベストアンサー
- オフィス系ソフト
- セルの値でなくセルの関数を参照したい
次のコードでセルI13の値を入力できましたが、 '---------------------- 'Dim i As Integer 'For i = 2 To Worksheets.Count - 6 'With Worksheets(i) '.Range("I13") = Worksheets(1).Range("I13").Value 'End With 'Next セルの値でなく関数を入力しようとして次のコードに修正したらエラーになりました。どこがいけないのでしょうか。 Dim i As Integer For i = 2 To Worksheets.Count - 6 With Worksheets(i) .Range("I13").Formula = "=" & Worksheets(1).Name & "!I13" End With Next
- ベストアンサー
- Visual Basic
- 最後の3枚を除くシート名をセルに表示したい。
Excel2007でマクロ作成の初心者です。 シート名をセルに表示したいのですが、シートの最後の3枚だけは セルに表示したくないです。 以下やってもできませんでした。 Sub シート名をセルに() Dim ws As Worksheet Dim i As Integer Const EXCEPT_NAME = "請求書 経理部 一覧表" i = 0 For Each ws In Worksheets i = i + 1 Cells(i + 3, 4) = ws.Name Next End Sub たとえば、Worksheets.Count -3 の数だけセルに表示するにはどうしたらよいでしょうか。
- ベストアンサー
- Visual Basic
- ThisWorkBookモジュールとSheetモジュールの両立
エクセル2003でマクロを組んでいます。 Sheet1,Sheet2の2つのシートがあり、 片方のシートの"A4:G10"の範囲に値を書き込むと、もう片方の同じ位置に同じ値が書き込まれるようなマクロを組みたいです。 以前ここで教えていただいたものを改変して以下を作りました(ThisWorkBookモジュールです)。 Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim r As Range Dim Num As Integer Dim S As String, Sh_name As String Sh_name = ActiveSheet.Name Set r = Intersect(Target, Range("A4:G10")) If Not (r Is Nothing) Then Application.EnableEvents = False For Num = 1 To 2 S = "Sheet" & Num If S <> Sh_name Then Worksheets(S).Range(r.Address).Value = r.Value End If Next Application.EnableEvents = True End If End Sub ここまでは正常に動作します。 また、 Sheet1とSheet2のモジュールに、 A列のセルに値が入力された場合、同じ行のC列のセルの色を塗るという記述をしています。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then Cells(Target.Row, 3).Interior.ColorIndex = 5 End If End Sub これらを同時に生かしたいのですが、 どのように書けばいいでしょうか。 EnableEvents = False/Trueを消してしまうと、 Worksheets(S).Range(r.Address).Value = r.Valueが実行されるたびにThisWorkBookモジュールが動いているようです。 そして2回目のSet r = Intersect(Target, Range("A4:G10"))でエラーが出ます。 (エラーは出ずとも延々と(無限ではない回数)ThisWorkBookモジュールを繰り返したコードもありました。) よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
お礼
馬鹿な質問に答えていただき申し訳ありません。勘違いでした。 思うとおりできました。ありがとうございました。