将sub转换为function以将其用作公式

时间:2017-02-04 19:31:32

标签: excel vba excel-vba

以下代码与我合作正常。我需要你的帮助和支持才能使它成为一个功能,所以我可以在任何单元格中写入 =adj()=adj(A1)并且公式将适用,

Sub adj()

Dim i, j As Integer  
Sheet1.Select

With Sheet1    
    j = Range(ActiveCell.Offset(0, -2), ActiveCell.Offset(0, -2)).Value    
    For i = 1 To j    
        ActiveCell.Formula = "=" & Range(ActiveCell.Offset(0, -1), ActiveCell.Offset(0, -1)) & i & "))" & "&char(10)"       
    Next i       
End With

End Sub

2 个答案:

答案 0 :(得分:0)

如果您想将更改传递给公式并传入范围,则可以使用以下内容:

    @property (nonatomic, strong) GADNativeExpressAdView *nAdView;
...
- (void)viewDidLoad
{
    [super viewDidLoad];
        _nAdView.adUnitID = @"ca-app-pub-mycode";
        _nAdView.rootViewController = self;
}
...
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
        GADRequest *request = [GADRequest request];
        [self.nAdView loadRequest:request];
        return _nAdView;
}

在这种情况下,您没有指定返回值,因此将忽略它​​。

Public Function Func(Byval MyRange as range) as variant

就像那样..

答案 1 :(得分:0)

我很难明白你在这里想要做什么。 我想你正在尝试用分离器字段来整合x个细胞......

所以,我会做以下更改......显然你可以相应地改变。

  1. 将输入声明为变体。如果不这样做并且类型不匹配,则函数不会在调试中调用。这也使您有机会处理输入。
  2. 放入错误处理程序以防止不必要的调试w.r.t.失败。
  3. 您不能以这种方式使用Evaluate。我想你正试图对A1等细胞进行评估。
  4. 必须从工作表上的Cell调用该函数,因为它使用Application.Caller。你不应该真的需要这个功能才能正常工作,但是如果你通过F9计算你打电话,我就把它放进去。
  5. 如果您希望每次重新计算时都进行计算,也可以放入行。但是,这应该谨慎使用,因为使用它时,您可以使用某些电子表格获得一些不必要的计算副作用。

    Application.Volatile 
    
    
    Public Function Adj(ByVal x As Variant, ByVal y As Variant) As String
    On Error GoTo ErrHandler
    
    Dim sSeparator As String, sCol As String
    Dim i As Integer
    
    'Get the column reference.
    sCol = Split(Columns(y).Address(False, False), ":")(1)
    
    'Activate the sheet.
    Application.Caller.Parent.Select
    
    sSeparator = Chr(10)
    For i = 1 To x
        Adj = Adj & Evaluate(sCol & i) & sSeparator
    Next
    'Remove the last seperator...
    Adj = Left(Adj, Len(Adj) - 1)
    
    Exit Function
    
    ErrHandler:
        'Maybe do something with the error return value message here..
        'Although this is a string, Excel will implictly convert to an error.
        Adj = "#VALUE!"
    End Function
    

    希望有所帮助。 P