- ベストアンサー
VBAでの説明がわかりません
以下のコードは、都道府県ごとに1枚のデータシートを作成する処理なんですが、コードが1行づつどんな作業を意味しているのかがわかりません。1行ごとにどのような処理をしているのかの説明をよろしくお願いします。長文で申し訳ありません。 Sub まとめ() Dim i As Integer 'カウンタ変数iの宣言 Dim n As Integer Dim MyS1 As Worksheet 'ワークシート型オブジェクトMyS1を宣言 Dim MyC As Worksheet Worksheets.Add before:=Worksheets("全国") ActiveSheet.Name = "data" Set MyS1= Worksheets("data") With Worksheets("全国") MyS1. Range(MyS1.Cells(1,1),MyS1.Cells(11,12))=.Range(Cells(1,1),.Cells(11,12)).Value End With i=12 For Each MyC In Worksheets If MyC.Name<> "data" Then n = 12 MyS1.Cells(i,1)=MyC.Name i=i+1 Do While MyC.Cells(n,2).Value<>"" MyS1.Range(MyS1.Cells(i,1),MyS1.Cells(i,12))=MyC.Range(MyC.Cells(n,1),Mc.Cells(n,12)).Value i=i+1 n=n+1 Loop End If Next Myc End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >このコードは参考書に載っていたコードです 直接の回答ではありませんが、そのコードは、どうもエラーが出るのではありませんか? 何箇所かミスがあるようです。これは書き移したときのミスかもしれませんが、そのコードのレベルですと、だいたい、VBA 1年生レベルの人のものだと思います。 一応、そこかしこを直せばよいとは思いますが、その説明だけは、勘弁してほしいですね。自分のコードの説明すら説明しきれないのに、まして、他人のコードの説明というのは出来るものではありません。 変なことを言うかもしれませんが、たぶん、コーディングというのは、脳の別の場所で作っているらしいのです。だから、自分の作ったものは、映像的には見えていても、説明するとなると、別の能力を使わなくてはならないので、倍以上の労力が必要とされるのです。英語を理解することと、翻訳することは別なことと同じことなのです。 以下は、下に向かって、空白を探すということでは、意味が違ってしまいますが、このように書き換えてみました。 -------------------------------------------------------- Sub まとめR() Dim i As Long Dim sh As Worksheet With Worksheets.Add(Before:=Worksheets("全国")) .Name = "data" .Range("A1:L11").Value = Worksheets("全国").Range("A1:L11").Value End With For Each sh In Worksheets If sh.Name <> "data" Then With Worksheets("data") 'data シートの最後尾の次の行を探す i = .Range("A65536").End(xlUp).Offset(1).Row .Cells(i, 1).Value = sh.Name sh.Range("A12", sh.Range("A65536").End(xlUp)).Resize(, 12).Copy .Cells(i + 1, 1).PasteSpecial xlPasteValues End With End If Next sh Application.CutCopyMode = False End Sub
お礼
丁寧に説明をして頂いて、本当に感謝しています。 ありがとうございました。