Sub nijigenseitekihairetsu()
Dim moto() As Variant
Dim mx
mx = Sheets("Master data_Mapping").Range("A" & Rows.Count).End(xlUp).Row
Dim cnt As Long
Dim d As Variant
Dim idx As Long
idx = 0
For cnt = 12 To mx 'A12から科目データが入っている。mxはデータの最後
d = Range("A" & cnt).Value 'dに日付データを ←インデントすべきです ogawa
'それが2009.9月以降なら
' If Year(d) = 2009 And Month(d) >= 9 Then
ReDim Preserve moto(6, idx)
'配列変数motoに、上書きされないよう記録していく
'idxは取っていくデータを付番していくもの
moto(0, idx) = d
moto(1, idx) = Sheets("Master data_Mapping").Range("A" & cnt).Value
moto(2, idx) = Sheets("Master data_Mapping").Range("A" & cnt).Offset(, 1).Value
moto(3, idx) = Sheets("Master data_Mapping").Range("A" & cnt).Offset(, 2).Value
moto(4, idx) = Sheets("Master data_Mapping").Range("A" & cnt).Offset(, 3).Value
moto(5, idx) = Sheets("Master data_Mapping").Range("A" & cnt).Offset(, 4).Value
moto(6, idx) = Sheets("Master data_Mapping").Range("A" & cnt).Offset(, 5).Value
idx = idx + 1
Next
'科目リストから科目の記入。セル確認
cellconfirm = MsgBox("リストからの科目記入はこのセルのスタートでよろしいですか?", vbYesNo)
If cellconfirm = vbNo Then
Exit Sub
End If
s = ActiveCell.Row
startcell = ActiveCell.Address
l = ActiveCell.End(xlDown).Row
r = l - s
c = InputBox("勘定科目の隣に入れたいもののNoを入力 MRI英語科目:3 MRI日本語科目:4 COGNOS科目コード:5 COGNOS科目名:6")
inputc = InputBox("科目の何列目の左となりに入力したいかをInput。例:すぐ左隣だったら1")
Dim cHidari As Long
For cHidari = 0 To r
For cnt = LBound(moto, 2) To UBound(moto, 2)
If ActiveSheet.Range(startcell).Offset(cHidari).Value = moto(0, cnt) Then
ActiveSheet.Range(startcell).Offset(cHidari, inputc).Value = moto(c, cnt)
End If
Next
Next
End Sub
受講生さんの投稿
(投稿ID: 4499) 添付ファイルのダウンロード権限がありません
勘定科目のデータを配列motoに格納して、一列目にある勘定科目をキーにし、情報(科目名や他システムでの科目名)を、任意のセル(他シートを含み、科目名表記が始まるところをActivecellにしてマクロを実行すると、リスト(moto)の何列目の情報を勘定科目から見て何列目に表示したいかをInputboxで変数として格納し、出力をする
というコーディングをしているのですが、motoに格納したデータのあるシート内は成功するのですが他シートだとうまくいきません。
どのコードが原因なのかお教えいただけますでしょうか
よろしくお願いいたします。
小川慶一さんのコメント
(コメントID: 6200)
ファイル、拝見しました。
formのf_InputDataは、使っていないということでOKですね。
> どのコードが原因なのかお教えいただけますでしょうか
その話をするには、まずコードを整形してからですね。
[1] option explicit を先頭につけましょう。
[2] sub ... end sub 内は一段インデントを。
[3] そのほか、インデントいろいろダメなので、全面的にみなおす。
[4] 不必要に複数行改行が入っている箇所は詰めて書く。
上記[1]-[4]を実施後、再検討のうえ、また相談ください。
というか、上記[1]-[4]を行うだけでもだいぶコードの見落としよくなりますし、自力解決できるようになるかも。
[3]については、分からないところがあるようでしたら、やれる範囲で、でOKです。
よろしくお願いします。
> 小川先生
>
> 勘定科目のデータを配列motoに格納して、一列目にある勘定科目をキーにし、情報(科目名や他システムでの科目名)を、任意のセル(他シートを含み、科目名表記が始まるところをActivecellにしてマクロを実行すると、リスト(moto)の何列目の情報を勘定科目から見て何列目に表示したいかをInputboxで変数として格納し、出力をする
>
> というコーディングをしているのですが、motoに格納したデータのあるシート内は成功するのですが他シートだとうまくいきません。
>
> どのコードが原因なのかお教えいただけますでしょうか
> よろしくお願いいたします。
>
受講生さんのコメント
(コメントID: 6203)
ありがとうございました!発見してなおせました。
> 受講生 さん:
>
> ファイル、拝見しました。
>
> formのf_InputDataは、使っていないということでOKですね。
>
> > どのコードが原因なのかお教えいただけますでしょうか
>
> その話をするには、まずコードを整形してからですね。
>
> [1] option explicit を先頭につけましょう。
> [2] sub ... end sub 内は一段インデントを。
> [3] そのほか、インデントいろいろダメなので、全面的にみなおす。
> [4] 不必要に複数行改行が入っている箇所は詰めて書く。
>
> 上記[1]-[4]を実施後、再検討のうえ、また相談ください。
> というか、上記[1]-[4]を行うだけでもだいぶコードの見落としよくなりますし、自力解決できるようになるかも。
>
> [3]については、分からないところがあるようでしたら、やれる範囲で、でOKです。
>
> よろしくお願いします。
>
>
>
>
>
> > 小川先生
> >
> > 勘定科目のデータを配列motoに格納して、一列目にある勘定科目をキーにし、情報(科目名や他システムでの科目名)を、任意のセル(他シートを含み、科目名表記が始まるところをActivecellにしてマクロを実行すると、リスト(moto)の何列目の情報を勘定科目から見て何列目に表示したいかをInputboxで変数として格納し、出力をする
> >
> > というコーディングをしているのですが、motoに格納したデータのあるシート内は成功するのですが他シートだとうまくいきません。
> >
> > どのコードが原因なのかお教えいただけますでしょうか
> > よろしくお願いいたします。
> >