2017-03-20 17 views
1

以下のカスタム関数は、別のセルへの参照を持つセルに入力されても機能しません。私はなぜなのか理解していない。誰かが答えを知っていますか?デバッグウィンドウでSpecialCell(xlCellTypeLastCell)がExcelのカスタム関数で機能しない

Public Function SpecialCellBroken(rng As Range) 
Debug.Print rng.Worksheet.Cells.Address 
Debug.Print rng.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address 

SpecialCellBroken = rng.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address 
End Function 

戻る:

$1:$1048576 
$1:$1048576 



ただし、次のSubが正常に動作し、最後のセルのアドレスを返します。

Sub SpecialCellWorksFine() 
    Debug.Print Selection.Worksheet.Cells.Address 
    Debug.Print Selection.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address 

    Selection.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Select 
End Sub 

戻るデバッグウィンドウで:

$1:$1048576 
$J$21 

また、Parentのワークシートの範囲を参照しても機能しません。 パラメータrngByValを試してください。また、より良い効果はありません。 ここに問題点がありますか?ありがとうございました。

+1

SpecialCellsはUDF()では機能しません。 –

答えて

1

.SpecialCells(xlCellTypeLastCell) UDFはExcel(またはあなたがその時点で使用しているプログラム)とやりとりすることができないため、UDFでは機能しません。何あなたがができることは次のとおりです。これは単純化されていますが、元金が同じである

Sub SpecialCellWorksFine() 
x = Selection.Worksheet.Cells.SpecialCells(xlCellTypeLastCell).Address(False, False) 

n = y(x) 

End Sub 

Public Function y(x As String) 
'Code goes here 
End Function 

、あなたはあなたがそれを呼び出す前に、UDF に入り、その後、あなたに必要なものを引っ張って欲しいもの値割り当てUDF(私が信じる限界は30です)

関連する問題