Excel VBA質問箱 IV

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

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


6707 / 13644 ツリー ←次へ | 前へ→

【43620】コードの簡略化について pinkboo 06/10/20(金) 3:18 質問[未読]
【43622】Re:コードの簡略化について Popi 06/10/20(金) 7:43 発言[未読]

【43620】コードの簡略化について
質問  pinkboo  - 06/10/20(金) 3:18 -

引用なし
パスワード
   どなたかお願いします。
名前のついた結合セルに配列に入れたデータを入力したいと思い次のような
コードを作成しました。
このままだと後々のメンテナンスも大変ですので、何とかしたいと思っていますが上手くいきません。どうすればいいでしょうか?
なお、セルの位置が入力するシートによって違うのでセルに名前をつけるようにしました。他の方法があればそれでもいいです。
よろしくお願いします。

Sub Data_Input()
  
  With ActiveWorkbook.Sheets(1)
    .Range("tool1").Value = tooLD(1, 1)
    .Range("tip1").Value = tooLD(1, 2)
    .Range("dtxt1").Value = tooLD(1, 3)
    .Range("tool2").Value = tooLD(2, 1)
    .Range("tip2").Value = tooLD(2, 2)
    .Range("dtxt2").Value = tooLD(2, 3)
    .Range("tool3").Value = tooLD(3, 1)
    .Range("tip3").Value = tooLD(3, 2)
    .Range("dtxt3").Value = tooLD(3, 3)
    .Range("tool4").Value = tooLD(4, 1)
    .Range("tip4").Value = tooLD(4, 2)
    .Range("dtxt4").Value = tooLD(4, 3)
    .Range("tool5").Value = tooLD(5, 1)
    .Range("tip5").Value = tooLD(5, 2)
    .Range("dtxt5").Value = tooLD(5, 3)
    .Range("tool6").Value = tooLD(6, 1)
    .Range("tip6").Value = tooLD(6, 2)
    .Range("dtxt6").Value = tooLD(6, 3)
    .Range("tool7").Value = tooLD(7, 1)
    .Range("tip7").Value = tooLD(7, 2)
    .Range("dtxt7").Value = tooLD(7, 3)
    .Range("tool8").Value = tooLD(8, 1)
    .Range("tip8").Value = tooLD(8, 2)
    .Range("dtxt8").Value = tooLD(8, 3)
    If tCNt > 8 Then
      .Range("tool9").Value = tooLD(9, 1)
      .Range("tip9").Value = tooLD(9, 2)
      .Range("dtxt9").Value = tooLD(9, 3)
      .Range("tool10").Value = tooLD(10, 1)
      .Range("tip10").Value = tooLD(10, 2)
      .Range("dtxt10").Value = tooLD(10, 3)
      If tCNt > 10 Then
        .Range("tool11").Value = tooLD(11, 1)
        .Range("tipl11").Value = tooLD(11, 2)
        .Range("dtxt11").Value = tooLD(11, 3)
        .Range("tool12").Value = tooLD(12, 1)
        .Range("tip12").Value = tooLD(12, 2)
        .Range("dtxt12").Value = tooLD(12, 3)
        If tCNt > 12 Then
          .Range("tool13").Value = tooLD(13, 1)
          .Range("tip13").Value = tooLD(13, 2)
          .Range("dtxt13").Value = tooLD(13, 3)
          .Range("tool14").Value = tooLD(14, 1)
          .Range("tip14").Value = tooLD(14, 2)
          .Range("dtxt14").Value = tooLD(14, 3)
          .Range("tool15").Value = tooLD(15, 1)
          .Range("tip15").Value = tooLD(15, 2)
          .Range("dtxt15").Value = tooLD(15, 3)
          .Range("tool16").Value = tooLD(16, 1)
          .Range("tip16").Value = tooLD(16, 2)
          .Range("dtxt16").Value = tooLD(16, 3)
        End If
      End If
    End If
  End With
   
End Sub

【43622】Re:コードの簡略化について
発言  Popi  - 06/10/20(金) 7:43 -

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

規則性が無いか一度コードを見てください。

tool  1〜8 9〜16
tip  1〜8 9〜16
dtxt  1〜8 9〜16
順に並べ替えると
方向性が見えてくるのでは?無いでしょうか。
tooLDにも、tool,tipとdtxtとの関連の規則性が
ありますね。
後は変数に置き換えれば出来るのでは・・・

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