分享

(12)实例 查询,入库记录保存运用Find,copy,Offset

 时间剧毒 2015-01-08
http://www./study.asp?vip=10241777  资料学习的网址
Sub 查询系统()
Dim Crow, m, k As Integer
Dim rng As Range
ends = Sheet2.Columns(1).Find("*", , , , , xlPrevious).Row  ''对第一列 从下往上查找  找到A列的最后一个单元格所在行
Crow = Application.CountA(Sheet2.Range("e:e"))   ''''E列非空单元格的行数
Sheet2.Range("E3:G" & Crow + 2).Delete ''清除之前的结果
    For Each rng In Sheet2.Range("a2:a" & ends)
     m = m + 1
       If rng Like Sheet2.Range("f1") Then  '比较
       k = k + 1
       Sheet2.Range("a" & m + 1 & ":c" & m + 1).Copy Sheet2.Range("e" & k + 2 & ":g" & k + 2)
       ''把所在记录的行复制到
       End If
    Next
End Sub
'''入库单保存
Sub 入库单计算()
Dim es, rng As Range
Dim Saddress As String

Set es = Sheet1.Columns(3).Find("*", , xlFormulas, , , xlPrevious)      '''查找最后个单元格
Saddress = es.address
ends = Sheet1.Range("c:c").Find("*", , , , , xlPrevious).Row   '''最后单元的所在的行
Range([c5], Saddress).Select
    If ends = 4 Then            ''如果记录是从第4行是表列名 ,,就没有数据
      MsgBox "请您先添加记录!", vbCritical, "错误提示"
      Exit Sub
    End If
 
For Each rng In Range([c5], es)
   rng.Offset(0, 2) = rng * rng.Offset(0, 1)   ''用offset(偏移行,偏移列)计算
Next
End Sub
Sub 入库单开单()
Dim Stime As String
Dim Scolumn As Range
Dim Aint, Bint As Integer
Set Scolumn = Cells.Find("*", , xlFormulas, , , xlPrevious)       '''查找最后个单元格
Xcolumn = Cells.Find("*", , xlFormulas, , , xlPrevious).Row        '''查找最后个单元格所在的行
 
''Set Scolumn = Range("e:e").Find("*", , xlFormulas, , , xlPrevious)  '''查找该列的最后个单元格  xlFormulas单元格的公式  xlPrevious向上查找  ''查到的是个range对象
 ''s = Scolumn.address  ''最后个单元格
 ''Range("a5", Scolumn.Offset(5)) = ""  ''当最后个单元格没有数据的时候会少清空行
If Xcolumn > 4 Then                  ''防止把列名清空
Range("a5", Cells(Xcolumn, 5)) = ""
End If
 
Stime = Format(Now, "YYMMDDHHss")

Range("b2") = "SM" + Stime  ''单号
Range("e2") = ""
End Sub
Sub 入库保存()
Dim rng As Range
Dim str As String
Dim Sint, Bint As Integer
Dim c, Csheet3 As String
 
 
Dim rngs As Range
Set rngs = Sheet3.Range("a:a").Find(Sheet1.Range("b2"))   ';对A列单号进行搜索
If Not rngs Is Nothing Then    '''判断是否存在记录
    MsgBox "已存在记录!!"
    Exit Sub
End If

'If Range("b2").Find(Sheet1.Range("b2")) = Sheet1.Range("b2") Then  ''在工作表sheet2中 F列查找 b2单元格内容
'MsgBox "你已经保存过了,请查询", vbCritical, "重复保存提示"
'Exit Sub  ''如果相等退出
'End If

Set rng = Cells.Find("*", , xlFormulas, , , xlPrevious) ''查找最后个单元格
str = rng.address
Sint = rng.Row  ''最后单元格所在的行数
If Sint = 4 Then
MsgBox "没有记录需要保存!", vbInformation, "提示"
Exit Sub
End If
Bint = Cells.Find("*", , xlFormulas, , , xlPrevious).Row '''sheet1的记录行数
Csheet3 = Application.CountA(Sheet3.Range("a:a"))  '''sheet3工作表已使用的行数
Range("a5:e" & Sint).Select
Range("a5:e" & Sint).Copy Sheet3.Range("c" & Csheet3 + 1 & ":g" & Csheet3 + Sint - 4) ''记录复制过去
Sheet3.Range("a" & Csheet3 + 1).Resize(Bint - 4).Value = [b2]  ''保存单号 A列单元格向下偏移
Sheet3.Range("b" & Csheet3 + 1).Resize(Bint - 4) = [e2] ''保存厂商 A列单元格向下偏移
Sheet3.Range("h" & Csheet3 + 1).Resize(Bint - 4) = Now() ''保存日期 A列单元格向下偏移
End Sub

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多