在 Excel 中对同一工作表上的多个表应用动态格式



我使用Excel文档来跟踪加密货币,并且在同一张纸上有多个表。我正在寻找 VBA 代码,该代码将根据另一个单元格中的输入格式化单元格。

目前,我正在使用以下代码基于另一个单元格进行格式化。我想要实现的示例:http://prntscr.com/p3sof8

法典:

Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count = 1 Then
If .Column = 1 Then
If .Value <> "BTC" Then
.Offset(, 1).NumberFormat = "0.00000000" & """ " & .Value & """"
Else
.Offset(, 1).NumberFormat = """" & ChrW(&HE3F) & """" & "0.00000000"
End If
End If
End If
End With
End Sub

这非常适合一张纸。

我正在寻找的是将这种代码用于同一工作表上的多个表,这些表具有不同的偏移量,"定义"列等。

例如,在表 1 中,货币在 A 列中输入,格式化单元格在 B 列中输入。在表 2 中,输入列为 C,结果为 E 和 F 等。

是否可以更改上面的代码,以便我可以将其用于单个工作表上的不同表?

非常感谢您的见解!

由于它与表绑定,并且您不能有重复的表名称,因此可以将其放在ThisWorkbook中并像这样开始:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

。它将在每张纸上工作。

..或者像这样 在特定工作表中,如果只需要在一张工作表中:

Private Sub Worksheet_Change(ByVal Target As Range)

..然后:

Dim lObj As ListObject, cl As Long, ofs As Long, rsz As Long, fc As Long
With Target
If .Count = 1 Then
Set lObj = .ListObject
If Not lObj Is Nothing Then
fc = lObj.Range.Cells(1).Column - 1
Select Case lObj
Case "Table1"
cl = 1 + fc 'Starting column
ofs = 1 'Offset
rsz = 1 'Resize(number of columns)
Case "Table2"
cl = 3 + fc 'Starting column
ofs = 2 'Offset
rsz = 2 'Resize(number of columns)
'Case "Table3"
'    cl = 4 + fc 'Starting column
'    ofs = 7 'Offset
'    rsz = 1 'Resize(number of columns)
End Select
If .Column = cl Then
Select Case .Value
Case "BTC"
.Offset(, ofs).Resize(, rsz).NumberFormat = """" & ChrW(&HE3F) & """" & "0.00000000"
Case "EUR"
.Offset(, ofs).Resize(, rsz).NumberFormat = "0.00" & """" & ChrW(8364) & """"
Case Else
.Offset(, ofs).Resize(, rsz).NumberFormat = "0.00000000" & """ " & .Value & """"
End Select
End If
End If
End If
End With
End Sub

最新更新