VBA

Private Sub CommandButton1_Click()
Application.ReferenceStyle = xlA1

Dim checkRange As Variant
checkRange = InputBox("チェック起始の列番号を入力してくだい", "列", "H2:BA417")

Dim ignoreWordsList As Variant
ignoreWordsList = InputBox("除外キーワードを入力してくだい、複数が存在する場合は‘,‘で区切ってください", "Message", "181,203,206,214,277,281,287,306,307,310,311,314,315,323,324,325,326,327,328,329,330,351,352,353,354,355,356,357,358,359,360,365,366")
ignoreWordsList = Split(ignoreWordsList, ",")

Dim dic As Collection
Dim k As Integer
Set dic = New Collection

For k = 0 To UBound(ignoreWordsList)
dic.Add ignoreWordsList(k)
Next k

‘ Debug.Print checkRange

Dim strPattern As String: strPattern = "([!-~]+)"
Dim regEx As New RegExp
Dim strInput As String
Dim hasErrors As Boolean
hasErrors = False
Dim resultStr As String
Dim rng As Range, i As Integer, j As Integer
Set rng = Range(checkRange)
‘ Debug.Print rng.Rows.Count & "," & rng.Columns.Count
For i = 1 To rng.Rows.Count
For j = 1 To rng.Columns.Count
strInput = rng.Cells(RowIndex:=i, columnindex:=j).Value

With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = strPattern
End With
‘ Debug.Print strInput
If regEx.Test(strInput) Then
‘ Debug.Print Contains(dic, i) & i
If DoesItemExist(dic, CStr(i)) = False Then

rng.Cells(RowIndex:=i, columnindex:=j).Select
Application.ScreenUpdating = False
‘ Clear the color of all the cells
‘ Cells.Interior.ColorIndex = 0
‘ Highlight the active cell

resultStr = resultStr & "(" & "CELL:" & rng.Cells(RowIndex:=i, columnindex:=j).Address(RowAbsolute:=False, ColumnAbsolute:=False) & ") ? " & strInput & vbCrLf
rng.Cells(RowIndex:=i, columnindex:=j).Interior.ColorIndex = 3
Application.ScreenUpdating = True
hasErrors = True
End If

Else

End If

Next
Next

If hasErrors = True Then
Dim myApp As String
‘ myApp = Shell("Notepad", vbNormalFocus)
‘ SendKeys resultStr, True
Else
MsgBox "全角文字が見つかりませんでした。"
End If

End Sub

Function DoesItemExist(mySet As Collection, myCheck As String) As Boolean
DoesItemExist = False
For Each elm In mySet
If myCheck = elm Then
DoesItemExist = True
Exit Function
End If
Next
End Function

时间: 2024-11-05 14:46:04

VBA的相关文章

Excel VBA在生成副本的工作表中插入本工作簿中的VBA模块代码

即在工作簿中添加一个工作表,然后移出并存为新的工作簿,在移出前将本工作簿的一个模块的代码拷贝至新的工作簿.下面是关键代码: '====================================================================== '各班名单保存为单个xls文件 ActiveSheet.Move ChDir myPath '忽略对话框,覆盖保存 Application.DisplayAlerts = False '班级名称增加"考生号处理"vba模块

VBA调用DOS程序两种方法

Set wsh = VBA.CreateObject("WScript.Shell") 'wsh.Run strExePath & " g", vbHide, True Set wshOut = wsh.exec(strExePath & " g").StdOut While Not wshOut.AtEndOfStream sLine = wshOut.ReadLine Debug.Print sLine Wend run可以隐

Excel处理数据用到的一些公式和VBA脚本

最近工作中用到EXCEL统计处理一些数据,正好之前有自学了一段时间的EXCEL,这次正好用上.为了加深印象,以后方便翻阅,就记录下来.这篇会不断补充. IF 多条件判断返回值 IF(logical_test, [value_if_true], [value_if_false]) 示例: 小于500,且未到期的,返回"补款" IF(AND(A2<500,B2="未到期"),"补款","") 职称为工程师或高工的,返回&qu

VBA续嘘嘘

什么是VBA?它有什么作用? A.实现Excel中没有实现的功能. B.提高运行速度. C.编写自定义函数. D.实现自动化功能. E.通过插入窗体做小型管理软件. VBA在哪里存放的?怎么运行? A.模块中 在Excel 2010中若没有"开发工具"项,通过"文件"--"选项"--"自定义功能区"--选中"开发工具"--"确定"(图1). (注:为了提高word2010中插入的图片的质

vba——简单计算代码仓库

由于最近需要和数据统计打交道,因此需要将数据库中的东西导入到Excel中进行进一步处理,但是有时候大量运算一些简单的东西,用鼠标操作远不如写代码来的效率高,因此简单学习了一下vba以供提高效率,这里用博客来简单记录一下,以便自己查找. 1.计算Transmission Time 已知表中第G列为传输总大小Size,其中G列为第七列,第I列为传输速率Rate,I列为第9列,将计算结果Transmission Time填入J列(第10列) Sub getTT() Dim row&, col1&

vba——录制宏代码仓库

这篇文章用于将录制的宏记录下来,以便自己学习vba和查找以前的宏 1.插入新的空白列 这里我选择了在第 J 列上右键选择插入列,插入后,新的列成为第 J 列 如下图: Sub 插入新的一列() ' ' 插入新的一列 宏 ' 用于记录插入新一列的宏 ' ' Columns("J:J").Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove ' 到这里插入已经结束了 ' 接下来的三行,操作

VBA练习-打开文件,添加选中项,生成新表

学习VBA,正好给财务制作一个小工具: Sub 打开人员信息表() Dim wb As Workbook, c As Integer Set wb = Workbooks.Open("C:\Users\wzn\Documents\工作簿2.xlsx", 0, True) c = wb.Worksheets.Count If c < 3 Then wb.Worksheets.Add after:=Worksheets(Worksheets.Count) wb.Worksheets(

[VBA]简单的修改Excel表

1 Option Explicit 2 Option Base 1 3 4 Sub FillSheet() 5 Dim i As Long 6 Dim j As Long 7 Dim col As Long 8 Dim row As Long 9 Dim arr() As Long 10 row = Application.InputBox(prompt:="input row:", Type:=2) 11 col = Application.InputBox(prompt:=&quo

AutoCAD VBA学习_2015.7.13晚

1.VBA工程常用到三种INSERT:窗体.模块还有一个VBA自带的ThisDrawing 窗体,很简单,学过VB都懂 模块就好像一个仓库,为窗体.ThisDrawing的代码区提供丰富的函数.过程 ThisDrawing,通过小量的实践,我把他当作VBA的入口,相当于C的main函数(如有不对请纠正),在这个代码区输入: 就可以在程序刚开始运行的时候启动窗体了. Option Explicit Sub Start() UserForm1.Show '窗体名 End Sub 2.获取鼠标在CAD

Excel中的VBA编程

目的:有时我们需要对Excel文件中大量的数据进行整理,此时如果使用手动整理会非常繁琐而且容易出错.而如果采用VBA语言,在Excel中根据需求编写一段简单的代码就能自动完成大量数据的整理工作. 1.以Excel 2007为例,如果要进行VBA编程,需要启用"开发工具" 选项.在Excel 选项对话框中勾选[在功能区显示"开发工具"选项卡]复选框. 在开发工具选项中点击"查看代码",打开Microsoft Visual Basic界面. 2.在M