找回密码
 加入
搜索
查看: 5538|回复: 24

[效率算法] 如何在EXCEL中插入行[已解决]

  [复制链接]
发表于 2016-5-20 10:03:54 | 显示全部楼层 |阅读模式
本帖最后由 heroxianf 于 2016-5-25 09:09 编辑

KK,   如果你上线了帮我看看,我练习的时候像遇到这类有参数的,始终不会转换成AU3



录制的
Sub 1()

    Rows("3:3").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A3").Select
    ActiveCell.FormulaR1C1 = "end"
    Rows("6:6").Select
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A6").Select
    ActiveCell.FormulaR1C1 = "end"
    Range("A7").Select
End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-5-20 10:07:29 | 显示全部楼层
本帖最后由 heroxianf 于 2016-5-20 10:09 编辑

$oWorkbook.ActiveSheet.Insert($oWorkbook.ActiveSheet.Rows("3:3").Select, '', '')

$oWorkbook.ActiveSheet.Rows("3:3").Select($oWorkbook.ActiveSheet.Insert, '', '')

这是我尝试的~
发表于 2016-5-20 10:28:49 | 显示全部楼层
回复 2# heroxianf

Range("A3").Select

這樣的東西  不用理  因為你錄製的時候  是一個動作錄製一個   這個指示表示 你選中了

通常是 表示的就是 Range("A3")

帶有參數的 請看 msdn 的 資料 然後 vba 通常是 參數a:xxx   參數b:xxx

autoit 就是 ( xxx,xxx)
发表于 2016-5-20 10:29:21 | 显示全部楼层
你發在解決區 是 解決了嗎
 楼主| 发表于 2016-5-20 10:35:53 | 显示全部楼层
本帖最后由 heroxianf 于 2016-5-20 10:50 编辑

回复 4# kk_lee69


    不好意思,我上一个列子的时候就点击解决区了~  没有解决啊~ 请帮我移到提问交流区一下哈
 楼主| 发表于 2016-5-20 10:37:29 | 显示全部楼层
回复 3# kk_lee69


    Rows("3:3").Select

这个应该要理一下吧?
发表于 2016-5-20 10:59:07 | 显示全部楼层
回复 6# heroxianf


        Rows("3:3").Select

    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove



試試看 這樣
$oWorkbook.ActiveSheet.Rows("3:3").Insert(xlDown,xlFormatFromLeftOrAbove)

xlDown,xlFormatFromLeftOrAbove 這兩個 AU3 一定看不懂 去找出 其值  直接填入值
 楼主| 发表于 2016-5-20 11:10:28 | 显示全部楼层
回复 7# kk_lee69

没有反应,基值从什么地方看的?另外我按照你上次给我的例子写貌似可以选中整个3行 其他操作无效


        With $oWorkbook.ActiveSheet
        .Rows("3").Select
    .Selection.Insert('','')
    .Range("A3").Select
    .ActiveCell.FormulaR1C1 = "end"
        EndWith
 楼主| 发表于 2016-5-20 11:16:17 | 显示全部楼层
回复 7# kk_lee69
KK 我把EXCEL.AU3 UDF里找到这个了。
Func _Excel_RangeInsert($oWorksheet, $vRange, $iShift = Default, $iCopyOrigin = Default)
        ; Error handler, automatic cleanup at end of function
        Local $oError = ObjEvent("AutoIt.Error", "__Excel_COMErrFunc")
        #forceref $oError
        If Not IsObj($oWorksheet) Or ObjName($oWorksheet, 1) <> "_Worksheet" Then Return SetError(1, 0, 0)
        If Not IsObj($vRange) Then
                $vRange = $oWorksheet.Range($vRange)
                If @error Then Return SetError(2, @error, 0)
        EndIf
        $vRange.Insert($iShift, $iCopyOrigin)
        If @error Then Return SetError(3, @error, 0)
        Return $vRange
EndFunc   ;==>_Excel_RangeInsert
发表于 2016-5-20 16:24:34 | 显示全部楼层
回复 9# heroxianf

所以 問題解決了嗎??
 楼主| 发表于 2016-5-20 16:26:57 | 显示全部楼层
回复 10# kk_lee69

还在折腾
发表于 2016-5-20 16:33:12 | 显示全部楼层
回复 11# heroxianf

明明這樣就可以插入
$oWorkbook.ActiveSheet.Rows("3:3").Insert(-4121 ,0)

我說得很清楚啦   自己要去找值
 楼主| 发表于 2016-5-21 01:01:50 | 显示全部楼层
回复 12# kk_lee69


    这个 -4121, 0   这个值哪里看到的?
发表于 2016-5-21 12:18:01 | 显示全部楼层
本帖最后由 h20040606 于 2016-5-21 12:20 编辑

回复 13# heroxianf


   在excel的vba中,移动光标到要查看的常量上,按Ctrl+I
 楼主| 发表于 2016-5-23 10:32:05 | 显示全部楼层
回复 14# h20040606

能提供一下截图吗?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-4-26 23:53 , Processed in 0.098432 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表