窗体关闭怎么写(急)
1.急
procedure TMainForm.N5Click(Sender: TObject);beginLogin:=TLoginForm.Create(Application);if Login.ShowModal = mrOk then 。
你应当习惯如许的写法:else 。end;至于过程 TLoginForm.CancelBitBtnClick 根本不消写什么器械,只要将CancelBitBtn的ModelResult属性改为mrCancel,而将OkBitBtn的ModelResult属性改为mrOk.Login.Free;。
vba查询代码怎么写
1.EXCEL VBA 中关于查询代码如何编写
问题太笼统,给你个例子看吧
Public Sub dsa()
Dim iObjRange As Range: Set iObjRange = Range("A1:A10000") '对比的目标区域
Dim iFindRange As Range: Set iFindRange = Range("K:K") '查找的目标区域
Dim iResult As Range: Set iResult = Range("J:J") '结果的输出区域
Dim iCell As Range, iFind As Range
For Each iCell In iObjRange
If iCell <> "" Then
'下面这句是主要的查询语句
Set iFind = iFindRange.Find(iCell.Value, LookIn:=xlValues, LookAt:=xlWhole)
If iFind Is Nothing Then
iResult.Cells(iCell.Row, 1).Value = "N"
Else
iResult.Cells(iCell.Row, 1).Value = "Y"
End If
End If
Next
End Sub
2.vba查询代码
1、查询第B到J列(也包括L到S列)内的内容,如果查询到,则返回第A列(或第K列内)的值。请问代码应该怎么写??
For M=1 to 最大行数
If Sheet1.Cells(M, 2).Value="搜寻值" Then '第2列代表合并后的B到J列
Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容
End If
If Sheet1.Cells(M, 12).Value="搜寻值" Then '第12列代表合并后的L到S列
Msgbox Sheet1.Cells(M, 11).Value '返回第K列内容
End If
Next
2、把几列或几行进行合并居中后,这个单元格应该如何用坐标表示呢??
是以合并单元格中那个最左最上角的单元格坐标为准,如上面第一题的回答。
记得给分,:)
----------------------------------------------------------------------
1、查询第B到J列(也包括L到S列)内的内容,Sheet1.Cells(M, 2).Value="搜寻值" Then ,这个必须要全部字符串匹配吧,事实上我只查询这个单元格内的某一个词组啊。
那可以用模糊查询:If Instr(Sheet1.Cells(M, 2).Value,"搜寻值")>0 Then
2、Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容,
有可能查询到的第“M”行,并不是“最左最上角的单元格”,所以(M,1)其实是没有值的。怎么解决呢?
这个没有任何影响,也不会报错,例如第M行和第M+1行是行合并的单元格,且合并后的单元格内容为“测试”二字,则:
Msgbox Sheet1.Cells(M, 1).Value '返回的是“测试”二字
Msgbox Sheet1.Cells(M+1, 1).Value '返回的是“”空值,并不影响其他匹配和筛选操作、也不会报错,因此循环的时候就算轮到合并后的空行也没有关系的,你可以试试。
3.excel vba代码要怎么写
用如何代码可实现,假设原数据在A、B列
Sub main()
Set dic = CreateObject("scripting.dictionary")
arr = Range("A1").CurrentRegion
For i = 1 To UBound(arr)
If dic.exists(arr(i, 2)) = False Then
dic(arr(i, 2)) = arr(i, 1)
Else
If dic(arr(i, 2)) dic.Remove arr(i, 2)
dic(arr(i, 2)) = arr(i, 1)
End If
End If
Next i
[E1].Resize(dic.Count, 1) = Application.Transpose(dic.keys)
[D1].Resize(dic.Count, 1) = Application.Transpose(dic.items)
End Sub
详细步骤如下:
1. 原数据
2. Alt+F11,选择sheet1,复制上述代码
3. 关闭返回工作表,alt+F8,掉出宏界面
4. 点击执行,即得到想要的结果:
4.请帮忙写一个Excel VBA查找的代码,不胜感激
Sub 查找北京或者上海()
Dim arr
MyRow = ActiveSheet.[E65536].End(3).Row 'E例最后一行的行号
arr = Range("E1:E" & MyRow) 'E例字符串赋值给数组arr
For Each sh In arr '循环
I = I + 1
If InStr(sh, "上海") Or InStr(sh, "北京") <> 0 Then '如果数组字符串中包含上海或者北京
Range("E" & I).Select '选中对应的单元格
Selection.Interior.ColorIndex = 6 '单元格背景黄色
Selection.Font.ColorIndex = 3 '字体红色
End If
Next
End Sub
5.怎么查看excel的VBA代码
按住ALT+F11弹出VBA编辑器。
只是要破解么?
新建一个Excel工作簿,Alt+F11 打开VBA编辑器,新建一个模块 ,复制以下代码,注意如提示变量未定义,则把Option Explicit行删除即可,经测试已经通过.
'移除VBA编码保护
Sub MoveProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
Exit Sub
Else
VBAPassword FileName, False
End If
End Sub
'设置VBA编码保护
Sub SetProtect()
Dim FileName As String
FileName = Application.GetOpenFilename("Excel文件(*.xls & *.xla),*.xls;*.xla", , "VBA破解")
If FileName = CStr(False) Then
Exit Sub
Else
VBAPassword FileName, True
End If
End Sub
Private Function VBAPassword(FileName As String, Optional Protect As Boolean = False)
If Dir(FileName) = "" Then
Exit Function
Else
FileCopy FileName, FileName & ".bak"
End If
Dim GetData As String * 5
Open FileName For Binary As #1
Dim CMGs As Long
Dim DPBo As Long
For i = 1 To LOF(1)
Get #1, i, GetData
If GetData = "CMG=""" Then CMGs = i
If GetData = "[Host" Then DPBo = i - 2: Exit For
Next
If CMGs = 0 Then
MsgBox "请先对VBA编码设置一个保护密码。", 32, "提示"
Exit Function
End If
If Protect = False Then
Dim St As String * 2
Dim s20 As String * 1
'取得一个0D0A十六进制字串
Get #1, CMGs - 2, St
'取得一个20十六制字串
Get #1, DPBo + 16, s20
'替换加密部份机码
For i = CMGs To DPBo Step 2
Put #1, i, St
Next
'加入不配对符号
If (DPBo - CMGs) Mod 2 <> 0 Then
Put #1, DPBo + 1, s20
End If
MsgBox "文件解密成功。。", 32, "提示"
Else
Dim MMs As String * 5
MMs = "DPB="""
Put #1, CMGs, MMs
MsgBox "对文件特殊加密成功。。", 32, "提示"
End If
Close #1
End Function
6.vba查询代码
1、查询第B到J列(也包括L到S列)内的内容,如果查询到,则返回第A列(或第K列内)的值。
请问代码应该怎么写??For M=1 to 最大行数 If Sheet1.Cells(M, 2).Value="搜寻值" Then '第2列代表合并后的B到J列 Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容 End If If Sheet1.Cells(M, 12).Value="搜寻值" Then '第12列代表合并后的L到S列 Msgbox Sheet1.Cells(M, 11).Value '返回第K列内容 End IfNext2、把几列或几行进行合并居中后,这个单元格应该如何用坐标表示呢?? 是以合并单元格中那个最左最上角的单元格坐标为准,如上面第一题的回答。记得给分,:) ----------------------------------------------------------------------1、查询第B到J列(也包括L到S列)内的内容,Sheet1.Cells(M, 2).Value="搜寻值" Then ,这个必须要全部字符串匹配吧,事实上我只查询这个单元格内的某一个词组啊。
那可以用模糊查询:If Instr(Sheet1.Cells(M, 2).Value,"搜寻值")>0 Then2、Msgbox Sheet1.Cells(M, 1).Value '返回第A列内容,有可能查询到的第“M”行,并不是“最左最上角的单元格”,所以(M,1)其实是没有值的。怎么解决呢?这个没有任何影响,也不会报错,例如第M行和第M+1行是行合并的单元格,且合并后的单元格内容为“测试”二字,则:Msgbox Sheet1.Cells(M, 1).Value '返回的是“测试”二字Msgbox Sheet1.Cells(M+1, 1).Value '返回的是“”空值,并不影响其他匹配和筛选操作、也不会报错,因此循环的时候就算轮到合并后的空行也没有关系的,你可以试试。
vba代码怎么写
1.excel vba代码要怎么写
用如何代码可实现,假设原数据在A、B列
Sub main()
Set dic = CreateObject("scripting.dictionary")
arr = Range("A1").CurrentRegion
For i = 1 To UBound(arr)
If dic.exists(arr(i, 2)) = False Then
dic(arr(i, 2)) = arr(i, 1)
Else
If dic(arr(i, 2)) dic.Remove arr(i, 2)
dic(arr(i, 2)) = arr(i, 1)
End If
End If
Next i
[E1].Resize(dic.Count, 1) = Application.Transpose(dic.keys)
[D1].Resize(dic.Count, 1) = Application.Transpose(dic.items)
End Sub
详细步骤如下:
1. 原数据
2. Alt+F11,选择sheet1,复制上述代码
3. 关闭返回工作表,alt+F8,掉出宏界面
4. 点击执行,即得到想要的结果:
2.VBA代码在哪里写 怎么用
打开EXCEL-"工具"-"宏"-"Visual Basic 编辑器"
选择相应的表文件就能输入代码.
但提议:
如有控件按钮的,编辑状态下直接在按钮击就能打击输入代码的窗口了.
如是表格单元的公式运算,先试用"工具"-"宏"-"录制新宏" 将几个要用的操作录制起来,再按上面的方式打开VBS编辑器去看看代码怎写的,学习一下标准代码的规范.
(新手用点笨办法没坏处,太高级经常有遇想不到的错误发生.)
3.excel vba 这段代码怎么写
好了写完了。
7a686964616fe58685e5aeb931333236373264注,原数列必须要A列,代码加入后,在excel中双击就可以了。Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)i = 1newi = 1newj = 1Do While (IsNumeric(ActiveSheet.Cells(i, 1))) And (CStr(ActiveSheet.Cells(i, 1)) <> "")If CInt((i - 1) / 9) = (i - 1) / 9 Then ActiveSheet.Cells(newi, newj) = ActiveSheet.Cells(i, 1) newi = newi + 1Else ActiveSheet.Cells(newi, newj) = ActiveSheet.Cells(i, 1) If newj < 4 Then newj = newj + 1 Else newj = 1 newi = newi + 1 End IfEnd Ifi = i + 1LoopFor x = newi To i ActiveSheet.Cells(x, 1) = ""NextEnd Sub。
4.怎么写一段excel vba 输入代码
1. 从Excel工具栏中插入一个VBA的控件-编辑框。
2. 双击这个编辑框,进入VBA编程窗口。
3. 删除原来的所有内容,输入以下内容:
Private Sub TextBox1_LostFocus()
Range("A1").Value = TextBox1.Text
End Sub
4. 关闭编程窗口,回到Excel界面。
5. 在编辑框中输入一个字串。
6. 用鼠标点击编辑框之外的其它地方,看看所输入的字串是不是出现在A1
5.VBA代码中怎么写连加
可以借用EXCEL的求和公式:
如:
[c1] = Application.WorksheetFunction.Sum(Range("a1:b5"))
可以对单元格区域a1:b5求和,并把结果写在C1单元格
如果直接写的话,别忘了在单元格两边加上中括号:
如:
A=[A1]+[A3]+[A5]
可以把A1,A3,A5的和赋值给变量A
补充回答:
下面代码可以把A1到A100的和赋值给变量A
dim i ,a as long
a=0
for i=1 to 100
a=a+cells(i,1)
next i
对于VBA,一般尽量避免用循环的方法:它的效率是比较低的!
楼主什么意思?这有什么区别么?CELLS函数行和列用的都是数字,直接用就行了
最简单的方法:用循环嵌套
dim i,j,a as long
a=0
for j=1 to 10
for i=1 to 100
a=a+cells(i,j)
next i
next j
连续区域也可以用for each循环:
Dim cell1, a As Long
a = 0
For Each cell1 In Range("a1:c100")
a = a + cell1
Next
6.求VBA代码写法
Sub abc()
Dim C As Range, rng1 As Range, rng2 As Range, Arr
With Workbooks("A.xls")
Arr = .Sheets("sheet1").Range("A1:A3")
With .Sheets("B")
Set rng1 = Application.Intersect(.Range("B:B"), .UsedRange)
End With
For Each C In rng1
tmp = C.Value
If InStr(1, tmp, Arr(1, 1)) Or InStr(1, tmp, Arr(2, 1)) Or InStr(1, tmp, Arr(3, 1)) Then
'如果这个单元格含有( a 或 b 或 c ),执行的动作写这里
End If
Next
End With
End Sub
7.求以下的VBA代码怎样写
操作方法: 在工作表标签上点鼠标右键,选择“查看代码”,在弹出的窗口中粘贴以下内容,你的工作表就具有你想要的功能了: Option ExplicitPrivate Sub Worksheet_Change(ByVal Target As Range) Dim c As Range, x As Long, y As Long, s As String For Each c In Target.Cells x = c.Column If x = 5 Then y = c.Row If InStr(c.Value, "CE Material") <> 0 And InStr(c.Value, "E/") <> 0 Then s = "正常项目/MOD1" ElseIf InStr(c.Value, "MOD Material") <> 0 And InStr(c.Value, "M/") <> 0 Then s = "正常项目/MOD1" ElseIf InStr(c.Value, "CS Material") <> 0 Then s = "CS/SPC" Else s = "其它" End If Cells(y, "A") = s End If Next cEnd Sub。
vba删除代码怎么写
1. 如何用VBA代码删除编写代码的模块
你是想给别人一份没有宏的文件,那么换个思路,代码如下:
Sub test()
ThisWorkbook.Sheets.Copy
Sheets.Select
'Cells.Copy
'Cells.PasteSpecial Paste:=xlPasteValues
'Application.CutCopyMode = False
'Sheets(1).Select
ActiveWorkbook.SaveAs "tmp.xls"
ActiveWorkbook.Close
End Sub
去掉的部分代码可以将公式变为数值(需要的话,你再去掉')。
2. excel vba,为什么写了vba代码,删除行的时候,提示这个,如图,
VBA删除行
通常是从下往上查找目标值进行删除
这样才会不会误删
Sub test()
For i = 2000 To 1 step -1
If Range("AQ" & i).Value = "0" or Range("AQ" & i).text = "#REF!" Then
Rows(i & ":" & i).Delete Shift:=xlUp
End If
Next
End Sub
3. 请教 如何在VBA中写代码删除已知行号的行
删除行的方法用错了,应该是:
Rows(rng.Row).Delete或者是:
rng.EntireRow.Delete
另外,在for循环中删除行是一个非常微妙的事情,因为当删除了一行以后,下一行将变成当前行,而NEXT命令之后,“下一行”就变成了被删除行之后的第二行,也就是会跳过一行。
因此,如果是For Each 。 Next这样的循环,就比较为难,建议另外用一个数组记录需要删除的行号,然后另外用一个循环进行删除操作。
或者是改用:
For r = 65536 to 1 Step -1从最后一行开始向上循环遍历,对于符合条件的行,用以下语句进行删除:
Rows(r).Delete题外话,为了提高程序效率,不要从第65536行开始循环,而是从有数据的最后一行开始:
For r = Range("A65536").End(xlUp).Row to 1 Step -1
4. excel VBA 怎么加删除代码
Sub test()
range("C3:D50000").clearcontents
For r = 3 To Range("A1").CurrentRegion.Rows.Count
URL = "http://XXXXXXX
With CreateObject("msxml2.xmlhttp")
.Open "GET", URL, False
.send
sp = Split(.responsetext, "~")
If UBound(sp) > 3 Then
Cells(r, 3).Value = sp(3)
Cells(r, 4).Value = Format(sp(30), "0000-00-00 00:00:00")
Else
Cells(r, 3).Value = "错!"
End If
End With
Next
End Sub
5. VBA,怎么用代码删除 thisworkbook 里面的代码,
语句可以写,不过一般都会失败,因为默认是不允许访问VBA对象的,示例代码:
Set Wb = Nothing
MyPth = "xxx.xls"
Set Wb = GetObject(MyPth)
With Wb.VBProject.VBComponents.Item("ThisWorkbook").CodeModule
.DeleteLines 1, .CountOfLines
End With
Wb.Close True
6. vba,表格写3个代码,删除代码,加入代码,统计红色字体的出现次数
Sub 删除()Dim r As Integer, rng As RangeWith Sheet1 r = .Cells(.Rows.Count, 1).End(3).Row If r < 55 Then Exit Sub .Rows(r + 1).Clear .Rows(r).Clear r1 = .Cells(.Rows.Count, 1).End(3).Row For j = 10 To 48 For i = r1 To r1 - 10 Step -1 If Len(Cells(i, j).Value) > 0 Then If Not Cells(i, j).Comment Is Nothing Then Cells(r1 + 1, j) = Cells(i, j).Comment.Text Exit For Else Cells(r1 + 1, j) = 0 End If Else Cells(r1 + 1, j) = "" End If Next NextEnd WithEnd SubSub 增加()Dim r As Integer, rng As RangeWith Sheet1 r = .Cells(.Rows.Count, 1).End(3).Row Sheet2.Rows(r + 1).Copy Sheet1.Rows(r + 1) r1 = .Cells(.Rows.Count, 1).End(3).Row For j = 10 To 48 For i = r1 To r1 - 10 Step -1 If Len(Cells(i, j).Value) > 0 Then If Not Cells(i, j).Comment Is Nothing Then Cells(r1 + 1, j) = Cells(i, j).Comment.Text Exit For Else Cells(r1 + 1, j) = 0 End If Else Cells(r1 + 1, j) = "" End If Next NextEnd WithEnd Sub。
转载请注明出处育才学习网 » 关闭窗体的vba代码怎么写
育才学习网