Page 241 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼データの非表示 zzz 02/10/22(火) 10:29 ┣Re:データの非表示 Jaka 02/10/22(火) 12:15 ┗Re:データの非表示 ichinose 02/10/22(火) 12:29 ┗Re:データの非表示 zzz 02/10/22(火) 17:56 ─────────────────────────────────────── ■題名 : データの非表示 ■名前 : zzz ■日付 : 02/10/22(火) 10:29 -------------------------------------------------------------------------
'Module内の全てのSubプロシージャで共通に使用する変数の定義 Dim i課 As String '入力データの課 Dim i部 As String '入力データの部 Dim L1 As Integer 'Sheet1の行カウンタ Dim L2 As Integer 'Sheet2の行カウンタ 〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓 Public Sub 明細の作成(sname As String) Dim i As Integer L2 = L2 + 1 For i = 2 To 14 Sheets(sname).Cells(L2, i - 1) = Sheets("Sheet1").Cells(L1, i) Next i End Sub Sheet1に元となるデータがあります。 そこから条件ごとに各Sheetに貼り付けていくのですが、 貼り付けの途中でデータが↓(鈴木)のように *売上* *取消* *日計* *累計* 件数 数量 金額 ・・・・・・・・・・・・・・・ 佐藤 10 100 1000 ・・・・・・・・・・・・・・・ 鈴木 0 0 0 0 0 0 0 0 0 0 0 0 田中 20 200 2000 ・・・・・・・・・・・・・・・ すべて「0」だったら、そのデータは別Sheetに表示させ ないようにしたい場合、どうしたらいいですか? 教えてください。 |
>Public Sub 明細の作成(sname As String) > Dim i As Integer > L2 = L2 + 1 > For i = 2 To 14 > Sheets(sname).Cells(L2, i - 1) = Sheets("Sheet1").Cells(L1, i) > Next i >End Sub > > Sheet1に元となるデータがあります。 >そこから条件ごとに各Sheetに貼り付けていくのですが、 >貼り付けの途中でデータが↓(鈴木)のように > > *売上* *取消* *日計* *累計* > 件数 数量 金額 ・・・・・・・・・・・・・・・ >佐藤 10 100 1000 ・・・・・・・・・・・・・・・ >鈴木 0 0 0 0 0 0 0 0 0 0 0 0 >田中 20 200 2000 ・・・・・・・・・・・・・・・ > >すべて「0」だったら、そのデータは別Sheetに表示させ >ないようにしたい場合、どうしたらいいですか? >教えてください。 こんにちは。 上記コードでL1の値がどこから入ってくるのかわかりませんが..。 このままだと、まともに動かないと思います。 「表示させない」の意味が良く解りません。 単にコピーしないという意味でしたら、B列〜N列の合計が0だったらコピーしないと言う方法ではダメでしょうか? If Application.Sum(Worksheets("Sheet1").Range("B" & L1 & ":N" & L1)) <> 0 Then L2 = L2 + 1 For i = 2 To 14 Sheets(sname).Cells(L2, i - 1) = Sheets("Sheet1").Cells(L1, i) Next i End If |
▼zzz さん: こんにちは。 >'Module内の全てのSubプロシージャで共通に使用する変数の定義 > >Dim i課 As String '入力データの課 >Dim i部 As String '入力データの部 > >Dim L1 As Integer 'Sheet1の行カウンタ >Dim L2 As Integer 'Sheet2の行カウンタ > >〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓×〓 > >Public Sub 明細の作成(sname As String) > Dim i As Integer with Sheets("Sheet1") if 全部0(.range(.cells(L1,3),.cells(L1,14))) =true then exit sub end if end with > L2 = L2 + 1 > For i = 2 To 14 > Sheets(sname).Cells(L2, i - 1) = Sheets("Sheet1").Cells(L1, i) > Next i ' ループさせなくても、1ステップで書けますよ >End Sub > > Sheet1に元となるデータがあります。 >そこから条件ごとに各Sheetに貼り付けていくのですが、 >貼り付けの途中でデータが↓(鈴木)のように > > *売上* *取消* *日計* *累計* > 件数 数量 金額 ・・・・・・・・・・・・・・・ >佐藤 10 100 1000 ・・・・・・・・・・・・・・・ >鈴木 0 0 0 0 0 0 0 0 0 0 0 0 >田中 20 200 2000 ・・・・・・・・・・・・・・・ > >すべて「0」だったら、そのデータは別Sheetに表示させ >ないようにしたい場合、どうしたらいいですか? >教えてください。 '======================================================================= Function 全部0(rng As Range) As Boolean 全部0 = False If WorksheetFunction.Max(rng) = 0 And WorksheetFunction.Min(rng) = 0 Then 全部0 = True End If End Function L1は、別のプロシジャーでカウントしてるんですよね。 逐次セルの値を調べてもいいのですが、ユーザー関数は、簡単にテストしましたが、 「明細の作成」への挿入コードの位置を間違えてなければいいのですが・・・。 |
Jakaさん、ichinoseさん! お二人に教えていただいた後に早速やってみたところ 無事完成致しました♪ \(^_^ )( ^_^)/ ご協力ありがとうございます。 またわからない事ができた時はぜひ教えて下さい。 |