2010-12-02 3 views
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』:型が一致しません」原因になっている:これは私がこれまでにしたものです。

お手数をおかけしますようお願い申し上げます。

答えて

1

右クリックボタン - > [コードの表示] - > [あなたのJobButtonコードは、私がこれを説明したかどうかわからないんだけど

+0

ここに置くが、ボタンが自動的に生成取得され、これを行う方法があります手動でビューコードを選択する必要はありませんか? – henryprescott

+0

ボタンを含むシートのワークシートモジュールのPrivate Sub CommandButton1_Click() subにコードを取得する必要があります。シートとボタンをどのように生成するかによって、テンプレートシートをコピーするか、VBEオブジェクトモジュールを使用してワークシートモジュールにコードを追加します。または、フォームツールバーからボタンを使用するほうが簡単かもしれません。 –