Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
引用单元格的自定义Excel格式_Excel_Formats - Fatal编程技术网

引用单元格的自定义Excel格式

引用单元格的自定义Excel格式,excel,formats,Excel,Formats,我想有一个Excel表格,显示自定义格式。自定义格式使用另一个单元格的内容。以下是一个例子: Column A : Show a column of numbers in accounting format in the currency of cell(b1). Cell(B1) : "XYZ" 其目的是用户可以输入自己的货币。我知道Excel中有一些格式化工具可以实现这一点,但这是一个基于另一个单元格内容实现自定义格式的问题。这才是真正的问题…工作表的私有代码表中的更改会改变A列中的数字

我想有一个Excel表格,显示自定义格式。自定义格式使用另一个单元格的内容。以下是一个例子:

Column A : Show a column of numbers in accounting format in the currency of cell(b1).

Cell(B1) : "XYZ"

其目的是用户可以输入自己的货币。我知道Excel中有一些格式化工具可以实现这一点,但这是一个基于另一个单元格内容实现自定义格式的问题。这才是真正的问题…

工作表的私有代码表中的更改会改变A列中的数字格式

private sub worksheet_change (byval target as range)
    if not intersect(target, range("b1")) is nothing then
        if len(cells(1, "b").value2) = 3 then
            dim f as string
            f = ucase(cells(1, "b").value2)
            f = "0 \" & left(f, 1) & "\" & mid(f, 2, 1) & "\" & right(f, 1)
            range(cells(2, "a"), cells(rows.count, "a").end(xlup)).numberformat = f
        end if
    end if
end sub

在不删除先前创建的CNF的情况下,可以将最多数量的自定义数字格式添加到现有数字格式中;我想大概是30左右。

工作表的私有代码表中的工作表更改可能会改变A列中的数字格式

private sub worksheet_change (byval target as range)
    if not intersect(target, range("b1")) is nothing then
        if len(cells(1, "b").value2) = 3 then
            dim f as string
            f = ucase(cells(1, "b").value2)
            f = "0 \" & left(f, 1) & "\" & mid(f, 2, 1) & "\" & right(f, 1)
            range(cells(2, "a"), cells(rows.count, "a").end(xlup)).numberformat = f
        end if
    end if
end sub

在不删除先前创建的CNF的情况下,可以将最多数量的自定义数字格式添加到现有数字格式中;我想大概是30左右。

假设你想要这样的东西:

..然后将其放在工作表模块中:

Sub worksheet_Change(ByVal Target As Range)
Dim sFormat As String

If Not Intersect(Target, Range("NumberFormat")) Is Nothing Then
    sFormat = Chr(34) & Target.Value & Chr(34) & " "
    Range("FormatWhat").NumberFormat = sFormat & "$#,##0;" & sFormat & "[Red]-$#,##0;-"
End If

End Sub
…并在名称框中为B1指定名称编号格式:

…并将部分或全部列命名为“FormatWhat”

(使用命名范围可避免在代码中硬编码引用。如果您将单元格地址硬编码到代码中,如果您(或用户)以后在硬编码引用的上方/左侧添加新行/列,则这些引用将指向错误的位置。使用名称可避免这种情况,并使代码更加健壮


我几乎从不在代码中硬编码单元格地址。我几乎总是使用Excel表(也称为ListObjects)来保存VBA与之交互的任何数据,原因也是一样的……ListObjects是动态命名范围,Excel会自动展开/收缩以适应数据。)

假设您需要这样的内容:

..然后将其放在工作表模块中:

Sub worksheet_Change(ByVal Target As Range)
Dim sFormat As String

If Not Intersect(Target, Range("NumberFormat")) Is Nothing Then
    sFormat = Chr(34) & Target.Value & Chr(34) & " "
    Range("FormatWhat").NumberFormat = sFormat & "$#,##0;" & sFormat & "[Red]-$#,##0;-"
End If

End Sub
…并在名称框中为B1指定名称编号格式:

…并将部分或全部列命名为“FormatWhat”

(使用命名范围可避免在代码中硬编码引用。如果您将单元格地址硬编码到代码中,如果您(或用户)以后在硬编码引用的上方/左侧添加新行/列,则这些引用将指向错误的位置。使用名称可避免这种情况,并使代码更加健壮


我几乎从不在代码中硬编码单元格地址。我几乎总是使用Excel表(又称ListObjects)来保存VBA与之交互的任何数据,原因也是一样的……ListObjects是动态命名范围,Excel会自动展开/收缩以适应数据。)

我很确定答案是“否”,当然,这些功能可以用VBAYep实现——我也这么认为。现在它是一个自定义函数,但感觉有点不雅观。我很确定答案是“不”,当然,这个功能可以用VBAYep实现——我想是的。现在它是一个自定义函数,但感觉有点不雅观。答案很好-尽管我将另一个答案标记为“正确”,因为代码有点清晰,示例使它更完整。不过我还是投了你的票。ThxGood答案-尽管我将另一个答案标记为“正确”,因为代码有点清晰,并且示例使它更完整。不过我还是投了你的票。ThxThx。是的,这是最好的答案。快速问-如果这是一个全球性的事情,是否也有更改…谢谢。是的,这是最好的答案。快速问-如果这是一件全球性的事情,是否也会有变化。。。