質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

954閲覧

for eachを使って転記したい

hisasinana

総合スコア7

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2022/09/09 10:02

編集2022/09/09 10:06

前提

sheet2のa1:f20のfor nextを使って、出力した値をfor eachを使って、sheet3のa1:f20には何も表示せず、i1:n20に転記して1~120としたいのですが、上手くいきません。
コードもあまり良くなく、やっている事が、あまり意味がないと思うのですが。for eachの練習として、実現したいです。大変お手数ですが、どなたか、ご存じの方、教えていただけないでしょうか?
office2010のバージョンです。

該当のソースコード

``VBA
Sub for_e() 'sheet2→sheet3
Dim r1 As Variant
Dim i, j, k, l As Long
Dim r As Range
l = 1
For i = 1 To 20
For j = 1 To 6
Cells(i, j) = l
' i = i + 1
l = l + 1

Next j Next i For Each r1 In Worksheets(1).Range("a1:f20")

' Debug.Print r1
For i = 1 To 20
For j = 1 To 6
Worksheets(3).Cells(i, j + 8) = r1
Next j
Next i
Next r1
End Subイメージ説明
```

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

下記でどうでしょう。

vba

1Sub for_e() 'sheet2→sheet3 2 Dim i As Long, j As Long, l As Long 3 l = 1 4 For i = 1 To 20 5 For j = 1 To 6 6 Worksheets(1).Cells(i, j) = l 7 ' i = i + 1 8 l = l + 1 9 Next j 10 Next i 11 12 Dim r As Range 13 For Each r In Worksheets(1).Range("a1:f20") 14 Worksheets(3).Cells(r.Row, r.Column + 8) = r.Value 15 Next r 16End Sub

投稿2022/09/09 10:48

編集2022/09/09 16:41
hatena19

総合スコア33782

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hisasinana

2022/09/09 13:17

いつも、有難うございます。sheet3に転記した後、a1:f20は表示したくないのですが、無理ですよね。すみません。
hatena19

2022/09/09 16:44

sheet2 (Worksheets(1)) をアクティブにした状態で実行してください。 それか、回答のコードを修正しましたので、そのコードで試してみてください。 そのうえで、目的と違うなら、どこが違って、何をしたいのか説明してください。
hisasinana

2022/09/10 03:28

返事、遅くなりました。sheet3をアクティブにして実行していてたからsheet3、a1:f20は表示されたんですね。、仰る通り、sheet2をアクティブにしたら、sheet3に転記した後、a1:f20は表示はなくなりました。また、コードを修正、頂き、無事、やりたいことが実現しました。有難うございました。基本的、ミスに気付かない、自分が悪いです。すみませんでした。
guest

0

とりあえず、修正しておきました。

VBA

1Sub for_e() 'sheet2→sheet3 2 Dim r1 As Variant 3 Dim i, j, k, l As Long 4 Dim r As Range 5 l = 1 6 For i = 1 To 20 7 For j = 1 To 6 8 Cells(i, j) = l 9 ' i = i + 1 10 l = l + 1 11 12 Next j 13 14 Next i 15 For i = 1 To 20 16 For j = 1 To 6 17 Worksheets(3).Cells(i, j + 8) = Worksheets(1).Cells(i, j) 18 Next j 19 Next i 20End Sub 21

投稿2022/09/09 10:25

tatsu99

総合スコア5462

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hisasinana

2022/09/09 13:39

有難うございます。すみません。for eachが無かったのですが、これは勉強になります。参考にさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問