
他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の「*月」を参照しています。
Worksheets(1).Range("A3")が西暦だった場合、Fomatで月を取り出して下記マクロに組み込む方法を教えてください。
Sub test1()
Dim Cop
Set Cop = Worksheets(4).Range("G15:G18") 'コピー元
'処理月へ転記
Dim c As Long
For c = 8 To 19 '4月~3月の範囲
If Cells(2, c).Value = Worksheets(1).Range("A3").Value Then Exit For
Next c '該当月の指定
Worksheets(2).Cells(5, c).Resize(Cop.Rows.count, 1) = Cop.Value 'コピー先
End Sub
No.6ベストアンサー
- 回答日時:
No5です。
Format文を使って月を取り出したい場合は、
If Worksheets(2).Cells(2, c).Value = Month(Worksheets(1).Range("A3").Value) & "月" Then Exit For
を
If Worksheets(2).Cells(2, c).Value = Format(Worksheets(1).Range("A3").Value, "m月") Then Exit For
に変えてください。
No.7
- 回答日時:
西暦入力の場合と『”○月"』の文字列の場合があっての事での質問かわかりませんが、
取り敢えずややこしいループによる検索をやめるのも手では?
'For c = 8 To 19 '4月~3月の範囲
'If Cells(2, c).Value = Worksheets(1).Range("A3").Value Then Exit For
'Next c '該当月の指定
' ↓
With Worksheets("Sheet1")
c = IIf(Month(.Range("A3").Value) >= 4, Month(.Range("A3").Value) + 4 , Month(.Range("A3").Value) + 16)
End With
Worksheets(2).Cells(5, c).Resize(Cop.Rows.Count, 1) = Cop.Value 'コピー先
No.5
- 回答日時:
以下のようにしてください。
Cells(2, c).ValueはWorksheets(2)で修飾したほうが安全ですので、
そのようにしています。
-------------------------------------------
Sub test1()
Dim Cop
Set Cop = Worksheets(4).Range("G15:G18") 'コピー元
'処理月へ転記
Dim c As Long
For c = 8 To 19 '4月~3月の範囲
If Worksheets(2).Cells(2, c).Value = Month(Worksheets(1).Range("A3").Value) & "月" Then Exit For
Next c '該当月の指定
Worksheets(2).Cells(5, c).Resize(Cop.Rows.Count, 1) = Cop.Value 'コピー先
End Sub
No.4
- 回答日時:
そもそもの話になりますが、前提条件の確認になります。
1.Sheet2のH2:S2は4月~3月が表示されていますが、これは
①実際に4月~3月の文字が設定されている。
②設定されているのは2022/4/1~2023/3/1の日付であるが、
セルの書式設定で、4月~3月と表示されるようにしてある。
上記の①②のどちらでしょうか。
2.Sheet1のA3に設定される値は
①2023/3/1 等の日付である。
②"3月" 等の文字である。
③3 等の数値であるが、書式設定で3月と表示されるようにしてある。
上記①②③のどのパターンでしょうか。
No.2
- 回答日時:
No1です。
>オブジェクトが必要です。とエラーになりました。
No1に書いておいたはずですが・・・
セルの値がなんなのか不明のままですが、シリアル値としてもよいのなら、
Month(Worksheets(1).Range("A3"))
は数値になります。(=月数になる)
ありがとうございます。月数ですね!
セルH2の4月から横に3月まで並んでいます。(For c = 8 To 19 '4月~3月の範囲)月数ということは、セルA3に「2022/04/01」が入っていた場合、「4」になっているのですね。これに何月の「月」をつけるにはどのようにしたら良いか教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Excel(エクセル) なぜExit Subがあるのかわかりません 4 2023/02/19 12:34
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
マクロの連続印刷が突然不可能...
-
Excel_マクロ_現在開いているシ...
-
エクセルで特定の列が0表示の場...
-
ExcelのVBA。public変数の値が...
-
エクセルマクロでワードの一ペ...
-
Excelのセル値に基づいて図形の...
-
Excel マクロ VBA プロシー...
-
ダブルクリックで貼り付けた画...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
wordを起動した際に特定のペー...
-
メッセージボックスのOKボタ...
-
EXCEL VBAでApplication.waitを...
-
Excel・Word リサーチ機能を無...
-
#define __T(x) L ## x について
-
エクセルで縦に並んだデータを...
-
#defineの定数を文字列として読...
-
TERA TERMを隠す方法
-
マクロ実行時、ユーザーフォー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のPCだけ動作しないVBAマク...
-
Excel・Word リサーチ機能を無...
-
エクセルで特定の列が0表示の場...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロ VBA プロシー...
-
ExcelのVBA。public変数の値が...
-
エクセルで別のセルにあるふり...
-
エクセルに張り付けた写真のフ...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
Excelのセル値に基づいて図形の...
-
Excel VBAからAccessマクロを実...
-
ExcelVBAでPDFを閉じるソース
-
マクロ実行時、ユーザーフォー...
-
オートフィルターとExcelマクロ...
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
エクセルで縦に並んだデータを...
おすすめ情報
ご教授いただいた内容で、If Cells(2, c).Value = Month(Worksheets(1).Range("A3")).Value Then Exit Forとしてみたところ、実行時エラー424 オブジェクトが必要です。とエラーになりました。どこを変更したらよいか教えていただけませんでしょうか。よろしくお願いいたします。
If Cells(2, c).Value = Format(Month(Worksheets(1).Range("A2").Value), "m 月") Then Exit Forへ変更し、
Sheet1のA2セルを参照してマクロを実行したところ、Sheet2のT列へ転記されました。
Sheet1のA3セルを参照するとQ列の1月へ転記できるのですがこのちがいを解消するにはどのようにしたら良いか教えてください。
Sheet1のA3セルを参照してSheet2のQ列に転記できたこーどは、If Cells(2, c).Value = Worksheets(1).Range("A3").Value Then Exit Forになります。
1.Sheet2のH2:S2は4月~3月が表示されていますが、これは
①実際に4月~3月の文字が設定されている。
2.Sheet1のA3に設定される値は
①2023/3/1 等の日付である。