Excel VBA質問箱 IV

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

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


11768 / 76734 ←次へ | 前へ→

【70497】Re:助けてください
回答  UO3  - 11/11/21(月) 10:36 -

引用なし
パスワード
   ▼K・Y さん:

おはようございます

それでは、対象行のA列を選択(複数可)して実行するコードです。
Sample3は、実行前に選択しておきます。
Sample4はマクロの中で最初に選択させます。

Sub Sample3()
  Dim shT As Worksheet
  Dim shK As Worksheet
  Dim v() As String
  Dim i As Long
  Dim k As Long
  Dim s As String
  Dim x As Long
  Dim c As Range
  Dim z As Long
  
  Dim myA As Range
  Dim myCell As Range
  
  Application.ScreenUpdating = False

  Set shK = Workbooks("課題.xls").Sheets("Sheet1")
  Set shT = Workbooks("タスク.xls").Sheets("Sheet1")
  x = shT.Range("A" & shT.Rows.Count).End(xlUp).Row
  
  shK.Parent.Activate  '課題.xlsを最前面に
  shK.Activate     '対象シートを最前面に
  If TypeName(Selection) <> "Range" Then
    MsgBox "対象行のA列のセルを選択をしてください(複数可)"
  Else
    Set myA = Intersect(Selection, shK.Columns("A"))
    For Each myCell In myA
      z = myCell.Row
      For Each c In shK.Range("A1:A" & z)
        ReDim v(1 To 3)
        k = 0
        For i = 1 To 3 'A列〜C列
          s = shK.Cells(z, i).Value
          If Len(s) > 0 Then
            k = k + 1
            v(k) = s
          End If
        Next
      Next
      x = x + 1

      If k > 0 Then
        ReDim Preserve v(1 To k)
        shT.Cells(x, "A").Value = "依" & Join(v, "-")
      End If

      shT.Cells(x, "C").Value = "依頼" & Format(Val(shK.Cells(z, "L")), "00000")
      shT.Cells(x, "K").Value = shK.Cells(z, "Y").Value
      
    Next
  End If
  
 
  shT.Parent.Activate
  shT.Select
  
  Set myA = Nothing
  Set shT = Nothing
  Set shK = Nothing

  Application.ScreenUpdating = True
  MsgBox "転記終了しました"
 
End Sub

Sub Sample4()
  Dim shT As Worksheet
  Dim shK As Worksheet
  Dim v() As String
  Dim i As Long
  Dim k As Long
  Dim s As String
  Dim x As Long
  Dim c As Range
  Dim z As Long
  
  Dim myA As Range
  Dim myCell As Range
  

  Set shK = Workbooks("課題.xls").Sheets("Sheet1")
  Set shT = Workbooks("タスク.xls").Sheets("Sheet1")
  x = shT.Range("A" & shT.Rows.Count).End(xlUp).Row
  
  shK.Parent.Activate  '課題.xlsを最前面に
  shK.Activate     '対象シートを最前面に
  
  On Error Resume Next
  Set myA = Application.InputBox("対象の行のA列を選択してください(複数可)", Type:=8)
  On Error GoTo 0
  
  If Not myA Is Nothing Then
    Application.ScreenUpdating = False
    Set myA = Intersect(myA, shK.Columns("A"))
    
    For Each myCell In myA
      z = myCell.Row
      For Each c In shK.Range("A1:A" & z)
        ReDim v(1 To 3)
        k = 0
        For i = 1 To 3 'A列〜C列
          s = shK.Cells(z, i).Value
          If Len(s) > 0 Then
            k = k + 1
            v(k) = s
          End If
        Next
      Next
      x = x + 1

      If k > 0 Then
        ReDim Preserve v(1 To k)
        shT.Cells(x, "A").Value = "依" & Join(v, "-")
      End If

      shT.Cells(x, "C").Value = "依頼" & Format(Val(shK.Cells(z, "L")), "00000")
      shT.Cells(x, "K").Value = shK.Cells(z, "Y").Value
      
    Next
    
    shT.Parent.Activate
    shT.Select
    Application.ScreenUpdating = True
    MsgBox "転記終了しました"

  End If
  
  Set myA = Nothing
  Set shT = Nothing
  Set shK = Nothing

 
End Sub

10 hits

【70424】助けてください K・Y 11/11/15(火) 18:43 質問
【70429】Re:助けてください UO3 11/11/15(火) 21:52 発言
【70453】Re:助けてください K・Y 11/11/17(木) 14:19 発言
【70458】Re:助けてください UO3 11/11/17(木) 19:14 回答
【70473】Re:助けてください K・Y 11/11/19(土) 2:09 質問
【70479】Re:助けてください UO3 11/11/19(土) 18:27 発言
【70489】Re:助けてください K・Y 11/11/20(日) 14:15 発言
【70497】Re:助けてください UO3 11/11/21(月) 10:36 回答
【70513】Re:助けてください K・Y 11/11/22(火) 22:08 お礼

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