Excel VBA質問箱 IV

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

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


234 / 13617 ツリー ←次へ | 前へ→

【81264】形を変えて表を転機したい よっちゃん 20/4/28(火) 17:21 質問[未読]

【81268】Re:形を変えて表を転機したい マナ 20/4/29(水) 8:10 発言[未読]
【81274】Re:形を変えて表を転記したい よっちゃん 20/4/30(木) 0:58 発言[未読]
【81282】Re:形を変えて表を転記したい よっちゃん 20/5/7(木) 9:34 お礼[未読]

【81268】Re:形を変えて表を転機したい
発言  マナ  - 20/4/29(水) 8:10 -

引用なし
パスワード
   ▼よっちゃん さん:

>多くても、一つの項目で10行くらいに収まるようにはしていますが、

Option Explicit

Sub test()
  Dim 表 As Range, 転記先 As Range
  Dim 期間 As String
  Dim s
  Dim 列 As Range
  Dim r As Range, c As Range
  Dim 項目 As String, 内容 As String
  Dim n As Long
  Dim 開始月 As Date, 終了月 As Date
  Dim d As Date
  
  Set 表 = Sheets("Sheet1").Range("B22:F22").Offset(1).Resize(100)
  Set 転記先 = Sheets("Sheet2").Range("A2")
  期間 = "20/4月〜21/1月"
  
  s = Split(Replace(期間, "月", ""), "〜")
  開始月 = DateValue("20" & s(0) & "/1")
  終了月 = DateValue("20" & s(1) & "/1")
  
  For Each 列 In 表.Columns
    Set r = Nothing
    On Error Resume Next
    Set r = 列.SpecialCells(xlCellTypeConstants)
    On Error GoTo 0
    If Not r Is Nothing Then
      項目 = 列.Cells(0).Value
      For Each c In r
        内容 = c.Value
        d = 開始月
        Do
          n = n + 1
          転記先.Cells(n, 1).Value = 項目
          転記先.Cells(n, 2).Value = 内容 & Format(d, "(yy/m月分)")
          d = WorksheetFunction.EDate(d, 1)
        Loop Until d > 終了月
      Next
    End If
  Next

End Sub


 

【81274】Re:形を変えて表を転記したい
発言  よっちゃん  - 20/4/30(木) 0:58 -

引用なし
パスワード
   ▼マナ さん:

ありがとうございました。

参考にさせていただき、実際に動かしてみます。
初めて使う構文もあるので、調べながら使ってみますが、
わからなかったら質問させていただいてもいいですか?

他に、こんな方法もあるよ!という方も、アドバイスいただけたらと思います。

【81282】Re:形を変えて表を転記したい
お礼  よっちゃん  - 20/5/7(木) 9:34 -

引用なし
パスワード
   わからないことなどあるかもしれませんが、一旦クローズさせていただきます。
マナさん、ありがとうございました。

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