Vba 代码帮助:查找列,并格式化单元格
我的宏代码有点问题,需要你的建议。这里是我的基本宏代码:Vba 代码帮助:查找列,并格式化单元格,vba,excel,excel-2010,Vba,Excel,Excel 2010,我的宏代码有点问题,需要你的建议。这里是我的基本宏代码: Option Explicit Sub NurZumUeben() 'oberste Zeile löschen, fixieren und linksbündig ausrichten Rows("1:1").Select Selection.Delete Shift:=xlUp With ActiveWindow .SplitColumn = 0 .SplitRow = 1 End With ActiveWindow.
Option Explicit
Sub NurZumUeben()
'oberste Zeile löschen, fixieren und linksbündig ausrichten
Rows("1:1").Select
Selection.Delete Shift:=xlUp
With ActiveWindow
.SplitColumn = 0
.SplitRow = 1
End With
ActiveWindow.FreezePanes = True
'Jede zweite Zeile schattieren
Application.ScreenUpdating = False
Dim Zeile, ZeilenNr As Integer
With ActiveSheet.UsedRange.Rows
.Interior.ColorIndex = xlNone
.Borders.ColorIndex = xlNone
End With
ZeilenNr = 2
For Zeile = 2 To ActiveSheet.UsedRange.Rows.Count
With Rows(Zeile)
If .Hidden = False Then
If ZeilenNr Mod 2 = 0 Then
.Interior.ColorIndex = 15
.Borders.Weight = xlThin
.Borders.ColorIndex = 16
ZeilenNr = ZeilenNr + 1
Else
ZeilenNr = ZeilenNr + 1
End If
End If
End With
Next Zeile
Application.ScreenUpdating = True
'oberste Zeile einfärben
Rows("1:1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 65535
.TintAndShade = 0
.PatternTintAndShade = 0
End With
'Spalte_suchen&formatieren
Dim iLeSpa As Integer
Dim iSpalte As Integer
Dim bGefunden As Boolean
iLeSpa = IIf(IsEmpty(Cells(1, Columns.Count)), Cells(1, _
Columns.Count).End(xlToLeft).Column, Columns.Count)
For iSpalte = 1 To iLeSpa
If Cells(1, iSpalte).Value = "click_thru_pct" Then
bGefunden = True
Exit For
End If
Next iSpalte
If bGefunden Then
With Range(Cells(2, iSpalte), Cells(5000, iSpalte))
.Replace What:="%", Replacement:="", LookAt:=xlPart, SearchOrder:=xlByRows
Range("K1") = 100
Range("K1").Copy
.PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide
.NumberFormat = "0.00%"
Range("K1").Clear
End With
Else
MsgBox "Die Überschrift ""click_thru_pct"" wurde nicht gefunden.", _
48, " Hinweis für " & Application.UserName
End If
End Sub
谢谢所有能帮忙的人。不幸的是,我得到的最终格式不是很顺利
结果如下:
我不想给整个列上色,只想给顶行上色。此外,0.00%的低空字段会不断格式化
此外,我注意到在第一行着色之后,字段K1是可见的。不幸的是,这对我来说是不切实际的,因为这些Excel文档在行中的位置也可能不同
这是一份文档,如果需要,您可以在上面进行测试。
非常感谢更改模块函数以计算for循环变量。我认为使用单独的变量没有任何意义。更改此项:
ZeilenNr = 2
For Zeile = 2 To ActiveSheet.UsedRange.Rows.Count
With Rows(Zeile)
If .Hidden = False Then
If ZeilenNr Mod 2 = 0 Then
.Interior.ColorIndex = 15
.Borders.Weight = xlThin
.Borders.ColorIndex = 16
ZeilenNr = ZeilenNr + 1
Else
ZeilenNr = ZeilenNr + 1
End If
End If
End With
Next Zeile
为此:
For Zeile = 2 To ActiveSheet.UsedRange.Rows.Count
With Rows(Zeile)
If .Hidden = False Then
If Zeile Mod 2 = 0 Then
.Interior.ColorIndex = 15
.Borders.Weight = xlThin
.Borders.ColorIndex = 16
End If
End If
End With
Next Zeile
如果我遗漏了什么,我道歉。此外,我无法查看您提供的示例,因为该站点需要登录,而且不是英文的。再次抱歉。在您现有的代码中
5000
替换为ActiveSheet.UsedRange.Rows.Count
Range(“K1”)替换Range(“K1”)。ClearContents
您可以使用
For Zeile = 2 To ActiveSheet.Range("A1").CurrentRegion.Rows.Count-1
.UsedRange
并不总是正确重置。您的样本似乎是.CurrentRegion
的一个很好的候选样本。感谢您的建议和指出我的样本文件。我马上换。如果您能在我的Excel电子表格上测试它,我将不胜感激。您还需要实现Erik的答案。格式化单元格将导致它包含在usedrange中(我之前没有看到代码的底部)。很抱歉,我认为我没有正确地表达自己。执行埃里克的建议,两个想法仍然是错误的。1) 我不会浏览整列,只浏览第一行。2) 将删除最后一个顶部柱k。我想我没有恰当地表达我自己。执行你的建议,两个想法仍然是错误的。1) 我不会浏览整列,只浏览第一行。2) 将删除最后一个顶部柱k。非常感谢