1
ボタンクリックでテンプレートに基づいて新しいシートを作成し、最後のシートとして配置し、メインシート( "Lista")のActiveCell値で名前を付けるマクロを作成しました(会社名)。新しいシートでは、セルB2:B5のメインシートから値(企業情報):列BからEにコピーしたいが、行は選択した会社に依存しています。コードは以下である:2枚のシート間のセル参照(変数名付き)
Sub HistoriaDostaw()
Dim wb As Workbook
Dim ws As Worksheet
Dim activeWB As Workbook
Dim FilePath As String
Dim ShtName As String
Dim CopyInfo As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set activeWB = Application.ActiveWorkbook
FilePath = "C:\Users\DELL\AppData\Roaming\Microsoft\Szablony\HistoriaDostaw1.xltm"
On Error Resume Next
ShtName = ActiveCell.Value2
If Not WorkSheetExists(ShtName) Then
Set wb = Application.Workbooks.Open(FilePath)
wb.Worksheets(1).Copy After:=activeWB.Sheets(activeWB.Sheets.Count)
activeWB.Activate
activeWB.Sheets(activeWB.Sheets.Count).Name = ShtName
wb.Close False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End If
End Sub
Function WorkSheetExists(ByVal strName As String) As Boolean
On Error Resume Next
WorkSheetExists = Not ActiveWorkbook.Worksheets(strName) Is Nothing
End Function
私は単一のセルから始まる(サブセクション内に配置された)コピー/ペースト方法を使用して試みたが、動作しない。
ThisWorkbook.Sheets("Lista").ActiveCell.Offset(0, 1).Select
Selection.Copy
Sheets(activeWB.Sheets.Count).Range("B2").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False
また、この方法:
をactiveWB.Sheets(activeWB.Sheets.Count).Range("B2").Value = ThisWorkbook.Sheets("Lista").ActiveCell.Range.Offset(0, 1).Value
おそらく、私は新しく作成したシートを間違って参照しています。または、コード行を間違えて配置します。手伝ってくれませんか?
をたまたまどこがベストプラクティスをお読みください見つけるために
と
をしようと動作しない場合。アクティブセルは揮発性のため使用しないでください。また、selectとactivateを使用せず、明示的にワークシートを参照してください。 – Luuklag