2013-05-29 162 views
2

我在VBA以下功能,试图清除在Excel工作表Sheet1的A1单元格,但它并没有明确的内容,也可以作为输出返回False:Excel的VBA - Range.Clear并不透明细胞

Function test() 
    Application.Volatile (False)  
    test = Worksheets("Sheet1").Range("A1:A1").Clear 
End Function 

另请不要在此时锁定属性为True,即使我将它设为False,如果我打印它,下一行锁定属性为True。

有什么建议吗?

由于

+2

准确的代码适用于我的目的。也可以尝试使用ClearContents功能。但是,这看起来像是另一个问题。锁定属性是什么意思?表单/单元是否受到保护?在这种情况下,您必须通过提供密码来使用unprotect命令。 – Aziz

+0

工作表本身它没有得到保护,也用于早期工作的相同功能现在不起作用 –

+0

任何想法的可能原因? –

回答

4
  1. 功能的VBA通常是具有一个数据类型的变量。在您的示例中,数据类型丢失,这意味着数据类型设置为Variable
  2. 显然,您的数据类型恰好是布尔值,所以函数被设置为False
  3. 使用函数改变单元格内容是一种不好的风格。然而,你的代码工作没有问题作为子:

    Sub test() 
        Application.Volatile (False) 
        Worksheets("Sheet1").Range("A1:A1").Clear 
    End Sub 
    
+0

有趣。任何线索为什么它在作为函数使用时在我的最后工作? – Aziz

+0

如果用作单元格公式,UDF不能删除单元格内容。如果使用VBE,可能会发现用户在发现某些单元格中的数据不可逆转地被覆盖时发生令人不快的意外(运行VBA后撤消操作不起作用)。 –

1

我不知道到底,但据我所知在功能时无法格式的Excel工作表,而不是我们可以使用子程序做到这一点。

Sub test() 
    Worksheets("sheet1").Range("A1").Clear 
End Sub