0
コマンドボタンのマクロを作成しようとしましたが、クリックするとその行からジョブ番号が取得され、そのジョブのファイルが検索されます。存在しない場合は、テンプレートからコピーして新しい名前で保存してください。それ以外の場合はファイルを開くだけです。Clickコマンドボタンマクロ
しかし、私はマクロを呼び出すコマンドボタンの情報を保持する方法を考えることはできません。あなたは、私が現在ActiveSheet.Shapes(Application.Caller).Selectをしようとしている見ることができるように
Public Function ShapeExists(OnSheet As Object, Name As String) As Boolean
On Error GoTo ErrShapeExists
If Not OnSheet.Shapes(Name) Is Nothing Then
ShapeExists = True
End If
ErrShapeExists:
Exit Function
End Function
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim buttonName As String
buttonName = (Target.Row - 1)
If Not ShapeExists(ActiveSheet, buttonName) Then
If Range("O" & Target.Row).Value = "" And Target.Column <= 14 And Target.Row > 1 Then
ActiveSheet.Buttons.Add(910.5, Range("O" & Target.Row).Top, 80, 20).Select
Selection.Name = buttonName
Selection.OnAction = "Sheet1.JobButton"
ActiveSheet.Shapes(buttonName).Select
Selection.Characters.Text = "Open Job"
End If
End If
End Sub
Private Sub JobButton()
Dim newText As String
ActiveSheet.Shapes(Application.Caller).Select
If Range("N" & Selection.TopLeftCell.Row).Value <> "" Then
newText = "Job " & Range("N" & Selection.TopLeftCell.Row).Value
Dim checkFilename As String
Dim check As String
check = "N" & Selection.TopLeftCell.Row
checkFilename = newText & ".xlsm"
If Dir(checkFilename) <> "" Then
Workbooks.Open (newText)
Else
Dim SrcBook As Workbook
Set SrcBook = ThisWorkbook
Dim NewBook As Workbook
NewBook = Workbooks.Open("Job Template.xlsm")
SrcBook.Worksheets(1).Range("D" & Selection.TopLeftCell.Row).Copy
NewBook.Worksheets(2).Range("B15").PasteSpecial
With NewBook
.Title = newText
.Subject = newText
.SaveAs Filename:=newText
End With
End If
Else
ErrMsg:
MsgBox ("Job Should always have a number."), , "NO JOB NUMBER"
End If
End Sub
、これは「実行時エラー 『13』:型が一致しません」原因になっている:これは私がこれまでにしたものです。
お手数をおかけしますようお願い申し上げます。
ここに置くが、ボタンが自動的に生成取得され、これを行う方法があります手動でビューコードを選択する必要はありませんか? – henryprescott
ボタンを含むシートのワークシートモジュールのPrivate Sub CommandButton1_Click() subにコードを取得する必要があります。シートとボタンをどのように生成するかによって、テンプレートシートをコピーするか、VBEオブジェクトモジュールを使用してワークシートモジュールにコードを追加します。または、フォームツールバーからボタンを使用するほうが簡単かもしれません。 –