Excel VBA質問箱 IV

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

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


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

【50150】Scripting.Dictionaryでの計算での変数指定 質問者(初心者S) 07/7/12(木) 9:28 質問[未読]
【50151】Re:Scripting.Dictionaryでの計算での変数... neptune 07/7/12(木) 11:07 回答[未読]
【50152】Re:Scripting.Dictionaryでの計算での変数... 質問者(初心者S) 07/7/12(木) 11:22 発言[未読]
【50154】Re:Scripting.Dictionaryでの計算での変数... neptune 07/7/12(木) 14:09 回答[未読]
【50153】Re:Scripting.Dictionaryでの計算での変数... Hirofumi 07/7/12(木) 11:34 発言[未読]
【50177】Re:Scripting.Dictionaryでの計算での変数... 質問者(初心者S) 07/7/13(金) 14:50 お礼[未読]

【50150】Scripting.Dictionaryでの計算での変数指...
質問  質問者(初心者S)  - 07/7/12(木) 9:28 -

引用なし
パスワード
    教えて下さい。
 WINDOWS-XP EXCEL2000の環境で処理しています。 

 概要は、
 EXCELのセルの項目を利用してセルAとセルBを計算して
 金額を計算しその後、事前セットしたKEY項目別に合計金額
 を一覧に表示しようとしています。

 その際に、a(1) = a(1) + vnt(i, 33) の箇所
 で型が一致しませんと表示されるのですが
 回避方法を教えて下さい。

 以下に情報を記載します。

 KEY=セル34
 合計する項目=セル33 になります。
 
 どなたかアドバイスお願いします。


  '●条件編集用コピー
  
  Dim i As Long
  
  i = 1

  Do While Cells(i, 1) <> ""
  
  Cells(i, 30).Select
  ActiveCell.FormulaR1C1 = "=RC[-11]"
  
  Cells(i, 31).Select
  ActiveCell.FormulaR1C1 = "=RC[-14]"
  
  Cells(i, 32).Select
  ActiveCell.FormulaR1C1 = "=MID(RC[-25],1,6)"
    
  Cells(i, 33).Select
  ActiveCell.FormulaR1C1 = "=RC[-10]*RC[-22]"
  
  Cells(i, 34).Select
  ActiveCell.FormulaR1C1 = "=CONCATENATE(RC[-13],RC[-4],RC[-3],RC[-2])"


  i = i + 1
    
  Loop


 '●別シートに集計内容出力(集計)
  
  Dim vnt, a
  Dim dic As Object


  With Sheets("作業1")
    vnt = .Range("AI2", .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, 34)) Then
      ReDim a(1)
      a(0) = vnt(i, 34)
    Else
      a = dic(vnt(i, 34))
    End If
    a(1) = a(1) + vnt(i, 33)  ★!!!
    dic(vnt(i, 34)) = a
  Next i
  
  '-----結果出力
  With Sheets("集計")
    '.Cells.ClearContents
    .Range("A1").Resize(, 2).Value = Array("KEY", "金額合計")
    
    .Range("A2").Resize(dic.Count, 2).Value = Application _
          .Transpose(Application.Transpose(dic.items))
    .Select
  End With
  '
  Erase vnt
  Set dic = Nothing
  
  
  

【50151】Re:Scripting.Dictionaryでの計算での変...
回答  neptune  - 07/7/12(木) 11:07 -

引用なし
パスワード
   ▼質問者(初心者S) さん:
こんにちは

★!!!
のところにブレークポイントを置いて
a(1) 、vnt(i, 33)の各データ型を観察しましたか?
デバッグの必須手法です。

【50152】Re:Scripting.Dictionaryでの計算での変...
発言  質問者(初心者S)  - 07/7/12(木) 11:22 -

引用なし
パスワード
   msgboxで内容は表示させ確認しています。

初心者なので、
その際にデータ型の表示はどのようにすれば
いいのか手法がわからないので教えて下さい。


▼neptune さん:
>▼質問者(初心者S) さん:
>こんにちは
>
>★!!!
>のところにブレークポイントを置いて
>a(1) 、vnt(i, 33)の各データ型を観察しましたか?
>デバッグの必須手法です。

【50153】Re:Scripting.Dictionaryでの計算での変...
発言  Hirofumi  - 07/7/12(木) 11:34 -

引用なし
パスワード
   K列、W列に文字(スペースを含め)が入っているのでは?
プレークした時に、AG列にエラー(#VALUE)が表示されていませんか?

【50154】Re:Scripting.Dictionaryでの計算での変...
回答  neptune  - 07/7/12(木) 14:09 -

引用なし
パスワード
   ▼質問者(初心者S) さん:
こんにちは

>msgboxで内容は表示させ確認しています。
debug.printという手もありますが、それはお好きにどうぞ。

>初心者なので、
>その際にデータ型の表示はどのようにすれば
>いいのか手法がわからないので教えて下さい。
VBEのローカルウィンドウを表示させて下さい。
その中に、a、vnt()などの変数が表示されているはずです。
その、右端に、変数のデータ型が表示されています。

Helpの
「Visual Basic ユーザーインターフェイス」
   「ウィンドウ」
の中にあります。

初心者なら、この全てに目を通すことをお勧めします。

【50177】Re:Scripting.Dictionaryでの計算での変...
お礼  質問者(初心者S)  - 07/7/13(金) 14:50 -

引用なし
パスワード
   ありがとうございました。
解決しました。

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