Excel VBA質問箱 IV

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

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


32609 / 76734 ←次へ | 前へ→

【49360】Re:一部更新しないマクロをつくりたい
発言  かつこ  - 07/6/1(金) 23:37 -

引用なし
パスワード
   ▼Jaka さん:
ありがとうございます。

>国語力が貧相なJakaです。
>やっぱり質問の意味がよく解りませんでした。
うまく伝えられない私が、申し訳ありませんm(_ _)m

>
>提示されたシートレイアウト通りに?BOOK1.xls、BOOK2.xlsを作り、
>BOOK1、2のデータがあるであろうシート名を「データ」とし、
>実行ファイルのシートの1つを「一覧」にして、最初に提示されたコードを
>走らせて見ましたが、動きませんでした。
>質問の中では動いているそうですが...??
>
>で、データレイアウトを下記のように変え、
>
>BOOK1.xls    (シート名データ)
>  B     C     D
>1 4月    5月    6月
>2 100    200    300
>
>BOOK2.xls
>  B     C     D
>1 4月    5月    6月
>2 300    400    500
>
>コードを下記に変えて動かしてみました。、
>
>Sub kousin()
>  Dim thename As String
>  Dim thedir As String
>  Dim thebook As Workbook
>  Dim AROW As Integer
>  Dim myarray As Variant
>  Dim i As Integer
>
>  Application.ScreenUpdating = False
>  
>  thedir = CreateObject("WScript.Shell").SpecialFolders("Desktop") & "\dddd"
>  
>  thename = Dir(thedir & "\*.xls")
>  Do While thename <> ""
>    If thename <> ThisWorkbook.Name Then
>     Set thebook = Workbooks.Open(thedir & "\" & thename)
>     AROW = ThisWorkbook.Worksheets("一覧").Range("A65536").End(xlUp).Row
>     ThisWorkbook.Worksheets("一覧").Cells(AROW + 1, 1).Value = _
>            Left$(thename, Len(thename) - 4)
>
>     With thebook.Worksheets("データ")
>        myarray = Array(.Range("B2"), .Range("C2"), .Range("D2"))
>        For i = 0 To 2
>          ThisWorkbook.Worksheets("一覧").Cells(AROW + 1, 2 + i) _
>               .Value = myarray(i)
>        Next i
>     End With
>
>     thebook.Close savechanges:=False
>    End If
>    thename = Dir()
>   Loop
>   Application.ScreenUpdating = True
>End Sub
>
>
>実行1回目、一覧シートの結果
>
>   A   B   C   D
>1     4月  5月  6月
>2 Book1 100  200  300
>3 Book2 300  400  500
>
>
>BOOK1の内容を↓この様に変えて
>
>  B     C     D
>1 4月    5月    6月
>2 100    200    300
>
>
>実行2回目、一覧シートの結果
>
>   A   B   C   D
>1     4月  5月  6月
>2 Book1 100  200  300
>3 Book2 300  400  500
>4 Book1 150  200  300
>5 Book2 300  400  500
>
>このようになります。
>>書き換えられてしまいました
>とはなりません。

thisworkbook.worksheets("一覧").range("A2:D65536").clearcontents
記入漏れがありました。

>
>また、最初に提示してあったコードのこれ、エラーになりませんでしたか?
>
>      myarray = Array(.Range("B2"), .Range("C2"), .Range("D2"))
>       For i = 1 To 3
>
>i = 0 to 2
>では。

option explicit
option base 1
を設定しているので1始まりになっています。
しかしセルが連なっているのでわざわざarrayを使わず
Jakaさんのコードで書かれているcells(1,i)のように
するほうがわかりやすかったので変えます。

>
>それと、
>>4月 5月 6月
>>100 200 350
>と、書くと読んだ人は、A、B、C列と判断します。
>なのに
>>Array(.Range("B2"), .Range("C2"), .Range("D2"))
>B、C、D列なんですよね?
>
>もっとシートレイアウトは正しく、誰が見ても解るように
>コードは実際に、動いたものを載せてください。
>質問内容を国語力が貧相な私にもわかるぐらいにしてください。
>

記入漏れ、書き間違いがあり
混乱させてしまいました。
申し訳ございません。
B、C、D列で4月5月6月です。

ここからも長くなりそうなので
続きを次の投稿で書きたいと思います。

8 hits

【49303】一部更新しないマクロをつくりたい かつこ 07/5/30(水) 20:29 質問
【49321】Re:一部更新しないマクロをつくりたい Jaka 07/5/31(木) 11:22 発言
【49350】Re:一部更新しないマクロをつくりたい かつこ 07/5/31(木) 21:25 発言
【49354】Re:一部更新しないマクロをつくりたい Jaka 07/6/1(金) 13:53 発言
【49360】Re:一部更新しないマクロをつくりたい かつこ 07/6/1(金) 23:37 発言
【49363】Re:一部更新しないマクロをつくりたい かつこ 07/6/2(土) 0:37 発言
【49405】Re:一部更新しないマクロをつくりたい Jaka 07/6/4(月) 13:23 発言
【49429】Re:一部更新しないマクロをつくりたい かつこ 07/6/4(月) 23:41 発言
【49452】Re:一部更新しないマクロをつくりたい Jaka 07/6/5(火) 14:50 発言
【49466】Re:一部更新しないマクロをつくりたい かつこ 07/6/5(火) 22:05 お礼

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