隐藏公式栏中的公式

kaz*_*one 5 excel vba excel-vba

当我在visual basic中使用下面HYPERLINK显示的代码时,该部分出现在bar工作表中的公式中.我只想"TextHere"在公式栏中显示.

我可以添加哪些附加代码?我试图通过在保护选项卡中更改其属性来隐藏它,但它不允许我再编辑TEXT.我希望它仍然是编辑友好的.

Sub IndexingSheets()
    Sheets(1).Range("A1").Formula = _
    "=HYPERLINK(""#" & ThisWorkbook.Sheets(2).Name & "!A2"", ""TextHere"")"
End Sub
Run Code Online (Sandbox Code Playgroud)

小智 16

如何隐藏公式栏中的公式
让我演示两种隐藏公式栏中公式的方法


NO1.

要隐藏你必须设置的公式栏中的公式HiddenFormula属性的Range对象,以True
当工作表被它只会工作,保护
这样的伎俩在这里是:
- >选择所有的细胞和解锁他们的编辑
- >选择单元格要隐藏公式来自并锁定它们
- >保护表格

选择所有单元格并解锁它们进行编辑
- >选择所有单元格,右键单击任意位置以格式化单元格.转到Protection选项卡并取消选择Locked 解锁

选择要隐藏公式的单元格并锁定它们
- >选择A1,右键单击,转到Protection选项卡并选择LockedHidden 隐藏公式

保护工作表
- >单击Review选项卡,然后Protect Sheet单击确定(无需密码)
保护表

现在请注意,您仍然可以编辑除A1之外的任何单元格.看看公式栏 - 没有公式!它的隐藏!
DONE


这是一个VBA解决方案:

Sub HideTheFormula()

    Dim ws As Worksheet
    Set ws = Sheets(1)

    Call IndexingSheets

    Call Setup(ws)
    Call ProtectSheet(ws)
    'Call UnprotectSheet(ws)

End Sub

Sub IndexingSheets()
    Sheets(1).Range("A1").Formula = _
    "=HYPERLINK(""#" & ThisWorkbook.Sheets(2).Name & "!A2"", ""TextHere"")"
End Sub

Sub ProtectSheet(ByRef ws As Worksheet)
    'ws.Protect userinterfaceonly:=True
    ws.Protect
End Sub

Sub UnprotectSheet(ByRef ws As Worksheet)
    ws.Unprotect
End Sub

Sub Setup(ByRef ws As Worksheet)
    With ws.Cells
        .Locked = False
        .FormulaHidden = False
    End With
    ws.Range("A1").Locked = True
    ws.Range("A1").FormulaHidden = True
End Sub
Run Code Online (Sandbox Code Playgroud)

NO2.

使用新的电子表格将此代码插入新的VBE(ALT+ F11)Module.MainView Macros窗口执行宏(ALT+ F8)

Sub Main()
    With Range("A1")
        .Formula = "=1+1"
    End With

    With Range("A2")
        .Formula = "=1+1"
        .Value = .Value
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)

执行后看看床单范围A1A2
A1被选中,你看看公式栏中可以看到公式=1+1,
然而,当你选择A2,即使你已经把该单元格的公式,它已经evaluated隐藏所以现在显示器评估值(多酷!)
评估

同样的原理,当你应用从封闭的工作簿拉着一个值,例如

Sub PullValueFromAClosedWorkbooksRange()
    With Range("A1")
        .Formula = "='C:\Users\admin\Desktop\[temp.xlsm]Sheet1'!A1"
        .Value = .Value
    End With
End Sub
Run Code Online (Sandbox Code Playgroud)