Excel word ppt office使用技巧大全(DOC格式)-第73部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
中全表—复制— (在原位置)选择性粘贴—数值。请问用 VBA 语句如何编写?
388
…………………………………………………………Page 389……………………………………………………………
解答:請參考
With Cells
。Copy
。PasteSpecial Paste:=xlPastevalues
。Cells(1; 1)。Select
Application。CutCopyMode = False
End With
2、For Each x in 所有公式单元格
If Not x。Formula = 〃〃 Then
数值 = x。value
x。Formula = 〃〃
x。value = 数值
End If
Next
工作薄打开后个一分钟自动保存关闭,怎么写代码
1、 在 thiswork 中写入代码:
Private Sub Workbook_Open()
Me。RefreshAll
Application。OnTime Now + Timevalue (〃00:01:00〃); 〃Close_Me〃
End Sub
添加模块并写入代码:
Sub Close_Me()
ThisWorkbook。Save
ThisWorkbook。Close
End Sub
389
…………………………………………………………Page 390……………………………………………………………
我想把一个 sheet 拷贝后选择性粘贴为一个新的 sheet;怎么做
答:添加模块:
Sub test()
ThisWorkbook。Save
Sheet1。Move
With ActiveWorkbook。ActiveSheet。Cells
。Copy
。PasteSpecial Paste:=xlPasteValues
。Cells(1; 1)。Select
Application。CutCopyMode = False
End With
ThisWorkbook。Saved = True
ThisWorkbook。Close
End Sub
如何利用列标自动求和
当光标指在F1 时;能否利用 COLUMN()求 A1…E1 和,当光标指在 G1 时;能否利用 COLUMN()
求 A1…F1 和;而不用改变公式,比如:SUM(A1:?);就是说写个式子代替?;利用 COLUMN() 自动算
出最后列
1、=SUM(A1:INDIRECT(ADDRESS(ROW();COLUMN()…1;4)))
应该为:=SUM(INDIRECT(〃R1C1:R1C〃&COLUMN()…1;0))
2 、 用 VB
新建一个工作表,在 sheet1 的代码窗口中录入如下代码:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim iRow; iCol; iCol_rn As Integer
Dim Str1 As String
iRow = Target。Row
iCol = Target。Column
Range(〃M1〃)。ClearContents
iCol_rn = 'A1'。End(xlToRight)。Column
Str1 = Range(Cells(1; iCol_rn)。Address)。Address
If Target。Rows。Count 》= 2 Then GoTo Err
If iRow = 1 And iCol 》= 2 And iCol 2 And Row 《 21 Then
a = Target。Value
Target。Value = a * 10。22 * 20
End If
End Sub
解答:Private Sub Worksheet_Change(ByVal Target As Range)
Application。EnableEvents = False
If Target。Column = 6 And Target。Row 》 2 And Row 《 21 Then
a = Target。Value
Target。Value = a * 10。22 * 20
End If
Application。EnableEvents = True
End Sub
自动输入 ‘要点’两个字
工作表中有 500 行数据、F3 中包含红色的字符、F7 中包含红色的字符、。。。。。
想要达成的目的:如果 F 列的单元格中包含红色的字符,则在其同一行的 G 列中自动输入〃要
点〃两个字。请高手赐教!!
解答:有一個取巧的方法;請參考
On Error Resume Next
For i = 1 To 500
Color_Index = Cells(i; 〃F〃)。Font。ColorIndex
If IsNull(Color_Index) Then
Cells(i; 〃G〃) = 〃要點〃
End If
Next i
表格更新
是这样的,比如我已经有了一个原始表格 A,这时有人通知我A 表有错误,须加以修改,并给
391
…………………………………………………………Page 392……………………………………………………………
我一个表 B,表B 列出了须修改的参数(注意 B 的列数少于A 的列数,因A 的其它列无需修改)。
现在问题是如何根据表 B 中的新值,在表A 中找到相应位置,并加以修改。比如表B 中列出了
10002 的JOHN 的身高和体重等值需要修改,如何在A 中找到 10002 的相应位置(身高体重),
并加以修改。
解答:建议将表 B 复制至表 A 的 SHEET2,然后执行下列的宏即可
Sub change()
Dim dd As Range
Sheets(2)。Select
lastcell = Range(〃a65536〃)。End(xlUp)。Row
For Each dd In Range(Cells(2; 1); Cells(lastcell; 1))
If dd = 〃〃 Then Exit Sub
ff = dd。value
Set c = Sheets(1)。Columns(1)。Find(ff; lookat:=xlWhole)
If Not c Is Nothing Then
c。Offset(0; 2) = dd。Offset(0; 2)
c。Offset(0; 3) = dd。Offset(0; 3)
c。Offset(0; 5) = dd。Offset(0; 4)
End If
Next
End Sub
公式的自动填充
一张表中某几个不连续的列有公式,我不想一次全复制下去,最好是让它自动填充上一行的公
式,这样用多少就自动填下去,不知道有没有办法。
解答:Dim Mrow; Xrow; i As Integer
Mrow = Range(〃a65536〃)。End(xlUp)。Row
Xrow = Range(〃d65536〃)。End(xlUp)。Row + 1
Application。ScreenUpdating = False
For i = Xrow To Mrow
If Cells(i; 1) 〃〃 Then
Cells(i; 4) = Cells(i 1; 4) + Cells(i; 2) Cells(i; 3)
Cells (i; 6) = Cells(i; 2) * Cells(i; 5)
Cells(i; 8) = Cells(i 1; 8) Cells(i; 7) + Cells(i; 6)
Cells(i; 7) = Cells(i; 5) * Cells(i; 3)
End If
Next i
Application。ScreenUpdating = True
先输入其它列数据;最后再输入日期。
我想 A1 的值=A1+B1;其中B1 为变量,A1 为累计值
解答 1:用VBA 实现。
For i=1 to n
392
…………………………………………………………Page 393……………………………………………………………
A1=sheet1。cells(1;1)
A1=A1+B1
sheet1。cells(1;1)=A1
next n
解答 2:好象不用那么麻烦。选择B1 单元格,复制,选择 A1 单元格,选择性粘贴 (数值,加)
即可。
让〃工资总计〃等于几个打开的各个工作薄的最后一个工作表中的〃工资〃和
解答:把几个〃工资〃单元格定义为名称〃工资〃(方法:插入/名称/定义;在引用位置中选中几个
要相加的单元格;把这些区域定义为〃工资〃);在〃工资总计〃中输入公式 =sum(工资) 即可!或:
先打开宏记录器,然后你手工做一遍,最后停止纪录,在 vba 编辑其中编辑相应的代码即可!
如果只是想用公式解决,可以用 sum 函数,利用三维引用可以解决此问题
方法 3:Sub DD()
For i = 1 To Workbooks。Count
'bookname = Workbooks(i)。Name
'If bookname 〃name〃 Then '可自行判断名称〃主控 Workbook〃不列入加总
last = Workbooks(i)。Sheets。Count '最后一页(亦可用 SHEETS 名称判断加总)
sum1 = sum1 + Workbooks(i)。Sheets(last)。Range(〃a1〃) 'A1:工资
'End If
Next i
'B1' = sum1
End Sub
有两个表,表 1、表 2,其中的数据有相同的,如何比较出两个表中的相同的数据
解答:For i=1 to a(行数)
For j=1 to b(列数)
Da(i;j)=sheets(1)。cells(i;j)
Db(i;j)=sheets(2)。cells(i;j)
Next j
Next i
For i=1 to a(行数)
For j=1 to b(列数)
For m=1 to a(行数)
For n=1 to b(列数)
If Da(i;j)= Db(m;n) then
K=k+1
sheets(3)。cells(k;1)= Da(i;j)
end if
Next n
Next m
Next j
Next i
或:用函数 vlookup 寻找即可。
393
…………………………………………………………Page 394……………………………………………………………
请问如何在窗体中播放动画
解答:Sub 动画 ()
'先作个快取图案
ActiveSheet。Shapes(〃AutoShape 1〃)。Select
For x = 1 To 800 Step 0。5
Selection。Left = x
Next
Selection。Left = 1
End Sub
在 Excel 中;如何用程控某一单元格不可编辑修改
解答:在 XP 中:
Private Sub Workbook_Open()
ProtectSpecialRange (〃A1〃)
End Sub
Sub ProtectSpecialRange(RangeAddress As String)
On Error Resume Next
With Sheet1
。Cells。Locked = False
。Range(RangeAddress)。Locked = True
。Protection。AllowEditRanges。Add Title:=〃区域 1〃; Range:=Range(RangeAddress) _
; Password:=〃pass〃
。Protect DrawingObjects:=True; Contents:=True; Scenarios:=True
End With
End Sub
mandBars 的OnUpdate 事件
解答:'这类事件可预置:
'1。插入类模块;并将其命名为 MyEventClass;键入:
Public WithEvents mandBars As mandBars
Private Sub mandBars_OnUpdate(