過去ログ

                                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に表示させ
ないようにしたい場合、どうしたらいいですか?
教えてください。
 ───────────────────────────────────────  ■題名 : Re:データの非表示  ■名前 : Jaka  ■日付 : 02/10/22(火) 12:15  -------------------------------------------------------------------------
   >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
 ───────────────────────────────────────  ■題名 : Re:データの非表示  ■名前 : ichinose  ■日付 : 02/10/22(火) 12:29  -------------------------------------------------------------------------
   ▼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は、別のプロシジャーでカウントしてるんですよね。
逐次セルの値を調べてもいいのですが、ユーザー関数は、簡単にテストしましたが、
「明細の作成」への挿入コードの位置を間違えてなければいいのですが・・・。
 ───────────────────────────────────────  ■題名 : Re:データの非表示  ■名前 : zzz  ■日付 : 02/10/22(火) 17:56  -------------------------------------------------------------------------
   Jakaさん、ichinoseさん!
お二人に教えていただいた後に早速やってみたところ
無事完成致しました♪
\(^_^ )( ^_^)/ ご協力ありがとうございます。

またわからない事ができた時はぜひ教えて下さい。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 241