Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!

[通知] 统计VBA学习小组正式组第八课(第九讲)的积分帖之作业上交贴(第10周)

  [复制链接]
发表于 2012-3-1 15:10 | 显示全部楼层
忘记写ID了
22楼提交答案者信息如下:

C09:sliang28
回复

使用道具 举报

发表于 2012-3-1 21:49 | 显示全部楼层
E05:linch92413  交作业
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
   Dim MyBok As Workbook
   Dim i As Long
   Dim Pro As String
   Dim D As Long
   Pro = Range("e5")
   If Sh.Name = "Sheet1" And Target.Address = "$E$5" Then
      For i = 1 To Workbooks.Count
         If Workbooks(1).Name = "价格表.xls" Then GoTo 100
      Next i
      Set MyBok = Workbooks.Open(ThisWorkbook.Path & "\价格表.xls")
   
100:
      With MyBok.Sheets(1)
         For i = 2 To .Range("a65536").End(xlUp).Row
            If .Range("a" & i) = Pro Then
               D = Range("a" & i).Offset(0, 1)
               Exit For
            End If
         Next i
      End With
      Workbooks("价格表.xls").Close False
      If D = 0 Then
         Range("e7") = "查找不到"
         Exit Sub
      End If
      Range("e7") = D
   End If
   End Sub
第8课作业题查找(linch92413).rar (17.71 KB, 下载次数: 2)

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-3-1 22:34 | 显示全部楼层
总算搞定了,恳请校长下周公布标准代码,也好观摩学习。

第8课作业题查找.rar

16.88 KB, 下载次数: 2

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-3-2 11:29 | 显示全部楼层
开始看着作业挺难的,无从下手的感觉,看了5遍视频,翻了N遍书,懂点写点,等写完原来如此……
A06:梅一枝 作业:


Option Explicit
Option Compare Text

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim sh1
    Dim rg As Range
    Dim x As Integer
    If Sh.Name = "Sheet1" And Target.Address = "$E$5" Then
        Workbooks.Open ThisWorkbook.Path & "/价格表.xls"
       Set sh1 = Workbooks("价格表.xls").Sheets("sheet1")
        For x = 2 To 7
         
            If Sh.Range("$E$5") = sh1.Range("a" & x) Then
                Sh.Range("$E$7") = sh1.Range("B" & x)
                Exit For
            End If
        Next x
        If x = 8 Then
        
              Sh.Range("$E$7") = "查找不到"
              End If
    End If
End Sub


评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-3-2 11:55 | 显示全部楼层
老师,作业中
Dim sh1
      Set sh1 = Workbooks("价格表.xls").Sheets("sheet1")
变量SH1明明代表的是sheet 工作表,用DIM  SH1 AS SHEETS 不对吗?老提示:编译错误,方法和数据成员未找到。。。。。声明类型为 sheet,workbookS,WORKBOOK,RENGE,等等我都试验过,肯定都错误……只好 不声明类型了。为什么呢?这是为什么呢?纠结~
对了,我作业中E5输入的字母可以不区分大小写,也运行成功了,我可以很自豪的大声喊:梅一枝V入门成功!!
老师您辛苦了,多给些积分吧……
回复

使用道具 举报

发表于 2012-3-2 13:11 | 显示全部楼层
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If Target.Column = 5 And Target.Row = 5 Then
        Workbooks.Open ThisWorkbook.Path & "/价格表.xls"
        Dim x As Integer
        For x = 2 To 7
            If Target.Value = Cells(x, 1) Then
                Target.Offset(2, 0).Value = Cells(x, 2)
            Else
                Target.Offset(2, 0).Value = "查找不到"
            End If
        Next x
    End If
   
End Sub
回复

使用道具 举报

发表于 2012-3-2 14:29 | 显示全部楼层
A07:一缕忧兰
第8课作业题查找.rar (24.61 KB, 下载次数: 2)

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-3-2 15:01 | 显示全部楼层

  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

  2. Dim wb As Workbook
  3. Dim a As Integer
  4. Dim str1 As String
  5. Dim str2 As String

  6. Application.ScreenUpdating = False

  7. str1 = ThisWorkbook.Worksheets("Sheet1").Range("E5").Value


  8. If Sh.Name = "Sheet1" And Target.Address = "$E$5" Then

  9.     Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\价格表.xls")
  10.    
  11.     wb.Activate
  12.    
  13.     For a = 2 To 7
  14.    
  15.         If Cells(a, 1) = str1 Then
  16.         
  17.             str2 = Cells(a, 2)
  18.         
  19.         End If
  20.             
  21.         
  22.     Next a
  23.    
  24.     If str2 = "" Then
  25.    
  26.         str2 = "查不到"
  27.         
  28.     End If
  29.    
  30. wb.Close SaveChanges:=False

  31. ThisWorkbook.Sheets("Sheet1").Range("E7") = str2
  32.    
  33. End If

  34. Application.ScreenUpdating = True


  35. End Sub
复制代码


评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确

查看全部评分

回复

使用道具 举报

发表于 2012-3-2 15:25 | 显示全部楼层
1982zyh 发表于 2012-3-2 15:01

汗, 不能编辑了
有个地方写错了,中文的查找不到写成查不到了
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

  2. Dim wb As Workbook
  3. Dim a As Integer
  4. Dim str1 As String
  5. Dim str2 As String

  6. Application.ScreenUpdating = False

  7. str1 = ThisWorkbook.Worksheets("Sheet1").Range("E5").Value


  8. If Sh.Name = "Sheet1" And Target.Address = "$E$5" Then

  9.     Set wb = Workbooks.Open(Filename:=ThisWorkbook.Path & "\价格表.xls")
  10.    
  11.     wb.Activate
  12.    
  13.     For a = 2 To 7
  14.    
  15.         If Cells(a, 1) = str1 Then
  16.         
  17.             str2 = Cells(a, 2)
  18.         
  19.         End If
  20.             
  21.         
  22.     Next a
  23.    
  24.     If str2 = "" Then
  25.    
  26.         str2 = "查找不到"
  27.         
  28.     End If
  29.    
  30. wb.Close SaveChanges:=False

  31. ThisWorkbook.Sheets("Sheet1").Range("E7") = str2
  32.    
  33. End If

  34. Application.ScreenUpdating = True


  35. End Sub
复制代码




回复

使用道具 举报

发表于 2012-3-2 16:41 | 显示全部楼层
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
Dim sh1 As Object
Dim n As Integer
Dim k As Integer
   If sh.Name = "Sheet1" And Target.Address = "$E$5" Then
      Workbooks.Open (ThisWorkbook.Path & "\价格表.xls")
      Set sh1 = Workbooks("价格表.xls").Sheets("sheet1")
      For n = 2 To 7
       If sh1.Range("a" & n) = sh.Range("E5") Then
          k = sh1.Range("b" & n)
          Exit For
       End If
      Next n
       Workbooks("价格表.xls").Close
       If k = 0 Then
        sh.Range("E7") = "查找不到"
        Else
        sh.Range("E7") = k
       End If
    End If
End Sub

评分

参与人数 1金币 +5 收起 理由
兰色幻想 + 5 答案正确

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-20 09:58 , Processed in 0.359569 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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