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