1. excel VBA工作表操作
运行提示是 next 没有for,是因为这行If Range("e" & i) = "女" then这行写错了。
应该用If上方加一行Endif,或者将该行的If改为ElseIf
另外,你是先写入代号和称呼之后删行,这样如果是需要删除的行,就多此一举了。
我重新给你写一遍吧:
Sub 操作()
Dim s%, i% '定义s为整数,i为整数
For s = 1 To 8 '遍历1至8,步长缺省,会默认为1
Sheets(s).Select '选中第s张表
For i = Range("B" & Rows.cout).End(3).Row To 2 Step -1 '遍历B列最大行号至2,步长为-1
If Range("D" & i) = "" Then
Rows(i).Delete '删除第i行
Else
'代号
If Range("B" & i) = "理工" Then
Range("C" & i) = "LG"
ElseIf Range("B" & i) = "文科" Then
Range("C" & i) = "WK"
ElseIf Range("B" & i) = "财经" Then
Range("C" & i) = "CJ"
End If
'称呼
If Range("E" & i) = "男" Then
Range("F" & i) = "先生"
ElseIf Range("E" & i) = "女" Then
Range("F" & i) = "女士"
End If
End If
Next i
Next s
MsgBox "处理完毕!", , "提示" '弹出提示
End Sub
2. 如何用VBA筛选数据并生成新的excel表
假设数据在A到M列,从第2行开始(表头为第2行),代码如下:Subtest()ActiveSheet.Range("A2:M999").AutoFilterField:=2,Criteria1:="投资"Range("A2:M999").CopySheets.AddAfter:=Sheets(Sheets.Count)Range("A2").SelectActiveSheet.PasteEndSub
3. 在excel中怎样用VBA自动创建工作表
如图所示
4. 如何使用VBA调用EXCEL里面的图片和数据生成PPT里面的图片和数据
本次案例来自网友提问:需要从600个Excel文件中导出每个文件中的2个图片,之前由于时间原因,回复比较简单没有给出具体实现方法,今天花时间整理写成图文,希望小伙伴们都可以学会。一、 数据模拟为了更加真实的还原提问者遇到的问题,我们需要准备600个且都包含有2个图片的Excel文件。一两个文件我们可以手动新建就可以了,这可是600个文件呐!别担心,既然我们是用VBA来解决问题,解决这种事情重复机械的劳动,当然不是什么难事。图片我们用以下两个代替,放到当前文件目录下,分别命名为test1.png和test2.png,模拟数据时将test1.png插入到第一个表,test2.png插入到第二个工作表。test1.pngtest2.png分步操作过程:第一步:新建一个Excel文件,将它另存为.xlsm格式。启用宏工作簿第二步:打开新建好的.xlsm文件,按快捷键ALT+F11进入VBE界面。进入VBE界面第三步:在VBE工程种插入一个模块。插入模块第四步:在刚刚新建的模块中粘贴以下代码。Sub 生成600个含图片的Excel文件()'关闭刷新,防止屏幕抖动Application.ScreenUpdating = False'定义变量iDim i As Integer'定义i从1循环到600For i = 1 To 600'新增一个工作簿Workbooks.Add'往工作簿的第一个工作表中插入图片test1.pngActiveWorkbook.Sheets(1).Pictures.Insert(ThisWorkbook.Path & "\test1.png").Select'往工作簿的第二个工作表中插入图片test2.pngActiveWorkbook.Sheets(2).Pictures.Insert(ThisWorkbook.Path & "\test2.png").Select'将工作簿存储到当前路径下ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & i & ".xlsx"'关闭工作簿ActiveWorkbook.Close'继续循环新建其他工作簿Next'恢复屏幕刷新Application.ScreenUpdating = True'处理完成给出提示MsgBox "600个含图片的Excel文件生成完成!", vbInformation, "提示信息"End Sub第五步:执行VBA代码,生成我们需要的600个Excel文件。执行VBA代码连贯操作演示:操作演示二、 图片导出600个案例文件已经准备好了,接下来就是导出文件中的图片。解决思路:1. 一个个的找出当前目录下的所有Excel文件。2. 打开找到的Excel文件。3. 一个个的找出Excel文件中的工作表。4. 找出工作表中的所有图片对象。5. 把找到的每一个图片导出到当前目录下。如果文件不多的情况下,按上面的思路手动操作导出也是可以的,其实通过VBA来解决问题也是要先把复杂问题进行简单化,一步步进行分解问题,最终形成完整解决方案。VBA代码使用方式在上面数据准备过程中已经有详细描述了,本次我们直接来运行下代码,实现导出文件中的图片。Sub 导出当前路径下工作簿中的图片()Dim wk$ '定义为工作簿文件Dim i As Integer '定义工作簿中的工作表数量Dim ii As Integer '定义为工作表中的对象个数'关闭刷新,防止抖动Application.ScreenUpdating = False'遍历第一个工作簿文件wk = Dir(ThisWorkbook.Path & "\*.xlsx")'遍历到的文件名不等于空的情况下Do While wk <> ""'如果文件名称和当前的名称是不一样的。If wk <> ThisWorkbook.Name Then'打开遍历到的工作簿Workbooks.Open (ThisWorkbook.Path & "\" & wk)'对打开的工作簿文件进行以下操作With ActiveWorkbook'循环出工作簿中的每一个工作表For i = 1 To .Sheets.Count'循环出工作表中的每一个对象shapeFor ii = 1 To .Sheets(i).Shapes.Count'临时变量,统计shape的个数k = k + 1'复制shape对象.Sheets(i).Shapes(ii).Copy'创建一个图表对象,宽高与与对象保持一致With .Sheets(i).ChartObjects.Add(0, 0, .Sheets(i).Shapes(ii).Width, .Sheets(i).Shapes(ii).Height).Chart'把图片插入进去.Paste'通过图表对象的导出方法,把图片导出到当前目录下.Export ThisWorkbook.Path & "\" & wk & "_" & k & ".png"'删除图表.Parent.DeleteEnd WithNextNext'关闭打开的工作簿.Close FalseEnd WithEnd If'继续遍历下一个工作簿wk = DirLoop'开启屏幕刷新Application.ScreenUpdating = TrueEnd Sub图片导出演示
5. vba 如何将一个已经动态生成的excel工作表里的某两个单元格进行判断,并给其他单元格进行合并
因为Excel的特性,其中的内容都是保存在各个单元格中,通常情况下,对Excel的多个单元格进行复制后再粘贴时仍然会粘贴到与复制时数量相同的单元格中。如果想把多个单元格中的文字内容复制后粘贴到一个单元格中,(也就是合并到一个单元格中),虽然用函数或者连接符(&)等可以实现这个目的,不过使用起来会有点麻烦。因此,关于把多个单元格内容合并为一个单元格的操作,详细的方法如下:首先,先选择要合并的单元格区域。选择单元格区域后,用点击开始选项卡中的“复制”按钮或者按键盘的“Ctrl+C”键等方法进行复制。复制后点击开始选项卡中下图所示的“剪贴板”功能区右下角的按钮,这个按钮比较小。点击后会打开Excel自带的剪贴板,在剪贴板中会显示已复制的内容。此时用鼠标双击要粘贴的单元格,让光标在该单元格中闪烁。也可以用鼠标单击选中要粘贴的单元格,再在编辑栏中点击鼠标,让光标在编辑栏中闪烁。然后用鼠标点击剪贴板中已复制的内容。点击剪贴板内容后,之前复制的多个单元格中的内容就合并粘贴到所选单元格中了。粘贴后点击剪贴板的关闭按钮关闭剪贴板即可。粘贴后的内容通常是分行排列的,如果想把所有复制的内容都排列在一行,可以点击开始选项卡中图示的“自动换行”按钮,取消单元格中的自动换行。取消单元格的自动换行后,所有内容就都排列在一行了,这样就完成了多个单元格内容的合并。
6. VBA新建一个excel文件,并且这个excel里面含有5个sheet,如何操作
OptionExplicitSubtest1()DimwbAsWorkbookSetwb=Workbooks.AddWithwb.Worksheets.AddAfter:=wb.Worksheets(.Count),Count:=5-.CountEndWith'以下是可选代码'将新建的工作簿激活为当前窗口wb.Activate'将工作簿保存到D盘根目录,名字为newWorkbook.xlsx,格式为.xlsx格式(excel2007及以上版本默认格式)wb.SaveAs"D:ewWorkbook.xlsx",56EndSubSubtest2()'如果是从外部程序创建,如在word中执行操作,则需要先创建个excel对象。DimappExcelAsExcel.ApplicationDimwbAsWorkbookSetappExcel=CreateObject("Excel.Application")Setwb=appExcel.Workbooks.AddWithwb.Worksheets.AddAfter:=wb.Worksheets(.Count),Count:=5-.CountEndWithEndSub
7. EXCEL VBA生成新表
有几个接近的办法: 1.用数据透视表 2.打开一个新表。菜单 数据——〉导入外部数据——〉新建数据库查询,按提示操作。选择源数据并设定筛选条件,就可以得到筛选的数据。 以上其实都不是真正的新表,而只是形成一个查询的结果。源数据如果有变
8. 用VBA从多个Excel获取信息生成新表
Sub打开excel表格()DimmyPath$,myFile$,AKAsWorkbookDimnAsIntegerDimaAsIntegera=2b=1'Application.ScreenUpdating=False'冻结屏幕,以防屏幕抖动myPath="d:est"'把文件路径定义给变量myFile=Dir(myPath&"*.xls")'依次找寻指定路径中的*.xls文件DoWhilemyFile<>""'当指定路径中有文件时进行循环IfmyFile<>ThisWorkbook.NameThenSetAK=Workbooks.Open(myPath&myFile)'打开符合要求的文件MsgBox""n=1DoWhilen=1SetRng=ActiveSheet.UsedRange.Find("MTBI")IfRngIsNothingThenMsgBox("没有该值")ElseMsgBox"查找值在:"&(Chr(64+Rng.Column)&Rng.Row)Rng.Selectn=n+1'将数据复制到book1的sheet2页,第1234列,从第2行开始Workbooks("book1").Worksheets("sheet2").Cells(a,1)=ActiveSheet.Cells(Rng.Row,Rng.Column+1)Workbooks("book1").Worksheets("sheet2").Cells(a,2)=ActiveSheet.Cells(Rng.Row,Rng.Column+2)Workbooks("book1").Worksheets("sheet2").Cells(a,3)=ActiveSheet.Cells(Rng.Row,Rng.Column+3)Workbooks("book1").Worksheets("sheet2").Cells(a,4)=ActiveSheet.Cells(Rng.Row,Rng.Column+4)a=a+1EndIfLoopEndIfmyFile=Dir'找寻下一个*.xls文件Loop'Application.ScreenUpdating=True'冻结屏幕,此类语句一般成对使用EndSub
9. 怎样用VBA在excel中添加一个工作表并且对其命名
1、首先,在Excel中按快捷键Alt+f11。
未经允许不得转载:山九号 » vba生成excel文件操作表|VBA新建一个excel文件并且这个excel里面含有5个sheet如何操作