2016-12-27 29 views
5

vba codeがあるxls excelファイル(Excel 97-2003ワークブック)があります。 このvbaコードを有効にして2007年またはそれ以降のバージョンに変換したいと考えています。 私が試してみました:excel 2003〜2007またはVBA付きの最新バージョン

  1. this blogからマクロの設定を変更し、マクロenabled.xlsmファイルとして保存します。 .xlsmでドキュメントを変更しましたが、(マクロが実行されている)セルの値に値の代わりに#NAMEが表示されます。 のorignalファイルスクリーンショット:enter image description here

を変換は: enter image description here 私はここで立ち往生しています。

マクロコード:

1.moveAcross.bas

Attribute VB_Name = "MoveAcross" 
Sub GoToValues() 
Attribute GoToValues.VB_Description = "Macro recorded 23-01-2001 by Murad Assaggaf" 
Attribute GoToValues.VB_ProcData.VB_Invoke_Func = " \n14" 
' 
' GoToValues Macro 
' Macro recorded 23-01-2001 by Murad Assaggaf 
' 

' 
    ActiveWindow.SmallScroll ToRight:=13 
    ActiveWindow.LargeScroll Down:=-2 
    ActiveWindow.SmallScroll Down:=-3 
    ActiveWindow.SmallScroll ToRight:=2 
    Range("X6").Select 
End Sub 
Sub ReturnToProfileArea() 
Attribute ReturnToProfileArea.VB_Description = "Macro recorded 23-01-2001 by Murad Assaggaf" 
Attribute ReturnToProfileArea.VB_ProcData.VB_Invoke_Func = " \n14" 
' 
' ReturnToProfileArea Macro 
' Macro recorded 23-01-2001 by Murad Assaggaf 
' 

' 
    Range("G5").Select 
End Sub 

2.Demand.bas

Attribute VB_Name = "Demand" 
Function Demand(m0, m1, m2, m3, m4, m5, m6, EndInv, ST, Fraction) 
    Static months(7) As Variant 

    months(0) = m0 
    months(1) = m1 
    months(2) = m2 
    months(3) = m3 
    months(4) = m4 
    months(5) = m5 
    months(6) = m6 

    Dim summy 
    summy = 0 

    If Fraction > 0 Then 
     summy = months(ST + 1) * Fraction 
    End If 

    For n = 0 To ST 
     summy = summy + months(n) 
    Next n 

    Demand = summy - EndInv 

    If Demand < 0 Then 
     Demand = 0 
    End If 
    End Function 

3.Coverage.bas編集

Attribute VB_Name = "Coverage" 
Function Coverage(m0, m1, m2, m3, m4, m5, m6, EndInv, ST, Fraction) 

    Static months(7) As Variant 

    months(0) = m0 
    months(1) = m1 
    months(2) = m2 
    months(3) = m3 
    months(4) = m4 
    months(5) = m5 
    months(6) = m6 

    Dim summy 
    summy = 0 

    If Fraction > 0 Then 
     summy = months(ST) * Fraction 
    End If 

    For n = 0 To (ST - 1) 
     summy = summy + months(n) 
    Next n 

    Coverage = EndInv/(summy/(ST + Fraction)) 

End Function 

VBAのスクリーンショット: enter image description here

+3

私が助けてくれるように助けてください。**失敗したコードを投稿してください。** –

+0

@ Gary'sStudentがチェックしてください、コードをアップロードしました。 –

+1

どちらが失敗するのですか?それらは正しく動作しますが、単に '#Name'エラーを返しますか?あなたはあなたの関数の1つをそのセルに入れていますか?どれ? – BruceWayne

答えて

1

チェック - >ツール - >参照MISSINGから始まる選択された任意のライブラリが存在する場合: enter image description here

yesの場合、それを選択解除し、再試行してください。

0

ワークシートで呼び出す場合は、コードを "ThisWorkbook"に入れる必要があります。 VBエディタで

関連する問題