Case 〃B 材料〃 Case 〃C 材料〃 'b65535'。End(xlUp)。Offset(…I; 0)。Select Selection。Font。ColorIndex = 3 Selection。Interior。ColorIndex = 6 'b65535'。End(xlUp)。Offset(…I; 1)。Select Selection。Font。ColorIndex = 3 Selection。Interior。ColorIndex = 6 411 …………………………………………………………Page 412…………………………………………………………… 'b65535'。End(xlUp)。Offset(…I; …1)。Select Selection。Font。ColorIndex = 3 Selection。Interior。ColorIndex = 6 End Select Next I Cells(X; Y)。Select "动作前单元格 End Sub A:Rowen 选中 B2…》格式…》条件格式…》公式…》=(LEFT(B2;1)=〃A〃)…》设定字体及图案。添加公式…》类 推。。。用格式刷填充到所需单元格。条件格式最多可设定三个;多过请用 VBA 实现 在 VBA 的FRM 窗口右上方的“X”如果去掉 Q:问题一:关于加密窗口的问题!上次请教了一个关闭 EXCEL 函数的问题!现在又发现一个问 题:即在 VBA 的FRM 窗口右上方的“X”如果去掉?因为它关闭了我的加密窗口就不起作用? 或者如果按“X”的时候,自动关闭EXCEL 就行,如何?多谢! 问题二,我每次经过加密窗口后进入工作表,总是被隐藏了,用什么函数把隐藏的自动打开? 这样我的可以写一个宏!OK! A: tof Private Sub UserForm_QueryClose(Cancel As Integer; CloseMode As Integer) If CloseMode 1 Then Cancel = 1 UserForm1。Caption = 〃The Close box won"t work! Click me!〃 End Sub dick Sub dd() For i = 1 To Worksheets。Count Sheets(i)。Visible = True Next i End Sub vba for excel 程序纠错 Q:我想对所有工作表进行将公式转为数值,录制宏后加上了几句但结果不对,请斧正! sub aa() dim sht as worksheet For Each sht In Worksheets ActiveSheet。Range(〃A1:C4〃)。Select Selection。Copy Selection。PasteSpecial Paste:=xlValues; Operation:=xlNone; SkipBlanks:= _ False; Transpose:=False ActiveSheet。Paste Application。CutCopyMode = False Next 412 …………………………………………………………Page 413…………………………………………………………… End Sub A: roof 试试在 for。。。each。。。和 activesheet。。。之间加上一句“sht。activate〃。结果如下: sub aa() dim sht as worksheet For Each sht In Worksheets sht。activate ActiveSheet。Range(〃A1:C4〃)。Select Selection。Copy Selection。PasteSpecial Paste:=xlValues; Operation:=xlNone; SkipBlanks:= _ False; Transpose:=False ActiveSheet。Paste Application。CutCopyMode = False Next End Sub excelhelp:其实录制得来的宏(macro)程序可以自行修改,以达到高效率、精简的目的。你 的程序这样改会较容易看得懂,记着,Selection 一般可以省去,使程序一气呵成,也可以避 免现存储存格(activecell,浮标所在地)给移动。 Sub aa() Dim Sht As Worksheet For Each Sht In Worksheets With Sht。Range(〃A1:C4〃) 。Copy 。PasteSpecial Paste:=xlValues; Operation:=xlNone; SkipBlanks:=False; Transpose:=False End With Application。CutCopyMode = False Next End Sub 虽然以上的程序可以把 A1:C4 的公式删去,但它有两个缺点: 1)范围只能限定为A1:C4,要是多了一个不在此范围的储存格(cell)有公式,又或是每张 工作表(worksheet)的范围都不一样,这程序便会有问题; 2)在宏执行时,画面会闪动,这是Copy 和 Paste 的副作用。 故此,我建议用以下程序代替: Sub aa2() Dim wSht As Worksheet Dim rCell As Range For Each wSht In Worksheets For Each rCell In wSht。UsedRange rCell。Value = rCell。Value Next Next 413 …………………………………………………………Page 414…………………………………………………………… End Sub 这样写较简洁,也没有上述的问题。 leaf :Sub aa() Dim sht as WorkSheet Dim rng as Range For Each sht In Worksheets Set rng = sht。Cells With rng 。Copy 。PasteSpecial Paste:=xlValues End With Application。CutCopyMode = False Next End Sub 请问各位有什么方法可以使工作表从 1 至 50 自动排列 Sub paixu() For i = 1 To Sheets。Count For j = i To Sheets。Count If Int(Sheets(i)。Name) 》 Int(Sheets(j)。Name) Then Sheets(j)。Move Before:=Sheets(i) End If Next j Next i End Sub 如何将自动将公式的值固定在单元格 我又有新问题了。怎么样在一定的条件下将公式转换成值固定在在单元格内? 解答:Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object; ByVal Target As Excel。Range) With ThisWorkbook。ActiveSheet If Target。Column = 3 And Target。Row 》 1 Then If VBA。Trim(。Cells(Target。Row; 4)。Value) = 〃counting〃 Then Target。Value = 。Cells(Target。Row; 2) 。Cells(Target。Row; 1) End If End If End With End Sub 将这段内容加入到 thisworkbook 模块中,在你选中要计算的单元格时,会为你自动计算,当 然你也可以修改一下使其完全自动化。 414 …………………………………………………………Page 415…………………………………………………………… 输入字母转换成设定的数值 比如,我设置第一个框的范围是(a=2。7 b=1。8 c=0。9 d=0)如果我输入c,那它能不能变成 0。9 或者最后相加减的时候转换? 解答:Private Sub Workbook_SheetChange(ByVal Sh As Object; ByVal Target As Range) If Target。Value = 〃a〃 Then Target。Value = 2。7 ElseIf Target。Value = 〃b〃 Then Target。Value = 1。8 ElseIf Target。Value = 〃c〃 Then Target。Value = 0。9 ElseIf Target。Value = 〃d〃 Then Target。Value = 0 End If End Sub 或者:如果临时要用,在“工具-自动更正?