回答編集履歴

2 コード追記

hatena19

hatena19 score 23204

2021/04/21 17:05  投稿

With の意味が理解できていないようです。
```vba
With Worksheets("test2")
   
   .Cells(UST1, 3).PasteSpecial Paste:=xlPasteValues
End With
```
```vba
Worksheets("test2").Cells(UST1, 3).PasteSpecial Paste:=xlPasteValues
```
という意味になります。ですので、「test2」に貼り付けられます。
その前の Worksheets("本日").Select は意味ないです。
```vba
   Set ws0 = wb0.Worksheets("本日")
   Set ws1 = wb0.Worksheets("test2")
```
とシートを変数に代入しているのなら、それを使うと読みやすいコードになります。
対象シートを明示できますので、Selectも不要になります。
```vba
Sub T111()
   Dim wb0 As Workbook
 
   Dim UST1 As Long
   Dim UST2 As Long
   Dim ws0 As Worksheet, ws1 As Worksheet
   Set wb0 = ThisWorkbook
   Set ws0 = wb0.Worksheets("本日")
   Set ws1 = wb0.Worksheets("test2")
   UST1 = 13
   For UST2 = 7 To ws1.Cells(Rows.Count, 3).End(xlUp).Row
       If ws1.Cells(UST2, 3).Value <> "" Then   '
           ws1.Cells(UST2, 3).Copy
           ws0.Cells(UST1, 3).PasteSpecial Paste:=xlPasteValues
           UST1 = UST1 + 1
       End If
   Next UST2
   Application.CutCopyMode = False
End Sub
```  
 
別案  
---  
 
SpecialCells(xlTextValues) で空白セル以外の範囲を指定できるので、それをコピーして貼り付ければループする必要はないです。  
 
```vba  
Sub T111()  
 
   Dim ws0 As Worksheet, ws1 As Worksheet  
   With ThisWorkbook  
       Set ws0 = .Worksheets("本日")  
       Set ws1 = .Worksheets("test2")  
   End With  
     
   ws1.Range(ws1.Cells(7, 3), ws1.Cells(Rows.Count, 3).End(xlUp)) _  
                             .SpecialCells(xlTextValues).Copy  
   ws0.Cells(13, 3).PasteSpecial Paste:=xlPasteValues  
     
   Application.CutCopyMode = False  
 
End Sub  
```
1 コード修正

hatena19

hatena19 score 23204

2021/04/21 16:45  投稿

```vba
With Worksheets("test2")
   
   .Cells(UST1, 3).PasteSpecial Paste:=xlPasteValues
End With
```
```vba
Worksheets("test2").Cells(UST1, 3).PasteSpecial Paste:=xlPasteValues
```
という意味になります。ですので、「test2」に貼り付けられます。
その前の Worksheets("本日").Select は意味ないです。
```vba
   Set ws0 = wb0.Worksheets("本日")
   Set ws1 = wb0.Worksheets("test2")
```
とシートを変数に代入しているのなら、それを使うと読みやすいコードになります。
対象シートを明示できますので、Selectも不要になります。
```vba
Sub T111()
   Dim wb0 As Workbook
   Dim UST1 As Long
   Dim UST2 As Long
   Dim ws0 As Worksheet, ws1 As Worksheet
   Set wb0 = ThisWorkbook
   Set ws0 = wb0.Worksheets("本日")
   Set ws1 = wb0.Worksheets("test2")
   UST1 = 13
   For UST2 = 7 To ws1.Cells(Rows.Count, 3).End(xlUp).Row
       If .Cells(UST2, 3).Value <> "" Then   '
       If ws1.Cells(UST2, 3).Value <> "" Then   '
           ws1.Cells(UST2, 3).Copy
           ws0.Cells(UST1, 3).PasteSpecial Paste:=xlPasteValues
           UST1 = UST1 + 1
       End If
   Next UST2
   Application.CutCopyMode = False
End Sub
```

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る