虎虎漫画小说

繁体版 简体版
虎虎漫画小说 > > Excel_word_ppt_office使用技巧大全(最新超全完整版)最新章节 > 第 81 章

第 81 章 免费阅读

字加上今天的一个数据除以1000 每天改公式烦死了 能不能做一个auto_open宏

[2002年9月22日.XLS]sheet1!a10+a9/1000

红字这段自动变成 today-1 也就是昨天的日期,

我试了好几次没有成功 请 vba 高手指点

解答:

时间原因,做得很简单,你可以自己加一点Error语句,在运行宏之前检查昨天的文件是否存在等等,建议不要放在auto_open()里,如果要必须放,要加语句检查一下宏运行的次数,不可重复运行。以下语句在Excel XP中通过检测。

Sub auto_open()

Dim dataToday, dateLastday As String

dateToday = CStr(Date)

dateLastday = CStr(Date - 1)

ChDir "C:\"

Workbooks.Add

ActiveWorkbook.SaveAs Filencom:=dateToday

Cells(9, 1).Select

ActiveCell.FormulaR1C1 = "='[" & dateLastday & ".xls]Sheet1'!R9C1+'[" & dateLastday & ".xls]Sheet1'!R10C1/1000"

End Sub

又问:如果日期后面还有文字怎么办?

答:dateToday=CStr(Date) & "(你要加的文字尽管放)"

怎么能在excel没打开文件的时候被禁用

如何能让一个宏命令按钮在无文件打开状态下被禁用?

解答:例如这个按钮在Standard工具列,名字叫GO(&C),做法如下:

在personal增加一个class

Public WithEvents App As Application

Private Sub App_WorkbookActivate(ByVal Wb As Workbook)

Application.CommandBars("Standard").Controls("GO(&C)").Enabled = True

End Sub

Private Sub App_WorkbookDeactivate(ByVal Wb As Workbook)

Application.CommandBars("Standard").Controls("GO(&C)").Enabled = False

End Sub

再到personal任何1个Module

Public z As New Class1

Sub lnitialzeApp()

Set z.App = Application

End Sub

在已有数值的单元格中再增加或减去另一个数

Sub MyMicro( )

OldValue = Val (ActiveCell.Value )

InputValue = InputBox ( “输入数值,负数前输入减号”,“小小计算器”)

ActiveCell.Value = Val (OldValue + InputValue)

End Sub

问:此宏一次只能输入一个数值,如何才能一次输入多个数值(如:1+2+3...),另外,能否进行乖除运算?

答:Inputvalue1=.....

Inputvalue2=.....

Inputvalue3=.....

......

ActiveCell.Value = Val (OldValue + InputValue1+Inputvalue2+Inputvalue3...)

乘或除把里面的‘+’换成‘*’或‘/’即可

对excel里录入的数据进行关系验证

比如:A1、A2、A3这3个单元格,已经输入了3个数字,

现在需要验证这3个已经输入的数据是否满足A1=A2+A3的

关系,应该如何设置呢?

我的方法是:在一个新的单元格中输入以下公式:=if(a1=a2+a3,true,false),如果a1=a2+a3,该单元格的值为true,否则为false 。但是这种做法会占用到该工作表的空间,而该工作表已经非常大了(有1000多行,要满足各种各样公式关系的很多),我希望能够做到跳出一个窗口告诉我哪些单元格不符合公式关系,相当于审核工作表的功能。

解答:本例是依据竖向记录检验的。运行时将x替换成记录行数。

Sub pd()

Dim cw(1000) As Integer

For i = 1 To x '----x为记录行数

If Sheet1.Cells(i, 3) <> Sheet1.Cells(i, 1) + Sheet1.Cells(i, 2) Then

j = j + 1

cw(j) = i

End If

Next i

Sheets(1).Select

For i = 1 To j

For k = 1 To 3

Sheet1.Cells(cw(i), k).Select

Selection.Font.Bold = True

Selection.Interior.ColorIndex = 35

Selection.Font.ColorIndex = 3

Next k

Next i

Sheets(2).Select

Sheets(2).Cells(1, 1) = "数据数值输入错误有" & j & "处"

For i = 1 To j

Sheets(2).Cells(i + 1, 1) = "数据数值输入有误!!!(第" & cw(i) & "行)"

Next i

End Sub

如何自动跳过有公式的单元格继续输入

可以使用Change事件完成

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Row < 11 And Target.Column < 3 Then

If Target.Column = 1 Then

Target.Offset(0, 1).Select

ElseIf Target.Column = 2 Then

Target.Offset(1, -1).Select

Else

Exit Sub

End If

End If

End Sub

查询设计“最近”“连续”“三次”"Pass"

Q:字段名5个或更多,记录有近8000条。

ID 产品编号 订单编号 供应商名称 来货结果

1 A001 0001 3M Fail /2 A001 0002 3M Fail /3 A001 0003 3M Pass/4 A001 0004 3M Pass /5 A001 0005 3M Pass /6 A002 0006 JVC Pass /7 A002 0007 JVC Pass /8 A002 0008 JVC Pass /9 A002 0009 JVC Pass /…………按照公司进货处理,如果某一产品“最近”“连续”“三次”"Pass"则此产品以后之来货可以“免检”。订单编号由过去至现在为0001~0013至更大,则上例中, 请问,如何设计查询?

A: 方法1:

用公式分类排序(闻鸥学堂里有),只排出每类前三个,判断是否都是“Pass”,然后。。。。会了?

方法:

1. 在F4输入公式

=IF(AND(B4=B3,B4=B2,E4="pass",E3="pass",E2="pass"),1,0)

2. 在F4单元格右下角快按2下(填满公式)

3. 将下列程序COPY至VBA中,再做个按钮(更新)即可

***************************

Sub DD()

On Error GoTo 999

Range("H2:H200") = ""

For I = 1 To 99 '假設有產品編號99種

A = "0" & Trim(Str(I)) 'A001~A020

Range("B:B").Select '

Cells.Find(What:=A, After:=ActiveCell, LookIn:=xlFormulas, LookAt _

:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlUp, MatchCase:= _

False).Activate '找最後一筆

B = ActiveCell

If Cells(ActiveCell.Row, 6) = 1 Then '是否為連續3筆PASS

Range("H65535").End(xlUp).Offset(1).Select '找最後一筆

ActiveCell = B '免檢資料放在H欄

End If

Next I

999

[A1].Select

End Sub

方法3:

小修改,不使用公式,只使用VBA

Sub DD()

On Error GoTo 999

Range("H2:H200") = ""

For I = 1 To 99 '假设有产品编号99种

『加入书签,方便阅读』