建议使用控件数组。
举个例子:判断这些文本框中的数字是否大于10,若是的话则将这些文本框中的内容改成红色的字体
将TB1、TB2、TB3创建为一个名为Text1的控件数组
For i=0 to ListCount-1
If Val(Text1(i)Text)>10 Then Text1(i)ForeColor=VbRed
Next i
VBA不能直接读取剪切板的内容,需要分两步,先将剪切板内容保存到JPG,再从JPG中读取到IMAGE控件。
代码如下:
Option Explicit
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(0 To 7) As Byte
End Type
Private Type GdiplusStartupInput
GdiplusVersion As Long
DebugEventCallback As Long
SuppressBackgroundThread As Long
SuppressExternalCodecs As Long
End Type
Private Type EncoderParameter
GUID As GUID
NumberOfValues As Long
type As Long
Value As Long
End Type
Private Type EncoderParameters
Count As Long
Parameter As EncoderParameter
End Type
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function GdiplusStartup Lib "GDIPlus" (token As Long, inputbuf As GdiplusStartupInput, ByVal outputbuf As Long) As Long
Private Declare Function GdiplusShutdown Lib "GDIPlus" (ByVal token As Long) As Long
Private Declare Function GdipCreateBitmapFromHBITMAP Lib "GDIPlus" (ByVal hbm As Long, ByVal hpal As Long, Bitmap As Long) As Long
Private Declare Function GdipDisposeImage Lib "GDIPlus" (ByVal Image As Long) As Long
Private Declare Function GdipSaveImageToFile Lib "GDIPlus" (ByVal Image As Long, ByVal filename As Long, clsidEncoder As GUID, encoderParams As Any) As Long
Private Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long
'Private Declare Function GdipCreateBitmapFromFile Lib "GDIPlus" (ByVal filename As Long, Bitmap As Long) As Long
Private Declare Function IsClipboardFormatAvailable Lib "user32" (ByVal wFormat As Integer) As Long
Private Declare Function GetClipboardData Lib "user32" (ByVal wFormat As Integer) As Long
Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long '剪贴板
Private Declare Function CloseClipboard Lib "user32" () As Long
Const CF_BITMAP = 2
Private Sub My_Screen_1()
Call keybd_event(vbKeySnapshot, 0, 0, 0)
DoEvents
End Sub
Private Sub My_Screen_2()
Call keybd_event(vbKeySnapshot, 1, 1, 1)
DoEvents
End Sub
Public Function Screen2JPG(ByVal filename As String, Optional ByVal quality As Byte = 80) As Boolean
Dim tSI As GdiplusStartupInput
Dim lRes As Long
Dim lGDIP As Long
Dim lBitmap As Long
Dim hBitmap As Long
'复制单元格区域图像
''''''RangeCopyPicture xlScreen, xlBitmap
My_Screen_2
'打开剪贴板
OpenClipboard 0&
'获取剪贴板中bitmap数据的句柄
hBitmap = GetClipboardData(CF_BITMAP)
'关闭剪贴板
CloseClipboard
'初始化 GDI+
tSIGdiplusVersion = 1
lRes = GdiplusStartup(lGDIP, tSI, 0)
If lRes = 0 Then
'从句柄创建 GDI+ 图像
lRes = GdipCreateBitmapFromHBITMAP(hBitmap, 0, lBitmap)
If lRes = 0 Then
Dim tJpgEncoder As GUID
Dim tParams As EncoderParameters
'初始化解码器的GUID标识
CLSIDFromString StrPtr("{557CF401-1A04-11D3-9A73-0000F81EF32E}"), tJpgEncoder
'设置解码器参数
tParamsCount = 1
With tParamsParameter ' Quality
'得到Quality参数的GUID标识
CLSIDFromString StrPtr("{1D5BE4B5-FA4A-452D-9CDD-5DB35105E7EB}"), GUID
NumberOfValues = 1
type = 4
Value = VarPtr(quality)
End With
'保存图像
lRes = GdipSaveImageToFile(lBitmap, StrPtr(filename), tJpgEncoder, tParams)
'销毁GDI+图像
GdipDisposeImage lBitmap
End If
'销毁 GDI+
GdiplusShutdown lGDIP
End If
Screen2JPG = Not lRes
End Function
'最后,只要用载入即可。
ImagePicture = LoadPicture(filename)
'单元格触发事件
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If TargetCount = 1 Then
MsgBox "当前单元格的行号是:" & TargetRow
End If
End Sub
用命令按钮的宏:
Sub YY()
MsgBox "当前单元格的行号:" & ActiveCellRow
End Sub
首先 找到 找到外部程序的主窗口的句柄 然后再查找其子窗口父窗口用findwindow就可以 子窗口要指定要查找窗口的classwindows 中每一个窗口都有一个类的比如记事本的文本框 类名叫edit VB的textbox 类名叫ThunderRT6TextBox等等
以上就是关于如何用vba循环读取多个文本框控件中的内容,比如TB1,TB2,TB3全部的内容,包括:如何用vba循环读取多个文本框控件中的内容,比如TB1,TB2,TB3、vba 怎么读取系统剪贴板中的图片到image控件、VBA中怎样获取按钮控件下方单元格的内容等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)