字加上今天的一个数据除以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种