米菲和星 发表于 2021-12-30 14:38:01

VBA表单激活问题

各位大佬好:
最近刚学习的VBA遇到了点问题,需求是这样,需要将一张表格A里面部分数据,复制到另一张表格B里面去,是通过如下代码去进行的
Sub 排表()
Dim path_预排, path_pooling, path1 As String
Dim m, i As Integer
Dim wb1, wb2 As Excel.Workbook
Application.DisplayAlerts = False
Application.ScreenUpdating = False
path_pooling = ActiveWorkbook.Name'当前点击的工作表的名字
    With Application.FileDialog(msoFileDialogFilePicker)
      .AllowMultiSelect = False   '单选择
      .Filters.Clear   '清除文件过滤器
      .Filters.Add "Excel Files", "*.xlsx;*.xls"
      .Filters.Add "All Files", "*.*"          '设置两个文件过滤器
      If .Show = -1 Then    'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)。
            path_预排 = .SelectedItems(1)
      Else
            Exit Sub
      End If
    End With
    Workbooks.Open Filename:=path_预排, UpdateLinks:=0, ReadOnly:=True
    path_预排 = ActiveWorkbook.Name '信息单工作表的名字
    m = Range("G" & Rows.Count).End(xlUp).Row
    MsgBox m
End Sub


现在的问题是表格激活是A,但是 m 选择的是我启动VBA的表格的sheet去执行的,能指点一下怎么样才能让代码执行A表么(path_预排)

wp231957 发表于 2021-12-30 15:02:58

a表通过文件打开框选择??
或者开绝对路径???

米菲和星 发表于 2021-12-30 15:08:14

wp231957 发表于 2021-12-30 15:02
a表通过文件打开框选择??
或者开绝对路径???

a表通过文件打开框选择,大佬指点一下

wp231957 发表于 2021-12-30 15:51:54

米菲和星 发表于 2021-12-30 15:08
a表通过文件打开框选择,大佬指点一下

试试这个
Sub wp()
    With Application.FileDialog(msoFileDialogFilePicker)
      .AllowMultiSelect = False   '单选择
      .Filters.Clear   '清除文件过滤器
      .Filters.Add "Excel Files", "*.xlsx;*.xls"
      .Filters.Add "All Files", "*.*"          '设置两个文件过滤器
      If .Show = -1 Then    'FileDialog 对象的 Show 方法显示对话框,并且返回 -1(如果您按 OK)和 0(如果您按 Cancel)。
            path_预排 = .SelectedItems(1)
      Else
            Exit Sub
      End If
    End With
    Workbooks.Open Filename:=path_预排, UpdateLinks:=0, ReadOnly:=False
    ActiveWorkbook.Activate
    m = Range("a1")
    MsgBox m
End Sub

米菲和星 发表于 2021-12-30 15:59:30

wp231957 发表于 2021-12-30 15:51
试试这个

大佬,我这个是用测试表的vba运行的,实际要引用打开表里的数据,您这个我试了一下,返回值仍然不对,有大佬提示我用set,我试了下,set可行
页: [1]
查看完整版本: VBA表单激活问题