ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 317|回复: 10

[求助] 有关窗体内的照片显示

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-23 15:36 | 显示全部楼层 |阅读模式
  1. 此项代码运行时,每次点击CommandButton2按键时,为什么上一次的查询照片还停留在image中,需要再次点击查询时,才可以能查到准确信息?有没有那我老师帮忙进行纠错一下。<img src="https://clubstatic.excelhome.net/image/smiley/default/sad.gif" border="0" smilieid="2" alt="">
复制代码
  1. Private Sub CommandButton2_Click()
  2.     Dim folderPath As String, fileName As String, photoPath As String
  3.     Dim searchValue As String
  4.     ' 获取用户输入的搜索值
  5.     searchValue = Trim(UserForm1.TextBox46.Text)
  6.     ' 检查搜索值是否为空
  7.     If searchValue = "" Then
  8.         MsgBox "请输入搜索值!", vbExclamation
  9.         Exit Sub
  10.     End If
  11.     ' 设置文件夹路径
  12.     folderPath = ThisWorkbook.Path & "\照片"
  13.     ' 搜索图片
  14.     fileName = Dir(folderPath & "" & searchValue & "*.JPG")
  15.     ' 检查是否找到文件
  16.     If fileName <> "" Then
  17.         photoPath = folderPath & "" & fileName
  18.         ' 如果UserForm3已经打开,则先卸载再重新加载
  19.         If UserForm3.Visible Then
  20.             Unload UserForm3
  21.             UserForm3.Image1.Picture = Nothing ' 清除上次的图片信息
  22.         End If
  23.         UserForm3.Show vbModal ' 弹出UserForm3
  24.         UserForm3.Image1.Picture = LoadPicture(photoPath) ' 显示新图片
  25.     Else
  26.         MsgBox "没有找到与" & searchValue & "匹配的照片文件!"
  27.     End If
  28. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-9-23 16:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
set UserForm3.Image1.Picture = LoadPicture(photoPath)
试试

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-23 16:40 | 显示全部楼层
大灰狼1976 发表于 2024-9-23 16:04
set UserForm3.Image1.Picture = LoadPicture(photoPath)
试试

试过了还是不行

TA的精华主题

TA的得分主题

发表于 2024-9-23 16:47 | 显示全部楼层
那你把这两句对调一下位置试试
        UserForm3.Show vbModal ' 弹出UserForm3
        UserForm3.Image1.Picture = LoadPicture(photoPath) ' 显示新图片

TA的精华主题

TA的得分主题

发表于 2024-9-24 17:03 | 显示全部楼层
fileName = Dir(folderPath & "" & searchValue & "*.JPG")
photoPath = folderPath & "" & fileName
这两个路径中的""不应该是"\"吗
还是说"照片"不是文件夹,而是文件名的一部分...

TA的精华主题

TA的得分主题

发表于 2024-9-24 17:36 来自手机 | 显示全部楼层
xjl565135022 发表于 2024-9-24 17:03
fileName = Dir(folderPath & "" & searchValue & "*.JPG")
photoPath = folderPath & "" & fileName
这 ...

这个现象应该是贴代码时反斜杠被论坛吃掉,一直有这个问题

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-26 07:28 | 显示全部楼层
xjl565135022 发表于 2024-9-24 17:03
fileName = Dir(folderPath & "" & searchValue & "*.JPG")
photoPath = folderPath & "" & fileName
这 ...

已经解决,谢谢

TA的精华主题

TA的得分主题

发表于 2024-9-26 09:13 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

你不说一下怎么解决的吗,万一别人也有相同的问题可以作个参考。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-26 09:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Private Sub CommandButton1_Click()

  2.     Dim rng48 As Range, rng46 As Range
  3.    
  4.     Dim i As Integer
  5.    
  6.     Dim searchValue48 As String, searchValue46 As String
  7.    
  8.     Dim folderPath As String, fileName As String, photoPath As String

  9.     ' 获取TextBox48和TextBox46的值
  10.    
  11.     searchValue48 = Trim(UserForm1.TextBox48.Text)
  12.    
  13.     searchValue46 = Trim(UserForm1.TextBox46.Text)

  14.     ' 检查搜索值是否为空
  15.    
  16.     If searchValue48 = "" Or searchValue46 = "" Or ComboBox1 = "" Then
  17.    
  18.         MsgBox "请输入搜索值!", vbExclamation
  19.         
  20.         Exit Sub
  21.     End If

  22.     ' 查找TextBox48对应的信息并填充到TextBox中
  23.    
  24.     Set rng48 = Sheet2.Range("A:A").Find(searchValue48, LookIn:=xlValues, LookAt:=xlWhole)
  25.    
  26.     If rng48 Is Nothing Then
  27.    
  28.         MsgBox "你搜索的工艺不存在(新工艺编号)", vbInformation
  29.         
  30.         Exit Sub
  31.         
  32.     End If

  33.     ' 填充数据到文本框
  34.     For i = 1 To 44
  35.    
  36.         Me.Controls("TextBox" & i).Text = rng48.Offset(0, i).Value
  37.         Me.Controls("TextBox" & i).BackColor = vbButtonFace ' 重置背景色
  38.         Me.Controls("TextBox" & i).ForeColor = vbBlue ' 重置前景色
  39.         
  40.     Next i

  41.     ' 查找TextBox46对应的信息并对比
  42.    
  43.     Set rng46 = Sheet2.Range("A:A").Find(searchValue46, LookIn:=xlValues, LookAt:=xlWhole)
  44.     If rng46 Is Nothing Then
  45.    
  46.         MsgBox "你搜索的工艺不存在(现有工艺编号)", vbInformation
  47.         
  48.         Exit Sub
  49.         
  50.     End If

  51.     ' 对比TextBox48和TextBox46的信息,并设置背景色
  52.     For i = 1 To 43
  53.    
  54.         If rng46.Offset(0, i).Value <> rng48.Offset(0, i).Value Then
  55.         
  56.             Me.Controls("TextBox" & i).ForeColor = vbRed
  57.             
  58.         End If
  59.     Next i

  60.     ' 加载图片
  61.     folderPath = ThisWorkbook.Path & "\照片"
  62.    
  63.     fileName = Dir(folderPath & "" & searchValue48 & ".JPG")
  64.    
  65.     If fileName <> "" Then
  66.    
  67.         photoPath = folderPath & "" & fileName
  68.         
  69.         UserForm1.Image1.Picture = LoadPicture(photoPath)
  70.         
  71.         UserForm1.Image1.PictureSizeMode = fmPictureSizeModeStretch
  72.         
  73.     Else
  74.         UserForm1.Image1.Picture = Nothing
  75.     End If
  76. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2024-9-26 10:28 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 03:28 , Processed in 0.039067 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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