Excel VBA質問箱 IV

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

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


1282 / 13645 ツリー ←次へ | 前へ→

【75273】Scripting.Dictionaryで色の判定について 初心者 14/1/28(火) 12:00 質問[未読]
【75274】Re:Scripting.Dictionaryで色の判定について ウッシ 14/1/28(火) 17:20 回答[未読]
【75277】Re:Scripting.Dictionaryで色の判定について 初心者 14/1/29(水) 11:36 質問[未読]
【75278】Re:Scripting.Dictionaryで色の判定について ウッシ 14/1/29(水) 11:41 回答[未読]
【75279】Re:Scripting.Dictionaryで色の判定について 初心者 14/1/29(水) 18:14 質問[未読]
【75280】Re:Scripting.Dictionaryで色の判定について ウッシ 14/1/29(水) 19:45 回答[未読]
【75281】Re:Scripting.Dictionaryで色の判定について kanabun 14/1/30(木) 11:24 発言[未読]

【75273】Scripting.Dictionaryで色の判定について
質問  初心者  - 14/1/28(火) 12:00 -

引用なし
パスワード
   教えてください。

あるシートの項目をキーにScripting.Dictionaryを利用して
集計処理しています。

このScripting.Dictionaryの処理の途中でセルの色の判定は
できるのか教えてください。

  '●別シートに集計内容出力(部課計)

  Dim vnt, A
  Dim dic As Object
  
  '
  With Sheets("作業")
    vnt = .Range("Z2", .Range("A65536").End(xlUp)).Value
  End With
  '
  Set dic = CreateObject("Scripting.Dictionary")
  For i = 1 To UBound(vnt, 1)
    If Not dic.exists(vnt(i, 9)) Then
      ReDim A(11)
      A(0) = vnt(i, 9)
      ''a(2) = vnt(i, 18)
      A(4) = vnt(i, 4)
      A(7) = vnt(i, 22)
      A(8) = wk2
      A(9) = wk3
    Else
    
    
    A = dic(vnt(i, 9))
    
    End If
    
    A(1) = A(1) + vnt(i, 17)
    A(3) = A(3) + vnt(i, 19)
    A(5) = A(5) + vnt(i, 20)
    A(6) = A(6) + vnt(i, 21)
    
    '★ここの箇所のように色の条件付けをしたい。'
    If vnt(i, 12).Interior.Color <> 15773696 Then
    
      A(2) = A(2) + vnt(i, 12)
    End If
    '===============================================
        
    dic(vnt(i, 9)) = A
  Next i
  
  '-----結果出力
  With Sheets("作業2")
    .Cells.ClearContents
    .Range("A1").Resize(, 10).Value = Array("形名略称", "数量", "当社計上額", "金額", "注文番号", "税額", "税込金額", "部課", "コメント", "担当者コード", "当社計上金額")
    .Range("A2").Resize(dic.Count, 10).Value = Application _
          .Transpose(Application.Transpose(dic.items))
    .Select
  End With
  '
  Erase vnt
  Set dic = Nothing


(CStr(Cells(i, 16).Interior.Color) <> 15773696

【75274】Re:Scripting.Dictionaryで色の判定につ...
回答  ウッシ  - 14/1/28(火) 17:20 -

引用なし
パスワード
   ▼初心者 さん

こんにちは

Dim vnt As Range として
Set vnt = .Range("Z2", .Range("A65536").End(xlUp))

と変更して試してみるとどうなりますか?


>教えてください。
>
>あるシートの項目をキーにScripting.Dictionaryを利用して
>集計処理しています。
>
>このScripting.Dictionaryの処理の途中でセルの色の判定は
>できるのか教えてください。
>
>  '●別シートに集計内容出力(部課計)
>
>  Dim vnt, A
>  Dim dic As Object
>  
>  '
>  With Sheets("作業")
>    vnt = .Range("Z2", .Range("A65536").End(xlUp)).Value
>  End With
>  '
>  Set dic = CreateObject("Scripting.Dictionary")
>  For i = 1 To UBound(vnt, 1)
>    If Not dic.exists(vnt(i, 9)) Then
>      ReDim A(11)
>      A(0) = vnt(i, 9)
>      ''a(2) = vnt(i, 18)
>      A(4) = vnt(i, 4)
>      A(7) = vnt(i, 22)
>      A(8) = wk2
>      A(9) = wk3
>    Else
>    
>    
>    A = dic(vnt(i, 9))
>    
>    End If
>    
>    A(1) = A(1) + vnt(i, 17)
>    A(3) = A(3) + vnt(i, 19)
>    A(5) = A(5) + vnt(i, 20)
>    A(6) = A(6) + vnt(i, 21)
>    
>    '★ここの箇所のように色の条件付けをしたい。'
>    If vnt(i, 12).Interior.Color <> 15773696 Then
>    
>      A(2) = A(2) + vnt(i, 12)
>    End If
>    '===============================================
>        
>    dic(vnt(i, 9)) = A
>  Next i
>  
>  '-----結果出力
>  With Sheets("作業2")
>    .Cells.ClearContents
>    .Range("A1").Resize(, 10).Value = Array("形名略称", "数量", "当社計上額", "金額", "注文番号", "税額", "税込金額", "部課", "コメント", "担当者コード", "当社計上金額")
>    .Range("A2").Resize(dic.Count, 10).Value = Application _
>          .Transpose(Application.Transpose(dic.items))
>    .Select
>  End With
>  '
>  Erase vnt
>  Set dic = Nothing
>
>
>(CStr(Cells(i, 16).Interior.Color) <> 15773696

【75277】Re:Scripting.Dictionaryで色の判定につ...
質問  初心者  - 14/1/29(水) 11:36 -

引用なし
パスワード
   ▼ウッシ さん:

連絡ありがとうございます。

Dim vnt As Range として
Set vnt = .Range("Z2", .Range("A65536").End(xlUp))

と変更して試してみるとどうなりますか?

試したところ、以下の箇所で配列がありませんと出ます。

For i = 1 To UBound(vnt, 1)


 Dim A
  Dim dic As Object
  
  Dim vnt As Range
  

  Windows("MT第七.xls").Activate
  Sheets("作業").Select
  Range("A1").Select
 
  With Sheets("作業")
   Set vnt = .Range("Z2", .Range("A65536").End(xlUp))
  End With
  
  '
  ''With Sheets("作業")
  ''  vnt = .Range("Z2", .Range("A65536").End(xlUp)).Value
  ''   ''Set vnt = .Range("Z2", .Range("A65536").End(xlUp))
  ''End With
  
  '

【75278】Re:Scripting.Dictionaryで色の判定につ...
回答  ウッシ  - 14/1/29(水) 11:41 -

引用なし
パスワード
   ▼初心者 さん:

こんにちは

UBound(vnt, 1)を、vnt.Rows.Count にしてみて下さい。


>▼ウッシ さん:
>
>連絡ありがとうございます。
>
>Dim vnt As Range として
>Set vnt = .Range("Z2", .Range("A65536").End(xlUp))
>
>と変更して試してみるとどうなりますか?
>
>試したところ、以下の箇所で配列がありませんと出ます。
>
>For i = 1 To UBound(vnt, 1)
>
>
> Dim A
>  Dim dic As Object
>  
>  Dim vnt As Range
>  
>
>  Windows("MT第七.xls").Activate
>  Sheets("作業").Select
>  Range("A1").Select
> 
>  With Sheets("作業")
>   Set vnt = .Range("Z2", .Range("A65536").End(xlUp))
>  End With
>  
>  '
>  ''With Sheets("作業")
>  ''  vnt = .Range("Z2", .Range("A65536").End(xlUp)).Value
>  ''   ''Set vnt = .Range("Z2", .Range("A65536").End(xlUp))
>  ''End With
>  
>  '

【75279】Re:Scripting.Dictionaryで色の判定につ...
質問  初心者  - 14/1/29(水) 18:14 -

引用なし
パスワード
   ▼ウッシ さん:

こんにちは

Erase vntの箇所でエラーがでます。

回避方法教えてください

【75280】Re:Scripting.Dictionaryで色の判定につ...
回答  ウッシ  - 14/1/29(水) 19:45 -

引用なし
パスワード
   ▼初心者 さん:

こんばんは

削除してもあまり影響無いですけど、
Set vnt = Nothing
に置き換えてください。


>▼ウッシ さん:
>
>こんにちは
>
>Erase vntの箇所でエラーがでます。
>
>回避方法教えてください

【75281】Re:Scripting.Dictionaryで色の判定につ...
発言  kanabun  - 14/1/30(木) 11:24 -

引用なし
パスワード
   ▼初心者 さん:

範囲を変数に入れておいて、ColorIndex を調べたらどうでしょ

>  '●別シートに集計内容出力(部課計)
>
   Dim r As Range '●追加
>  Dim vnt, A
>  Dim dic As Object
>  
>  '
>  With Sheets("作業")
    Set r = .Range("Z2", .Range("A65536").End(xlUp))
     vnt = r.Value
>  End With
>  '
>  Set dic = CreateObject("Scripting.Dictionary")
>  For i = 1 To UBound(vnt, 1)
>    If Not dic.exists(vnt(i, 9)) Then
>      ReDim A(11)
>      A(0) = vnt(i, 9)
>      A(4) = vnt(i, 4)
>      A(7) = vnt(i, 22)
>      A(8) = wk2
>      A(9) = wk3
>    Else
>      A = dic(vnt(i, 9))
>    End If
>    
>    A(1) = A(1) + vnt(i, 17)
>    A(3) = A(3) + vnt(i, 19)
>    A(5) = A(5) + vnt(i, 20)
>    A(6) = A(6) + vnt(i, 21)
>    
>    '★ここの箇所のように色の条件付けをしたい。'
    If r(i, 12).Interior.Color <> 15773696 Then
>       A(2) = A(2) + vnt(i, 12)
>    End If

>    dic(vnt(i, 9)) = A
>  Next i

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