2017-08-16 13 views
0

セルの範囲を自動的に取り、テーブルにフォーマットするマクロを作成しました。テーブル名が存在する場合、テーブル名(VBA)を変更する

デフォルトのテーブル名は「Table11」に設定されていますが、Table11はブック内に1つしか存在しないため、マクロを複数回実行するとエラーが発生します。

"table11が存在する場合は、その名前をtable12に変更する"のようにコードを変更する方法はありますか?

新しいテーブル名が呼び出されたのは本当に気にしませんが、必要に応じてコードを頻繁に使用したいので、table11が既に使用されている場合はtable12という名前を付けてください。表12は、すでに使用されている場合など、表13を使用して...ここで

が私のコードです:

Sub formatMacro() 
Application.ScreenUpdating = False 

ActiveCell.CurrentRegion.Select 
ActiveSheet.ListObjects.Add(xlSrcRange, Selection, , xlYes).Name = "Table11" 
Range("Table11[#All]").Select 
ActiveSheet.ListObjects("Table11").TableStyle = "TableStyleLight9" 
     With Selection 
     .HorizontalAlignment = xlCenter 
     .WrapText = False 
     .Orientation = 0 
     .AddIndent = False 
     .IndentLevel = 0 
     .ShrinkToFit = False 
     .ReadingOrder = xlContext 
     .MergeCells = False 
    End With 
ActiveSheet.ListObjects("Table11").ShowTableStyleColumnStripes = True 
    Selection.Columns.AutoFit 
    Selection.Rows.AutoFit 
Application.ScreenUpdating = True 

End Sub 

答えて

4

テーブルに名前を付ける必要はありません。新しく追加されたテーブルで作業する場合は、With ActiveSheet.ListObjects.Add(...)を使用してください。

enter image description here


Sub CreateAndFormatTable() 
    Application.ScreenUpdating = False 

    With ActiveSheet.ListObjects.Add(xlSrcRange, ActiveCell.CurrentRegion, , xlYes) 

     .TableStyle = "TableStyleLight9" 
     With .Range 
      .HorizontalAlignment = xlCenter 
      .WrapText = False 
      .Orientation = 0 
      .AddIndent = False 
      .IndentLevel = 0 
      .ShrinkToFit = False 
      .ReadingOrder = xlContext 
      .MergeCells = False 
     End With 
     .ShowTableStyleColumnStripes = True 
     .Range.Columns.AutoFit 
     .Range.Rows.AutoFit 
    End With 

    Application.ScreenUpdating = True 

End Sub 
関連する問題