2014-11-21 74 views
0

我想编写一个宏,它将格式化单元格,如果列之前有特定的let。 例如,假设有公司ABC,DEF,GHI JKL等 任何地方,列B用于公司ABC和GHI,然后将列C中的格式更改为“000000-00-0000” 列B用于其他公司则更改格式在C列中以“000000-00-00”如果语句格式单元格

Sub FixFormat() 
    If Range("B") = ABC Then .NumberFormat B+1 ="000000-00-00" 
    If Range("B") = GHI Then .NumberFormat B+1 ="000000-00-00" 
    If Range("B") = DEF Then .NumberFormat B+1 ="000000-00-0000" 
    If Range("B") = JKL Then .NumberFormat B+1 ="000000-00-0000" 
End Sub 

我知道这不工作,我不是这种类型的东西最好,因此任何帮助都将是不胜感激。

回答

1

尝试这样?

Sub NumFormat() 
Dim i as integer 

For i = 1 to 100 
Select Case Sheet1.Cells(1,i) 
    Case "ABC" Or "GHI" 
     Sheet1.Cells(1,i+1).EntireColumn.NumberFormat = "######-##-##" 
    Case "DEF" Or "JKL" 
     Sheet1.Cells(1,i+1).EntireColumn.NumberFormat - "######-##-####" 
End Select 
Next 
End Sub 

我在电脑上的Excel没有这样做,所以我不能调试,但让我知道,如果这是那种你正在寻找的东西!也:

http://msdn.microsoft.com/en-us/library/office/ff196401%28v=office.15%29.aspx

2

假设你有选自C 1细胞中的值可以尝试下面的代码作为片模块

Sub chgFmt() 
    For Each rCell In Range("C1:C" & Range("C1").End(xlDown).Row) 
     Select Case rCell.Offset(0, -1).Value 
       Case "ABC", "DEF" 
        rCell.NumberFormat = "000000-00-00" 
       Case Else 
        rCell.NumberFormat = "000000-00-0000" 
     End Select 
    Next 
End Sub 
+0

我计算出来: 子chgFmt() 对于每个RCELL在范围(“C1:C”&Range(“C”&Cells.Rows.Count).End(xlUp).Row) Select Case rCell.Offset(0,-1).Value Case“ABC”,“DEF “ rCell.NumberFormat =”000000-00-00“ Case Else rCell.NumberFormat =“000000-00-0000” End Select Next End Sub' – MadChadders 2014-11-25 14:57:43