|
▼よろずや さん:
すみません。
ちょっとコードが大きくて書きにくいのでお返事が遅れていました。
Sheets("借集計").Select
Cells.Select
Selection.Clear
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"仕訳日記帳!R2C1:R" & y & "c11").CreatePivotTable TableDestination:=Range("A1"), _
TableName:="ピボットテーブル4"
ActiveSheet.PivotTables("ピボットテーブル4").SmallGrid = False
With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("借")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("月")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("借方金額")
.Orientation = xlDataField
.Position = 1
.Function = xlSum
End With
ActiveSheet.PivotTables("ピボットテーブル4").PivotSelect "", xlDataAndLabel
Selection.Name = "借"
Selection.Rows("2:2").Select
Selection.Name = "借行"
ActiveSheet.PivotTables("ピボットテーブル4").PivotSelect "", xlDataAndLabel
Selection.Columns("a:a").Select
Selection.Name = "借列"
を実行して ”損益表”及び”貸借表”シートにあらかじめ入れていた
=IF(ISERROR(INDEX(借,MATCH($B39,借列,0),MATCH(F$2,借行,0))),0,INDEX(借,MATCH($B39,借列,0),MATCH(F$2,借行,0)))
の値を出そうとしましたが
ピボットテーブルの名前の範囲が変わっても”損益表”シートの関数で表示される
名前の範囲が変わりません。
そこで
Sheets("損益表").Select
Sheets("損益表").Unprotect
ActiveWorkbook.Names.Add Name:="借", RefersToR1C1:="=借集計!借"
ActiveWorkbook.Names.Add Name:="借列", RefersToR1C1:="=借集計!借列"
ActiveWorkbook.Names.Add Name:="借行", RefersToR1C1:="=借集計!借行"
ActiveWorkbook.Names.Add Name:="貸", RefersToR1C1:="=貸集計!貸"
ActiveWorkbook.Names.Add Name:="貸列", RefersToR1C1:="=貸集計!貸列"
ActiveWorkbook.Names.Add Name:="貸行", RefersToR1C1:="=貸集計!貸行"
をモジュールの最後に入れて名前を付け直したらうまく行ったのですが
その後
Sheets("貸借表").Select
Sheets("貸借表").Unprotect
ActiveWorkbook.Names.Add Name:="借", RefersToR1C1:="=借集計!借"
ActiveWorkbook.Names.Add Name:="借列", RefersToR1C1:="=借集計!借列"
ActiveWorkbook.Names.Add Name:="借行", RefersToR1C1:="=借集計!借行"
ActiveWorkbook.Names.Add Name:="貸", RefersToR1C1:="=貸集計!貸"
ActiveWorkbook.Names.Add Name:="貸列", RefersToR1C1:="=貸集計!貸列"
ActiveWorkbook.Names.Add Name:="貸行", RefersToR1C1:="=貸集計!貸行"
と入れると 今度は名前の範囲が 何かとんでもないことになりました。
説明がわかり難いかもしれませんが
selection.name
とか activeworkbook.names の使い方 protectの張り方などお教え頂ければ
有りがたいです。
>▼hisao さん:
>>教えてください。
>>sheet1に vbaでピボットテーブルを作成、テーブルに名前"T"を付け
>>更にA columnに名前をcolumns("a:a").select
>>selection.name="A"としました。
>>別シート sheet2 にmatch関数 =match(T,A,0)を取ろうとしたのですが
>>ピボットテーブルを再作成して、上記vbaで名前の範囲が変わっても"A"の範囲が変わりません。sheet2から 名前"A"を呼び出しても前のままなので、範囲が広くなっている場合にmatch関数が取れません。
>>ちなみに sheet1で名前"A"を選択すると変わっているのですが
>>何かvba記述の方法が悪いのでしょうか。良い方法を教えてください。
>
>実際のコードを提示してください。
|
|