Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 对于未执行的行中的循环_Excel_Vba - Fatal编程技术网

Excel 对于未执行的行中的循环

Excel 对于未执行的行中的循环,excel,vba,Excel,Vba,此代码将逐列从“每日现金头寸”文件复制和粘贴到“银行记录”文件,并与以前的记录连续。此代码末尾有两个For循环;第一个标题为公司代码复制粘贴,第二个标题为金额复制粘贴。代码在第一个For循环之前工作正常,但第二个For循环从未执行过。有人能帮忙吗 Sub Geek_Squad_Project() Dim FilPicker As FileDialog Dim CashPosition As String Dim BankRec As String Dim CP

此代码将逐列从“每日现金头寸”文件复制和粘贴到“银行记录”文件,并与以前的记录连续。此代码末尾有两个
For
循环;第一个标题为
公司
代码复制粘贴,第二个标题为
金额
复制粘贴。代码在第一个
For
循环之前工作正常,但第二个
For
循环从未执行过。有人能帮忙吗

Sub Geek_Squad_Project()

    Dim FilPicker As FileDialog 
    Dim CashPosition As String
    Dim BankRec As String
    Dim CP As String
    Dim BR As Excel.Workbook
    Dim i As Integer
    Dim c As Integer
    Dim b As Integer
    Dim x As Integer
    Dim d As Integer

    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.Calculation = xlCalculationManual

    'assign path with filename in string format to CashPosition and file name in string format to CP

    CashPosition = Application.ActiveWorkbook.FullName
    CP = Application.ActiveWorkbook.Name 

    Set FilPicker = Application.FileDialog(msoFileDialogFilePicker) 

    With FilPicker
        .Title = "Select a daily cash position file"
        .AllowMultiSelect = False
            If .Show <> -1 Then
                GoTo ResetSettings
            '.Show = -1 means the user pressed the action button VS .Show = 0 means the user pressed the cancel button
        'selected file's full path with file name is stored as BankRec
            End If   
        BankRec = .SelectedItems(1)   
    End With

    Set BR = Workbooks.Open(Filename:=BankRec)

    BR.Worksheets("Bank Rec Master").Activate

    'clear filter from Bank Rec

    'If ActiveSheet.AutoFilterMode Then ActiveSheet.ShowAllData  

        If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then
            ActiveSheet.ShowAllData
        End If  

    Workbooks(CP).Activate
    Worksheets("Daily Cash Position").Select  

    'save the last row number into c

    c = Cells(Rows.Count, 9).End(xlUp).Row  

    'company code copy and paste

    For i = 1 To c
        If Cells(i, 9) <> "" Then
            Cells(i, 9).Select
            x = Range(Cells(i, 9), Cells(i, 9).End(xlDown)).Count
            Range(Cells(i, 9), Cells(i, 9).End(xlDown)).Copy
            BR.Worksheets("Bank Rec Master").Activate
            b = Cells(Rows.Count, 1).End(xlUp).Row
            Cells(b + 1, 1).PasteSpecial Paste:=xlPasteValues
            i = i + x
        Else
        End If
    Next i

    'amount copy and paste

    For i = 1 To c
        If Cells(i, 10) = "R" Then
            Cells(i, 6).Copy 
            BR.Worksheets("Bank Rec Master").Activate
            d = Cells(Rows.Count, 2).End(xlUp).Row
            Cells(d + 1, 2).PasteSpecial Paste:=xlPasteValues
        ElseIf Cells(i, 10) = "D" Then
            Cells(i, 6).Copy
            BR.Worksheets("Bank Rec Master").Activate
            d = Cells(Rows.Count, 2).End(xlUp).Row
            Cells(d + 1, 2).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats
            Cells(d + 1, 2).Value = Cells(d + 1, 2).Value * -1     
        End If
    Next i

    ResetSettings:

    'in case user clicks Cancel 

    Application.ScreenUpdating = True

    Application.EnableEvents = True

    Application.DisplayAlerts = True 

End Sub
Sub-Geek_团队_项目()
Dim FilPicker As FileDialog
将现金位置设置为字符串
作为字符串的Dim BankRec
将CP设置为字符串
将BR设置为Excel.工作簿
作为整数的Dim i
作为整数的Dim c
作为整数的Dim b
作为整数的Dim x
作为整数的Dim d
Application.ScreenUpdating=False
Application.EnableEvents=False
Application.Calculation=xlCalculationManual
'将文件名为字符串格式的路径分配给CashPosition,将文件名为字符串格式的路径分配给CP
CashPosition=Application.ActiveWorkbook.FullName
CP=Application.ActiveWorkbook.Name
设置FilPicker=Application.FileDialog(msoFileDialogFilePicker)
用挑丝机
.Title=“选择每日现金头寸文件”
.AllowMultiSelect=False
如果.Show-1那么
转到重置设置
'.Show=-1表示用户按下了操作按钮,而Show=0表示用户按下了取消按钮
'所选文件名为的完整路径存储为BankRec
如果结束
BankRec=.SelectedItems(1)
以
设置BR=工作簿。打开(文件名:=BankRec)
BR.工作表(“银行记录主记录”)。激活
'从银行记录中清除过滤器
'如果是ActiveSheet.AutoFilterMode,则为ActiveSheet.ShowAllData
如果是(ActiveSheet.AutoFilterMode和ActiveSheet.FilterMode)或ActiveSheet.FilterMode,则
ActiveSheet.ShowAllData
如果结束
工作簿(CP)。激活
工作表(“每日现金头寸”)。选择
'将最后一行号保存到c中
c=单元格(Rows.Count,9)。结束(xlUp)。行
'公司代码复制和粘贴
对于i=1到c
如果单元格(i,9)“,则
单元格(i,9)。选择
x=范围(单元格(i,9),单元格(i,9)。结束(xlDown))。计数
范围(单元格(i,9),单元格(i,9)。结束(xlDown))。复制
BR.工作表(“银行记录主记录”)。激活
b=单元格(Rows.Count,1)。结束(xlUp)。行
单元格(b+1,1).粘贴特殊粘贴:=XLPasteValue
i=i+x
其他的
如果结束
接下来我
'复制和粘贴的数量
对于i=1到c
如果单元格(i,10)=“R”,则
细胞(i,6)。复制
BR.工作表(“银行记录主记录”)。激活
d=单元格(Rows.Count,2).结束(xlUp).行
单元格(d+1,2).粘贴特殊粘贴:=XLPasteValue
ElseIf细胞(i,10)=“D”那么
细胞(i,6)。复制
BR.工作表(“银行记录主记录”)。激活
d=单元格(Rows.Count,2).结束(xlUp).行
单元格(d+1,2).粘贴特殊粘贴:=XLPasteFormulas和NumberFormats
单元格(d+1,2)。值=单元格(d+1,2)。值*-1
如果结束
接下来我
重置设置:
'以防用户单击“取消”
Application.ScreenUpdating=True
Application.EnableEvents=True
Application.DisplayAlerts=True
端接头
Sub-Geek_-band_-projecti()
Dim FilPicker As FileDialog
将现金位置设置为字符串
作为字符串的Dim BankRec
将CP设置为Excel.工作簿
将BR设置为Excel.工作簿
作为整数的Dim i
作为整数的Dim c
作为整数的Dim b
作为整数的Dim x
作为整数的Dim d
Application.ScreenUpdating=False
Application.EnableEvents=False
Application.Calculation=xlCalculationManual
'将文件名为字符串格式的路径分配给CashPosition,将文件名为字符串格式的路径分配给CP
CashPosition=Application.ActiveWorkbook.FullName
设置CP=ActiveWorkbook
设置FilPicker=Application.FileDialog(msoFileDialogFilePicker)
用挑丝机
.Title=“选择银行记录文件”
.AllowMultiSelect=False
如果.Show-1那么
转到重置设置
'.Show=-1表示用户按下了操作按钮,而Show=0表示用户按下了取消按钮
'所选文件名为的完整路径存储为BankRec
如果结束
BankRec=.SelectedItems(1)
以
设置BR=工作簿。打开(文件名:=BankRec)
BR.工作表(“银行记录主记录”)。激活
'从银行记录中清除过滤器
如果是(ActiveSheet.AutoFilterMode和ActiveSheet.FilterMode)或ActiveSheet.FilterMode,则
ActiveSheet.ShowAllData
如果结束
CP.激活
工作表(“每日现金头寸”)。选择
'将最后一行号保存到c中
c=CP.Worksheets(“每日现金头寸”)。单元格(行。计数,9)。结束(xlUp)。行
'公司代码复制和粘贴
对于i=1到c
如果IsNumeric(CP.Worksheets(“每日现金头寸”).Cells(i,9))=真,则
CP.工作表(“每日现金头寸”).单元格(i,9).副本
b=BR.工作表(“银行记录主控”).单元格(行数,1).结束(xlUp).行
BR.工作表(“银行记录主控”).单元格(b+1,1).粘贴特殊粘贴:=XLPasteValue
其他的
如果结束
接下来我
'复制和粘贴的数量
对于i=1到c
如果CP工作表(“每日现金头寸”)。单元格(i,10)=“R”,则
CP.工作表(“每日现金头寸”).单元格(i,6).副本
d=BR.工作表(“银行记录主控”).单元格(行数,9).结束(xlUp).行
BR.工作表(“银行记录主控”).单元格(d+1,9).粘贴特殊粘贴:=XLPasteValue
ElseIf CP.工作表(“每日现金头寸”)。单元格(i,10)=“D”,然后
CP.工作表(“每日现金头寸”).单元格(i,6).副本
d=BR.工作表(“银行记录主控”).单元格(行数,9).结束(xlUp).行
BR.工作表(“银行记录主控”).单元格(d+1,9).粘贴特殊粘贴:=XLPasteFormulas和NumberFormats
BR.工作表(“银行记录主控”)单元格(d+1,9)。值=BR.工作表(“银行记录主控”)单元格(d+1,9)。值*-1
如果结束
接下来我
重置设置:
'以防用户单击“取消”
Application.ScreenUpdating=True
Application.EnableEvents=True
Application.DisplayAlerts=True
端接头

您的VBA体验将非常适合我
Sub Geek_Squad_ProjectII()

Dim FilPicker As FileDialog
Dim CashPosition As String
Dim BankRec As String
Dim CP As Excel.Workbook
Dim BR As Excel.Workbook
Dim i As Integer
Dim c As Integer
Dim b As Integer
Dim x As Integer
Dim d As Integer

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual


'assign path with filename in string format to CashPosition and file name in string format to CP


CashPosition = Application.ActiveWorkbook.FullName

Set CP = ActiveWorkbook
Set FilPicker = Application.FileDialog(msoFileDialogFilePicker)

With FilPicker
.Title = "Select a bank rec file"
.AllowMultiSelect = False
    If .Show <> -1 Then
    GoTo ResetSettings

    '.Show = -1 means user pressed the action button VS .Show = 0 means user pressed the cancel button

    'selected file's full path with file name is stored as BankRec

    End If


    BankRec = .SelectedItems(1)

End With


Set BR = Workbooks.Open(Filename:=BankRec)

BR.Worksheets("Bank Rec Master").Activate


'clear filter from Bank Rec


If (ActiveSheet.AutoFilterMode And ActiveSheet.FilterMode) Or ActiveSheet.FilterMode Then


ActiveSheet.ShowAllData



End If


CP.Activate

Worksheets("Daily Cash Position").Select


'save the last row number into c



c = CP.Worksheets("Daily Cash Position").Cells(Rows.Count, 9).End(xlUp).Row


'company code copy and paste
For i = 1 To c
If IsNumeric(CP.Worksheets("Daily Cash Position").Cells(i, 9)) = True Then
CP.Worksheets("Daily Cash Position").Cells(i, 9).Copy
b = BR.Worksheets("Bank Rec Master").Cells(Rows.Count, 1).End(xlUp).Row
BR.Worksheets("Bank Rec Master").Cells(b + 1, 1).PasteSpecial Paste:=xlPasteValues
Else
End If
Next i



'amount copy and paste
For i = 1 To c
If CP.Worksheets("Daily Cash Position").Cells(i, 10) = "R" Then
CP.Worksheets("Daily Cash Position").Cells(i, 6).Copy
d = BR.Worksheets("Bank Rec Master").Cells(Rows.Count, 9).End(xlUp).Row
BR.Worksheets("Bank Rec Master").Cells(d + 1, 9).PasteSpecial Paste:=xlPasteValues
ElseIf CP.Worksheets("Daily Cash Position").Cells(i, 10) = "D" Then
CP.Worksheets("Daily Cash Position").Cells(i, 6).Copy
d = BR.Worksheets("Bank Rec Master").Cells(Rows.Count, 9).End(xlUp).Row

BR.Worksheets("Bank Rec Master").Cells(d + 1, 9).PasteSpecial Paste:=xlPasteFormulasAndNumberFormats

BR.Worksheets("Bank Rec Master").Cells(d + 1, 9).Value = BR.Worksheets("Bank Rec Master").Cells(d + 1, 9).Value * -1

End If

Next i

ResetSettings:

'in case user clicks Cancel

Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True

End Sub