求助!!!!!!!

weixin_50326254 2021-01-22 04:35:45
Private Sub confirm_Click()

Dim m1 As Range, n As Long


Set m1 = Sheets(4).UsedRange

'n代表当前表格最后一行数据的下一行
n = m1.Row + m1.Rows.Count

Range("A", n) = teachernames.Value


Range("B", n) = textComboBox1.Value

Range("C", n) = textComboBox2.Value
Range("D", n) = modules.Value
Range("E", n) = faculty.Value
Range("F", n) = teacher_id.Value
'将窗体中输入的数据清除,等待下次输入
teachernames.Value = ""
textComboBox1.Value = ""
textComboBox2.Value = ""
modules.Value = ""
faculty.Value = ""
teacher_id.Value = ""
Unload Me





End Sub

这个总是显示 “range作用与_global 是出现错误”

我把range("A",n) 改成 range(“A”,cstr(n)) 也不行
请问这是为什么?
...全文
107 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
本命雪狮 2021-01-22
  • 打赏
  • 举报
回复
写法有问题,要么写成cells(n,"A"),要么写成range("A"&n)
不懂别说哎 2021-01-22
  • 打赏
  • 举报
回复
借这个帖子发下VB 操作EXCEL的基础,另外回答楼主问题“range作用与_global 是出现错误” 针对 Range("A", n) = teachernames.Value 有可能两种错误,第一种是Range("A", n)不准确,当然第二种就是teachernames.Value不准确了, Range("A", n) 我没这么用过,所以不知道这个代表的是一个单元格还是一部分单元格,teachernames.Value也是,最好确保等号两端类型一样,一般报这个错误都是指两端类型不一样,比如你把一个单元格内的值赋值给代表一行单元格的变量,或者将一整行单元格内容赋值给一个单元格都会报这类错误,
不懂别说哎 2021-01-22
  • 打赏
  • 举报
回复
引用 1 楼 本命雪狮 的回复:
写法有问题,要么写成cells(n,"A"),要么写成range("A"&n)
..
不懂别说哎 2021-01-22
  • 打赏
  • 举报
回复
'定义变量 Dim EXCEL进程 As New Excel.Application, EXCEL工作簿 As New Excel.Workbook, EXCEL工作表 As New Excel.Worksheet Set EXCEL进程 = CreateObject("Excel.Application") '创建EXCEL对象 EXCEL进程.DisplayAlerts = False '屏蔽弹出对话框 '打开工作簿,(或新建) Set EXCEL工作簿 = EXCEL进程.Workbooks.Open(“C:\123.XLS”)' 打开C:\123.XLS 或者 Set EXCEL工作簿 = EXCEL进程.Workbooks.add(“C:\123.XLS”)' 以C:\123.XLS为样本复制出一个一模一样的表格文件(工作簿) 还有一种就是 Set EXCEL工作簿 = EXCEL进程.Workbooks.add '创建一个新的工作簿 Set EXCEL工作表 = EXCEL工作簿.Worksheets(1) '将第一张表设置活动工作表(当前操作表) 或者 Set EXCEL工作表 = EXCEL工作簿.Worksheets(“sheet1”)'将名称为sheet1的表设置活动工作表(当前操作表) a=EXCEL工作表.Range("A3")'取"A3单元格的值赋值给变量a EXCEL工作表.Range("A3")="123ABC"'将"A3单元格的值变成123ABC 特别需要注意的是EXCEL工作表.Range("A3")="123ABC" 不能写成 Range("A3")="123ABC" 因为如果这样写在EXCEL进程空间被清除后再次执行的时候会提示错误(这个就是网络上问的最多的问题:为什么EXCEL第一次运行没毛病,第二次运行就报错!!!因为进程结束后内存空间释放了,但是在程序整体结束前引用空间并不会释放,这个时候如果不强行指定你要操作的前缀,也就是必须要告诉程序,你要访问的是哪个工作簿的单元格,则程序会访问默认的引用单元格,也就是说第一次打开时候的那个文件的单元格,所以会报远程服务器不可用(因为那个文件已经关闭了)或者报单元格错误(因为关闭了,单元格自然也就不存在了)) 下面是单元格操作 EXCEL工作表.Range("A3")="123ABC"'将"A3单元格的值变成123ABC EXCEL工作表.Cells(1, 2) = "bbv"'将第一行第二列的单元格的值变成bbv 下面是区域操作 EXCEL工作表.copy '复制整个工作表 EXCEL工作表.Copy EXCEL工作簿.Worksheets(1) '创建一个工作表副本到 EXCEL工作簿 下 EXCEL工作表.Range("A3").copy'复制A3这个单元格 EXCEL工作表.Range(EXCEL工作表.Cells(1, 2), EXCEL工作表.Cells(5, 8)).Copy 这个是复制从第1行第2列到第5行第8列区间内的单元格,这里需要注意的还是那个问题就是工作表的前缀必须要指明,所以如果将EXCEL工作表.Cells(1, 2)写成Cells(1, 2)依旧会出现第二次运行报错 例子: EXCEL工作表.Range("A3").copy (copy复制命令) EXCEL工作表.Range("A9").Paste 将A3单元格复制给A9(Paste粘贴命令) EXCEL工作表.Rows("1:3").Delete Shift:=xlUp 删除第1到3行,填补模式Shift:=xlUp 为下方记录上移 EXCEL工作表.Columns("2:4").Delete Shift:=xlToLeft 删除第2列到第4列 Shift:=xlToLeft 为右方列像左侧填补 EXCEL工作表.Range("A1:B3").Merge '将单元格A1至B3合并 EXCEL工作表.UsedRange.Columns.Count 返回有效列数,具体解释同下 EXCEL工作表.UsedRange.Rows.Count 这个命令会返回当前表的有效行数,也就是说我们想知道这个表一共被编辑了多少行,这个命令返回一个整数值,代表这个表有多少行是被编辑过的,在使用这个命令的时候要注意的是“被编辑过”这几个字,因为复制几个空的单元格也属于被编辑过,虽然它没有数据你也看不出来但它真实存在 EXCEL工作表.Range("A1").Font.Size = 22 '设置A1单元格字体大小(这些设置可以通过录制VBA来取得,不一一列出) EXCEL工作簿 .Save '保存工作表 EXCEL工作表.PageSetup.Zoom = False '取消缩放 EXCEL工作表.PageSetup.FitToPagesWide = 1 '一页宽 EXCEL工作表.PageSetup.FitToPagesTall = 1 '一页高,如果不需要一页高则=0 EXCEL对象.ActiveWorkbook.PrintOut '打印整个工作簿一份,还有其他函数,篇幅太大可自行百度,可以控制打印 EXCEL工作簿.Close False '关闭当前工作簿,(False 不保存退出 这个是对应上面 EXCEL进程.DisplayAlerts = False '屏蔽弹出对话框 这个命令,因为弹出对话框已经被屏蔽了,这个时候如果表格有改动而我们没对表格执行SAVE命令的话会忽略更改并关闭表格,在CLOSE这个位置控制False或者True来通知程序退出前是否保存) EXCEL进程.Quit 关闭EXCEL进程 Set EXCEL工作表 = Nothing '释放 “EXCEL工作表”这个变量内的资源,将内存还给系统(这里有个误区就是第一次运行第二次异常,很多朋友都说是这几个命令没有造成的,其实关系不大,这个命令只是把我们定义的这个变量所占用的内存空间还给空间,就好像定义个变量用完了不用了的时候把变量内容释放了) Set EXCEL工作簿 = Nothing '释放 “EXCEL工作簿”这个变量内的资源 Set EXCEL进程 = Nothing '释放 “EXCEL进程”这个变量内的资源

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧