Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12353 / 13646 ツリー ←次へ | 前へ→

【10751】findについて hisao 04/2/12(木) 10:16 質問
【10758】Re:findについて こうちゃん 04/2/12(木) 15:02 回答
【10760】Re:findについて Jaka 04/2/12(木) 15:26 発言
【10761】Re:findについて hisao 04/2/12(木) 15:41 回答
【10956】Re:findについて hisao 04/2/19(木) 16:15 質問
【10957】Re:findについて こうちゃん 04/2/19(木) 16:31 回答
【10962】Re:findについて hisao 04/2/19(木) 17:36 お礼

【10751】findについて
質問  hisao E-MAIL  - 04/2/12(木) 10:16 -

引用なし
パスワード
   ちょっと面倒ですが 教えて貰えないでしょうか
工番pを入力して 4つのピボットテーブルから工番分の詳細を表示させたいのですが 該当工番がない場合には error処理で次のピボットテーブルの抽出に移るようにしました。ところが4番目”昨年原価2"の段階で 該当工番がない場合にはon error goto 終わりとしているに拘わらず 何故かerrorが出て脱出できません。構文の誤りをお教え下さい。


Sub 工番集計()
p = InputBox("工番を入力して下さい")

'原価集計から抽出

Sheets("原価集計").Select
a = Range("A2500").End(xlUp).Row
b = Range("HA2").End(xlToLeft).Column
Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
Range("KOUBAN").Select
On Error GoTo zenkouban
  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
ActiveCell.Offset(0, b - 1).Select
Selection.ShowDetail = True
Q = ActiveSheet.Name
L = Range("a50000").End(xlUp).Row
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C1", _
    TableName:="ピボットテーブル2"
Sheets("原価計算").Select
' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("仕入先")
    .Orientation = xlRowField
    .Position = 1
  End With
  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("税抜金額")
    .Orientation = xlDataField
    .Position = 1
    .Function = xlSum
  End With
 Sheets(Q).Select
ActiveWindow.SelectedSheets.Delete

'昨年原価からの抽出

zenkouban:
Sheets("昨年原価").Select
a = Range("A2500").End(xlUp).Row
b = Range("HA2").End(xlToLeft).Column
Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
Range("zenKOUBAN").Select

On Error GoTo 注文台帳
  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
ActiveCell.Offset(0, b - 1).Select
Selection.ShowDetail = True
r = ActiveSheet.Name
L = Range("a50000").End(xlUp).Row
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    r & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C3", _
    TableName:="ピボットテーブル3"

Sheets("原価計算").Select
' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("仕入先")
    .Orientation = xlRowField
    .Position = 1
  End With
  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("税抜金額")
    .Orientation = xlDataField
    .Position = 1
    .Function = xlSum
  End With
 Sheets(r).Select
ActiveWindow.SelectedSheets.Delete

'注文台帳からの抽出

注文台帳:
Sheets("原価集計2").Select

a = Range("A2500").End(xlUp).Row
b = Range("HA2").End(xlToLeft).Column
Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
Range("KOUBAN").Select
On Error GoTo 前注文
  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
ActiveCell.Offset(0, b - 1).Select
Selection.ShowDetail = True
Q = ActiveSheet.Name
L = Range("a50000").End(xlUp).Row
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C6", _
    TableName:="ピボットテーブル4"
Sheets("原価計算").Select
' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("発注先")
    .Orientation = xlRowField
    .Position = 1
  End With
  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額")
    .Orientation = xlDataField
    .Position = 1
    .Function = xlSum
  End With
 Sheets(Q).Select
ActiveWindow.SelectedSheets.Delete

'昨年原価2からの抽出

前注文:
Sheets("昨年原価2").Select
a = Range("A2500").End(xlUp).Row
b = Range("HA2").End(xlToLeft).Column
Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
Range("zenKOUBAN").Select

On Error GoTo 終わり


  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
    False).Activate
ActiveCell.Offset(0, b - 1).Select
Selection.ShowDetail = True
r = ActiveSheet.Name
L = Range("a50000").End(xlUp).Row
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
    r & "!R1c1:R" & L & "C27").CreatePivotTable TableDestination:="原価計算!r40C8", _
    TableName:="ピボットテーブル5"
Sheets("原価計算").Select
' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("発注先")
    .Orientation = xlRowField
    .Position = 1
  End With
  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("金額")
    .Orientation = xlDataField
    .Position = 1
    .Function = xlSum
  End With
 Sheets(r).Select
ActiveWindow.SelectedSheets.Delete
Sheets("原価計算").Select
Cells.Select
 
  Selection.Columns.AutoFit
 
終わり:

End Sub

【10758】Re:findについて
回答  こうちゃん E-MAIL  - 04/2/12(木) 15:02 -

引用なし
パスワード
   hisaoさん、こんにちは

レスがつかないようなので・・

>何故かerrorが出て脱出できません。構文の誤りをお教え下さい。
On Error GoToで飛んだ先(エラー処理ルーチン)でさらにエラーが発生すると正常にGoTo処理されません。

このような処理の場合通常はモジュールの先頭で

On Error Resume Next

を記載しておいて、Err.Numberにより処理を分岐します。
例えばこんな感じ・・
ただしエラーナンバーは発生する可能性のあるものを定義してください。
ここでは、「オブジェクト変数または With ブロック変数が設定されていません。」エラーを想定して例示しています。
また、GoToもできれば使用しないほうがいいと思いますので、その点は再考をお勧めします。

#ラベルに日本語は好ましくないように思いますがいかがでしょうか?>諸氏


>Sub 工番集計()

On Error Resume Next

>p = InputBox("工番を入力して下さい")
>
>'原価集計から抽出
>
>Sheets("原価集計").Select
>a = Range("A2500").End(xlUp).Row
>b = Range("HA2").End(xlToLeft).Column
>Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
>Range("KOUBAN").Select
'On Error GoTo zenkouban この行は削除
>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>    False).Activate

If Err.Number=91 Then
 GoTo zenkouban
End If

>ActiveCell.Offset(0, b - 1).Select
>Selection.ShowDetail = True
>Q = ActiveSheet.Name
>L = Range("a50000").End(xlUp).Row
>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C1", _
>    TableName:="ピボットテーブル2"
>Sheets("原価計算").Select
>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("仕入先")
>    .Orientation = xlRowField
>    .Position = 1
>  End With
>  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("税抜金額")
>    .Orientation = xlDataField
>    .Position = 1
>    .Function = xlSum
>  End With
> Sheets(Q).Select
>ActiveWindow.SelectedSheets.Delete
>
>'昨年原価からの抽出
>
>zenkouban:
>Sheets("昨年原価").Select
>a = Range("A2500").End(xlUp).Row
>b = Range("HA2").End(xlToLeft).Column
>Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
>Range("zenKOUBAN").Select
>
'On Error GoTo 注文台帳
>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>    False).Activate
If Err.Number=91 Then
 GoTo 注文台帳
End If
>ActiveCell.Offset(0, b - 1).Select
>Selection.ShowDetail = True
>r = ActiveSheet.Name
>L = Range("a50000").End(xlUp).Row
>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>    r & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C3", _
>    TableName:="ピボットテーブル3"
>
>Sheets("原価計算").Select
>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("仕入先")
>    .Orientation = xlRowField
>    .Position = 1
>  End With
>  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("税抜金額")
>    .Orientation = xlDataField
>    .Position = 1
>    .Function = xlSum
>  End With
> Sheets(r).Select
>ActiveWindow.SelectedSheets.Delete
>
>'注文台帳からの抽出
>
>注文台帳:
>Sheets("原価集計2").Select
>
>a = Range("A2500").End(xlUp).Row
>b = Range("HA2").End(xlToLeft).Column
>Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
>Range("KOUBAN").Select
'On Error GoTo 前注文
>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>    False).Activate
If Err.Number=91 Then
 GoTo 前注文
End If
>ActiveCell.Offset(0, b - 1).Select
>Selection.ShowDetail = True
>Q = ActiveSheet.Name
>L = Range("a50000").End(xlUp).Row
>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C6", _
>    TableName:="ピボットテーブル4"
>Sheets("原価計算").Select
>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("発注先")
>    .Orientation = xlRowField
>    .Position = 1
>  End With
>  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額")
>    .Orientation = xlDataField
>    .Position = 1
>    .Function = xlSum
>  End With
> Sheets(Q).Select
>ActiveWindow.SelectedSheets.Delete
>
>'昨年原価2からの抽出
>
>前注文:
>Sheets("昨年原価2").Select
>a = Range("A2500").End(xlUp).Row
>b = Range("HA2").End(xlToLeft).Column
>Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
>Range("zenKOUBAN").Select
>
'On Error GoTo 終わり
>
>
>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>    False).Activate
If Err.Number=91 Then
 GoTo 終わり
End If
>ActiveCell.Offset(0, b - 1).Select
>Selection.ShowDetail = True
>r = ActiveSheet.Name
>L = Range("a50000").End(xlUp).Row
>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>    r & "!R1c1:R" & L & "C27").CreatePivotTable TableDestination:="原価計算!r40C8", _
>    TableName:="ピボットテーブル5"
>Sheets("原価計算").Select
>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("発注先")
>    .Orientation = xlRowField
>    .Position = 1
>  End With
>  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("金額")
>    .Orientation = xlDataField
>    .Position = 1
>    .Function = xlSum
>  End With
> Sheets(r).Select
>ActiveWindow.SelectedSheets.Delete
>Sheets("原価計算").Select
>Cells.Select
> 
>  Selection.Columns.AutoFit
> 
>終わり:
>
>End Sub

【10760】Re:findについて
発言  Jaka  - 04/2/12(木) 15:26 -

引用なし
パスワード
   こんにちは。

ピボットテーブルは、全く解らないのでほとんど読んでいませんけど、エラー処理で気になるところが...。

エラーが発生して、分岐後に目的の処理をする前にエラーをクリアしておかないと..。
こんな感じ...。

On Error ペケペケ
エラーだったらクリアして、エラー処理
Err.Clear
エラー処理

On Error ペケペケ

【10761】Re:findについて
回答  hisao E-MAIL  - 04/2/12(木) 15:41 -

引用なし
パスワード
   ▼こうちゃん さん:
有り難うございました。そう言う事だったのですか。
助かりました。

>hisaoさん、こんにちは
>
>レスがつかないようなので・・
>
>>何故かerrorが出て脱出できません。構文の誤りをお教え下さい。
>On Error GoToで飛んだ先(エラー処理ルーチン)でさらにエラーが発生すると正常にGoTo処理されません。
>
>このような処理の場合通常はモジュールの先頭で
>
>On Error Resume Next
>
>を記載しておいて、Err.Numberにより処理を分岐します。
>例えばこんな感じ・・
>ただしエラーナンバーは発生する可能性のあるものを定義してください。
>ここでは、「オブジェクト変数または With ブロック変数が設定されていません。」エラーを想定して例示しています。
>また、GoToもできれば使用しないほうがいいと思いますので、その点は再考をお勧めします。
>
>#ラベルに日本語は好ましくないように思いますがいかがでしょうか?>諸氏
>
>
>>Sub 工番集計()
>
>On Error Resume Next
>
>>p = InputBox("工番を入力して下さい")
>>
>>'原価集計から抽出
>>
>>Sheets("原価集計").Select
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
>>Range("KOUBAN").Select
>'On Error GoTo zenkouban この行は削除
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>
>If Err.Number=91 Then
> GoTo zenkouban
>End If
>
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>Q = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C1", _
>>    TableName:="ピボットテーブル2"
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("仕入先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("税抜金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(Q).Select
>>ActiveWindow.SelectedSheets.Delete
>>
>>'昨年原価からの抽出
>>
>>zenkouban:
>>Sheets("昨年原価").Select
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
>>Range("zenKOUBAN").Select
>>
>'On Error GoTo 注文台帳
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>If Err.Number=91 Then
> GoTo 注文台帳
>End If
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>r = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    r & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C3", _
>>    TableName:="ピボットテーブル3"
>>
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("仕入先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("税抜金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(r).Select
>>ActiveWindow.SelectedSheets.Delete
>>
>>'注文台帳からの抽出
>>
>>注文台帳:
>>Sheets("原価集計2").Select
>>
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
>>Range("KOUBAN").Select
>'On Error GoTo 前注文
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>If Err.Number=91 Then
> GoTo 前注文
>End If
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>Q = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C6", _
>>    TableName:="ピボットテーブル4"
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("発注先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(Q).Select
>>ActiveWindow.SelectedSheets.Delete
>>
>>'昨年原価2からの抽出
>>
>>前注文:
>>Sheets("昨年原価2").Select
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
>>Range("zenKOUBAN").Select
>>
>'On Error GoTo 終わり
>>
>>
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>If Err.Number=91 Then
> GoTo 終わり
>End If
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>r = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    r & "!R1c1:R" & L & "C27").CreatePivotTable TableDestination:="原価計算!r40C8", _
>>    TableName:="ピボットテーブル5"
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("発注先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(r).Select
>>ActiveWindow.SelectedSheets.Delete
>>Sheets("原価計算").Select
>>Cells.Select
>> 
>>  Selection.Columns.AutoFit
>> 
>>終わり:
>>
>>End Sub

【10956】Re:findについて
質問  hisao E-MAIL  - 04/2/19(木) 16:15 -

引用なし
パスワード
   ▼こうちゃん さん:
すみません。ご教示に従いうまく行くように思ったのですが
何故か If Err.Number=91 Then を使うと
2の処理でerrorすると 3の処理が errorでないのに error として 4の処理に飛んでしまいます。on error goto だと 2回目のerrorでは 前に申しましたように マクロが中断されてしまいます。find処理を find 出来ないときにも 無事に4回行う方法は無いでしょうか?


>hisaoさん、こんにちは
>
>レスがつかないようなので・・
>
>>何故かerrorが出て脱出できません。構文の誤りをお教え下さい。
>On Error GoToで飛んだ先(エラー処理ルーチン)でさらにエラーが発生すると正常にGoTo処理されません。
>
>このような処理の場合通常はモジュールの先頭で
>
>On Error Resume Next
>
>を記載しておいて、Err.Numberにより処理を分岐します。
>例えばこんな感じ・・
>ただしエラーナンバーは発生する可能性のあるものを定義してください。
>ここでは、「オブジェクト変数または With ブロック変数が設定されていません。」エラーを想定して例示しています。
>また、GoToもできれば使用しないほうがいいと思いますので、その点は再考をお勧めします。
>
>#ラベルに日本語は好ましくないように思いますがいかがでしょうか?>諸氏
>
>
>>Sub 工番集計()
>
>On Error Resume Next
>
>>p = InputBox("工番を入力して下さい")
>>
>>'原価集計から抽出
>>
>>Sheets("原価集計").Select
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
>>Range("KOUBAN").Select
>'On Error GoTo zenkouban この行は削除
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>
>If Err.Number=91 Then
> GoTo zenkouban
>End If
>
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>Q = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C1", _
>>    TableName:="ピボットテーブル2"
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("仕入先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル2").PivotFields("税抜金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(Q).Select
>>ActiveWindow.SelectedSheets.Delete
>>
>>'昨年原価からの抽出
>>
>>zenkouban:
>>Sheets("昨年原価").Select
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
>>Range("zenKOUBAN").Select
>>
>'On Error GoTo 注文台帳
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>If Err.Number=91 Then
> GoTo 注文台帳
>End If
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>r = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    r & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C3", _
>>    TableName:="ピボットテーブル3"
>>
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("仕入先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル3").PivotFields("税抜金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(r).Select
>>ActiveWindow.SelectedSheets.Delete
>>
>>'注文台帳からの抽出
>>
>>注文台帳:
>>Sheets("原価集計2").Select
>>
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "kouban"
>>Range("KOUBAN").Select
>'On Error GoTo 前注文
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>If Err.Number=91 Then
> GoTo 前注文
>End If
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>Q = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    Q & "!R1c1:R" & L & "C19").CreatePivotTable TableDestination:="原価計算!r40C6", _
>>    TableName:="ピボットテーブル4"
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("発注先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル4").PivotFields("金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(Q).Select
>>ActiveWindow.SelectedSheets.Delete
>>
>>'昨年原価2からの抽出
>>
>>前注文:
>>Sheets("昨年原価2").Select
>>a = Range("A2500").End(xlUp).Row
>>b = Range("HA2").End(xlToLeft).Column
>>Range(Cells(1, 1), Cells(a, b)).Name = "zenkouban"
>>Range("zenKOUBAN").Select
>>
>'On Error GoTo 終わり
>>
>>
>>  Selection.FIND(What:=p, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
>>    :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
>>    False).Activate
>If Err.Number=91 Then
> GoTo 終わり
>End If
>>ActiveCell.Offset(0, b - 1).Select
>>Selection.ShowDetail = True
>>r = ActiveSheet.Name
>>L = Range("a50000").End(xlUp).Row
>>ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
>>    r & "!R1c1:R" & L & "C27").CreatePivotTable TableDestination:="原価計算!r40C8", _
>>    TableName:="ピボットテーブル5"
>>Sheets("原価計算").Select
>>' ActiveSheet.PivotTables("ピボットテーブル2").SmallGrid = False
>>  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("発注先")
>>    .Orientation = xlRowField
>>    .Position = 1
>>  End With
>>  With ActiveSheet.PivotTables("ピボットテーブル5").PivotFields("金額")
>>    .Orientation = xlDataField
>>    .Position = 1
>>    .Function = xlSum
>>  End With
>> Sheets(r).Select
>>ActiveWindow.SelectedSheets.Delete
>>Sheets("原価計算").Select
>>Cells.Select
>> 
>>  Selection.Columns.AutoFit
>> 
>>終わり:
>>
>>End Sub

【10957】Re:findについて
回答  こうちゃん E-MAIL  - 04/2/19(木) 16:31 -

引用なし
パスワード
   hisao さん、こんにちは

>▼こうちゃん さん:
>すみません。ご教示に従いうまく行くように思ったのですが
>何故か If Err.Number=91 Then を使うと
>2の処理でerrorすると 3の処理が errorでないのに error として 4の処理に飛んでしまいます。on error goto だと 2回目のerrorでは 前に申しましたように マクロが中断されてしまいます。find処理を find 出来ないときにも 無事に4回行う方法は無いでしょうか?

Jakaさんが書かれたように、エラーをクリアしましょう。

>>If Err.Number=91 Then
  Err.Clear
>> GoTo 注文台帳
>>End If

#ヘルプで「On Error ステートメント」の例を確認してください。

【10962】Re:findについて
お礼  hisao E-MAIL  - 04/2/19(木) 17:36 -

引用なし
パスワード
   ▼こうちゃん さん:
有り難うございました。jakaさんのご教示を見落としてました。jakaさん ごめんなさい。

>hisao さん、こんにちは
>
>>▼こうちゃん さん:
>>すみません。ご教示に従いうまく行くように思ったのですが
>>何故か If Err.Number=91 Then を使うと
>>2の処理でerrorすると 3の処理が errorでないのに error として 4の処理に飛んでしまいます。on error goto だと 2回目のerrorでは 前に申しましたように マクロが中断されてしまいます。find処理を find 出来ないときにも 無事に4回行う方法は無いでしょうか?
>
>Jakaさんが書かれたように、エラーをクリアしましょう。
>
>>>If Err.Number=91 Then
>  Err.Clear
>>> GoTo 注文台帳
>>>End If
>
>#ヘルプで「On Error ステートメント」の例を確認してください。

12353 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free