Excel VBA質問箱 IV

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

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


5369 / 13644 ツリー ←次へ | 前へ→

【51227】転記する方法 とく 07/9/4(火) 20:23 質問[未読]
【51228】Re:転記する方法 neptune 07/9/4(火) 21:17 回答[未読]
【51231】Re:転記する方法 とく 07/9/4(火) 22:01 発言[未読]
【51232】Re:転記する方法 とく 07/9/4(火) 22:24 お礼[未読]
【51233】Re:転記する方法 ichinose 07/9/4(火) 22:34 発言[未読]
【51235】Re:転記する方法 とく 07/9/4(火) 22:50 発言[未読]

【51227】転記する方法
質問  とく  - 07/9/4(火) 20:23 -

引用なし
パスワード
   世界などの名前の付いたワークシートのA2,A3,A4+A5の値を転記する方法。

まとめシートのA7からD7にはワークシート世界の値 、
A8からD8にはワークシートeigoの値・・・という風にです。
forとかarrayの使い方を間違えているのか、エラーがでます。
どこをどのように変えると正しく転記されるのでしょうか?
ご教授いただきたく、書かせていただきました。
宜しくお願い致します。


Sub test()
  Dim may As Variant
  Dim ws As Variant
  Dim i,num,k As Long
  
  ws = Array("世界", "eigo", "tuke")
  For num = 1 To UBound(ws)
  
  With Worksheets(ws(num))
    may = Array(.Cells(1, 2), .Cells(1, 3), Cells(1, 4) + .Cells(1, 5))
    
    For K = 7 To 9
      For i = 1 To 4
       Worksheets("まとめ").Cells(K, i) = may(i)
      Next i
    Next K
  End With
  Next num
End Sub

【51228】Re:転記する方法
回答  neptune  - 07/9/4(火) 21:17 -

引用なし
パスワード
   ▼とく さん:
こんにちは

気づいた所

・どこで、どんな番号、descriptionのエラーが出るか書いてない。
 コードを全部考えながら眺めなければならないので面倒^ ^;;
>  Dim i,num,k As Long
これは
dim i as variant
dim num as variant
dim k as long
を意味する
>  With Worksheets(ws(num))
>    may = Array(.Cells(1, 2), .Cells(1, 3), Cells(1, 4) + .Cells(1, 5))
>    
>    For K = 7 To 9
>      For i = 1 To 4
・mayには0〜2の3要素しかないのに、「For i = 1 To 4」はおかしい。
>       Worksheets("まとめ").Cells(K, i) = may(i)
に気が付きました。

【51231】Re:転記する方法
発言  とく  - 07/9/4(火) 22:01 -

引用なし
パスワード
   ▼neptune さん:

お返事、ご指摘ありがとうございます。
もう一度書き直しました。
for i= 1 to 4
の4は書き間違えていました。
混乱させてしまい申し訳ありません。


下記のコードで
エラーはインデックス範囲が有効でないとでます。
番号は9番です。

■シート名
世界、eigo、tuke
■転記するセル
A2,A3,A4+A5

仮にどのシートのセル値も
A2が1、A3が2、A4+A5が5
だとすると

まとめ
A B C
1 2 5
1 2 5
1 2 5
のように結果として出したいのです。
ただし、行は7から始める。

option base1

Sub test()
  Dim may As Variant
  Dim ws As Variant
  Dim i As Variant
  Dim k As Long
  Dim num As Variant
  
  ws = Array("世界", "eigo", "tuke")
  For num = 1 To UBound(ws)
  
  With Worksheets(ws(num))
    may = Array(.Cells(1, 2), .Cells(1, 3), .Cells(1, 4) + .Cells(1, 5))
    
    For k = 7 To 9
      For i = 1 To 3
       Worksheets("まとめ").Cells(k, i) = may(i)
      Next i
    Next k
  End With
  Next num
End Sub

宜しくお願い致します。

【51232】Re:転記する方法
お礼  とく  - 07/9/4(火) 22:24 -

引用なし
パスワード
   ▼neptune さん:

すみません。
自身の間違いでした。
ありがとうございました。

【51233】Re:転記する方法
発言  ichinose  - 07/9/4(火) 22:34 -

引用なし
パスワード
   こんばんは。
解決したのですか?


>>
>下記のコードで
>エラーはインデックス範囲が有効でないとでます。
>番号は9番です。

このエラーがなくなっただけではないですか?


>■シート名
>世界、eigo、tuke
>■転記するセル
>A2,A3,A4+A5
>
>仮にどのシートのセル値も
>A2が1、A3が2、A4+A5が5
>だとすると
>
>まとめ
>A B C
>1 2 5
>1 2 5
>1 2 5
>のように結果として出したいのです。
>ただし、行は7から始める。
どのシートも同じ値なら、
上記のような結果にはなりますが・・・。


>
option base 1
>
>Sub test()
>  Dim may As Variant
>  Dim ws As Variant
>  Dim i As Variant
>  Dim k As Long
>  Dim num As Variant
>  
>  ws = Array("世界", "eigo", "tuke")
>  For num = 1 To UBound(ws)
>  
>  With Worksheets(ws(num))
>    may = Array(.Cells(1, 2), .Cells(1, 3), .Cells(1, 4) + .Cells(1, 5))
>    
>    For k = 7 To 9
>      For i = 1 To 3
>       Worksheets("まとめ").Cells(k, i) = may(i)
>      Next i
>    Next k
    'このループに問題がありますが、大丈夫ですか?

>  End With
>  Next num
>End Sub

【51235】Re:転記する方法
発言  とく  - 07/9/4(火) 22:50 -

引用なし
パスワード
   ▼ichinose さん:

お恥ずかしながら
シートの値が同じで気づかなかったのですが
値を変えて試してみたら
最後、tukeのシートの値が上書きされ・・
再度奮闘しなおしています。

お気遣いありがとうございます。

ループに問題ありですか・・

>こんばんは。
>解決したのですか?
>
>
>>>
>>下記のコードで
>>エラーはインデックス範囲が有効でないとでます。
>>番号は9番です。
>
>このエラーがなくなっただけではないですか?
>
>
>>■シート名
>>世界、eigo、tuke
>>■転記するセル
>>A2,A3,A4+A5
>>
>>仮にどのシートのセル値も
>>A2が1、A3が2、A4+A5が5
>>だとすると
>>
>>まとめ
>>A B C
>>1 2 5
>>1 2 5
>>1 2 5
>>のように結果として出したいのです。
>>ただし、行は7から始める。
>どのシートも同じ値なら、
>上記のような結果にはなりますが・・・。
>
>
>>
>option base 1
>>
>>Sub test()
>>  Dim may As Variant
>>  Dim ws As Variant
>>  Dim i As Variant
>>  Dim k As Long
>>  Dim num As Variant
>>  
>>  ws = Array("世界", "eigo", "tuke")
>>  For num = 1 To UBound(ws)
>>  
>>  With Worksheets(ws(num))
>>    may = Array(.Cells(1, 2), .Cells(1, 3), .Cells(1, 4) + .Cells(1, 5))
>>    
>>    For k = 7 To 9
>>      For i = 1 To 3
>>       Worksheets("まとめ").Cells(k, i) = may(i)
>>      Next i
>>    Next k
>    'このループに問題がありますが、大丈夫ですか?
>
>>  End With
>>  Next num
>>End Sub

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