如果(Windows-)用户名等于NAME,则更改单元格的背景颜色

问题描述 投票:0回答:2

我正在使用 LibreOffice-Calc,我想“读取”Windows 登录用户名。如果用户打开电子表格,则应将特定的单元格背景颜色更改为黄色。

在电子表格中,我有 12 个表格(一月...十二月或“0-11”)。在每个表中,“A”列中都有许多名称(不是 Windows 用户名),例如单元格 A2 = John Paulson。

如果(Windows-)用户“johnp”打开电子表格,则 A2 到 Z2 行的背景颜色应为黄色。

这是我想要实现的一个非常基本的开始:

Sub selectUserrow

    Dim oUser As String
    Dim oTable As String '??
    Dim oColor As String '??
    oUser = Environ("USERNAME")
    oTable = 0-11 '??
    oColor = '?? .fillcolor=rgb(255,255,0)
    If oUser = "johnp" Then
        [...change cell-bg-color to yellow (in all tables 0-11) from A2 till Z2...] '??
    ElseIf oUser = "susanm" Then
        [...change cell-bg-color to yellow (in all tables 0-11) from A3 till Z3...] '??
    Else
        [...do nothing...] '??
    EndIF   

End Sub

谢谢!

libreoffice libreoffice-calc libreoffice-basic
2个回答
1
投票

一个可能的解决方案是通过宏提供环境变量的值。这使得电子表格的公式可以访问该值。

Function Env(Name as String)
    Env = Environ(Name)
End Function

然后向每个表添加一列包含用户名的列。您可能想隐藏它以避免刺激。

这可能看起来像这样(由于我的懒惰,我使用了A列,你可以使用任何你想要的):

然后为您的范围添加条件格式,在我的示例中:

条件一:

  • “公式是” -
    $A1=ENV("USERNAME")
  • 选择准备好的款式

范围:

  • A1:Z1048576

注意:为了保护我的隐私,我使用了

ENV("SESSIONNAME")
。因此,黄色背景位于“Console”所在行...


0
投票

正如@JohnSUN 在评论中发表的:

...将姓名对应表移动到额外的第十三页并将其隐藏会更容易吗?在这种情况下,您只需要简单 UDF 中的 Environ("USERNAME") 行和使用 VLOOKUP() 公式的条件格式

我创建了一个新工作表,其中包含

A
列中的所有 Windows 登录名。另外,在
B
栏中我写下了用户的全名。

在“主”表中,我使用

VLOOKUP()
函数获取所有名称。 此处描述了此功能的工作原理。 我将包含所有胜利名称的列
A
隐藏在主表中以避免刺激。所以全名显示在
B
栏中。

所以,我在文档的宏编辑器中添加了以下功能:

Function USERNAME()
USERNAME = Environ("USERNAME")
End Function

通过该功能,我可以使用

=USERNAME()
调用 Windows 登录名称。

最后一步是为每一行添加条件格式。我通过

Formula is
条件实现了这一目标。在右侧字段中写下
$A1=USERNAME()
。第二行是
$A2=USERNAME()
,依此类推。 我选择所需的样式,并在字段
Range
中选择了应具有背景颜色的行(例如 A1:Z1)。

© www.soinside.com 2019 - 2024. All rights reserved.