excel vba小结0915excel vba新建workbook并编辑保存等由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“excelvba新建工作簿”。
锁定单元格设置
Sub 宏2()' ' 宏2 宏 ' Set sht = Sheet2 sht.Activate
'这个很重要,如果没有这一句,当执行sht.Cells(i, j).Select这一句时,就会提示range的select方法无效;或者执行sht.Cells(i, j).Locked = True这一句时提示不能对range设置locked,即当前的sheet必须是activated,才能对其中的单元格进行操作,当然也要注意当前的sheet必须是未保护的,如果已经处于被保护状态了,也不能设置单元格锁定。
For i = 1 To 100 For j = 1 To 100
If sht.Cells(i, j).Interior.Color = RGB(255, 255, 255)Then
''sht.Cells(i, j).Select ''Selection.Locked = False sht.Cells(i, j).Locked = False Else
sht.Cells(i, j).Select Selection.Locked = True 'sht.Cells(i, j).Locked = True '时灵时不灵
End If
Next j Next i
End Sub 把一个sheet内容复制粘贴到一个自动新建的workbook的sheet1中去
Private Sub CommandButton2_Click()Set nbook = Workbooks.Add nbook.SaveAs Filename:=ThisWorkbook.Path& “” & “光伏经济评价.xlsx” wkname = “光伏经济评价.xlsx” 'nbook.Sheets(1).Name = “10kV线路台账表”
'怪,用nbook.sheet1.name=“10kV线路台账表”就不行
'nbook.Sheets(2).Name = “公用配电台区台账表” 'nbook.Sheets(3).Name = “规划指标表” Set arr = ThisWorkbook.Sheets(“光伏经济评价”).Range(“A1:AA100”)'注意这里不能用 ThisWorkbook.Sheet2.Range(“A1:AA100”),因为thisworkbook没有sheet对象
'nbook.Sheets(“Sheet1”).Cells(1, “A”).Resize(UBound(arr, 1), UBound(arr, 2))= arr
'这种方法不行,之前在同一个workbook中,这个方法是可以行的,可能跨workbook就不行了。'nbook.Sheets(“Sheet1”).Range(“A1:AA100”)= arr
'这种方法也不行 arr.Copy 'nbook.Activates
nbook.Sheets(“Sheet1”).Range(“A1:AA100”).Select '注意这样写的话——题nbook.Sheets(“Sheet1”).Cells(1, 1).Select,后面粘贴就出问题了 Selection.PasteSpecial Paste:=xlPasteAll Application.DisplayAlerts = False tt = Timer Do Until Timer-tt> 0.5 DoEvents Loop Workbooks(wkname).Close Savechanges:=True Application.DisplayAlerts = True
End Sub
注意1:Thisworkbook有sheets子项,没有sheet这一项,所以nbook.Sheets(“Sheet1”)是选中nbook的名字为Shee1的sheet,不能写作nbook.Sheet1.注意2:workbooks.count指的是当前打开的excel工作本的数目,workbooks(“你好”)指的是当前打开的工作本中那个名字叫“你好”的工作本。