配列に使うArry関数について
winXP Excel2003でマクロ作成している初心者です。
1)指定した4個のシート以外を選択するコードを教えていただきました。
これを利用して
list = Array("AAA会社", "BBB会社", "CCC会社", "DDD会社", "EEE会社", ・・以下略") の
部分を手修正でなく、追加削除にも対応できるように指定シート以外を選択したいのですがうまくいきません。
どうかお助けください。
ーーーーーーーーーーーーーーーーーーーーーーーーーーー
教えていただいたコード
Sub 請求書入力()
' // 処理を除外するシート名リスト
Const EXCEPT_NAME = "集計用 印刷用 リンク用 会社見本"
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
If InStr(EXCEPT_NAME, sh.Name) = 0 Then
sh.Activate
Call 請求書作成用部品
End If
Next
End Sub
ーーーーーーーーーーーーーーーーーーーーーーーーーー
現在のマクロコード
Sub 請求一覧表作成()
Application.ScreenUpdating = False
ChDrive ThisWorkbook.Path
ChDir ThisWorkbook.Path
Call BookOpen("請求書入力.xls")
Dim list, SheetName
Sheets("請求一覧表").Select
Range("A4:U15").Select
Selection.ClearContents
Range("A4").Select
list = Array("AAA会社", "BBB会社", "CCC会社", "DDD会社", "EEE会社", ・・以下略")
↑この部分はシートの追加・削除の度に手修正している。
For Each SheetName In list
Sheets(SheetName).Activate
Call 配列
Next
Worksheets("請求一覧表").Activate
ActiveSheet.Protect
End Sub
ーーーーーーーーーーーーーーーーーーーーーーー
Sub 配列()
With ActiveSheet
' 配列に格納 --
Dim i As Integer
Dim LastRow As Long
Dim SaleAry As Variant
' 配列に格納 --
SaleAry = Array(.Range("C8"), .Range("D13"), .ange("T30")・・・以下略))
End With
' 転記 ---
With Worksheets("請求一覧表")
LastRow = .Range("A65536").End(xlUp).Row
For i = 0 To UBound(SaleAry)
.Cells(LastRow + 1, i + 1).Value = SaleAry(i)
Next i
End With
Set SaleAry = Nothing
End Sub
お礼
回答ありがとうございます。 Indexプロパティというのがあるのですね! これは使えます! ありがとうございました!