Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Excel宏中看不到变量_Excel_Vba_Variables_Scope - Fatal编程技术网

在Excel宏中看不到变量

在Excel宏中看不到变量,excel,vba,variables,scope,Excel,Vba,Variables,Scope,我已经搜索了这些问题,找到了一些非常接近的问题,但我仍然做错了什么。我想在以下代码中为工作表名称使用一个变量: Option Explicit Dim wrkPro As String Dim wrkFFIS As String Sub MainLoop() '*********************************************************************************************************************

我已经搜索了这些问题,找到了一些非常接近的问题,但我仍然做错了什么。我想在以下代码中为工作表名称使用一个变量:

Option Explicit

Dim wrkPro As String
Dim wrkFFIS As String

Sub MainLoop()
'*************************************************************************************************************************
'*
'*************************************************************************************************************************
    Dim FFISno As Range         '* Admustments
    Dim ProTracksno As Range    '* Contracts
    Dim FFISnx As String        '* Corrected Contract Number
    Dim PTdte As Date
    Dim FFISdte As Date
    Dim orow As Integer
    Dim frow As Integer
    Dim prow As Integer
    Dim rngRange As Range

    orow = 2                    '* Output Row
    frow = 2                    '* FFIS Row
    prow = 7                    '* ProTracks Row

    '* Set Worksheet for input ...
    wrkPro = CStr(Sheets("SysCtrl").Cells(4, 2).Value) & "ProTracts"
    wrkFFIS = CStr(Sheets("SysCtrl").Cells(4, 2).Value) & "FFIS"

    '* Clear the Recap Sheet
    Sheets("Recap").Range("A2, B5000").ClearContents
    '* Sheets("Recap").Rows(CStr(orow) & ":" & CStr(Worksheets("Recap").Cells(Rows.Count, 1).End(xlUp).Row)).ClearContents
    '* Sheets("Recap").Cells(1, 1).Select

BeginLoop:
    '* Do until EOF on ProTracks Table
    Do While Sheets(wrkPro).Cells(prow, 7) <> "" And Sheets(wrkFFIS).Cells(frow, 4) <> ""
选项显式
作为字符串的Dim wrkPro
作为字符串的Dim wrkFFIS
子主循环()
'*************************************************************************************************************************
'*
'*************************************************************************************************************************
尺寸FFISno作为范围“*调整
Dim ProTracksno作为范围“*合同
Dim FFISnx作为字符串“*更正的合同编号
Dim PTdte作为日期
日期
Dim-orow为整数
变暗为整数
Dim船头为整数
暗格兰奇山脉
orow=2'*输出行
frow=2'*FFIS行
船首=7'*排
'*为输入设置工作表。。。
wrkPro=CStr(表(“SysCtrl”)。单元格(4,2)。值)和“量角器”
wrkFFIS=CStr(表格(“SysCtrl”)。单元格(4,2)。值)和“FFI”
“*清除摘要表
表格(“重述”)。范围(“A2,B5000”)。清晰目录
“*表格(“重述”).行(CStr(orow)和“:”和CStr(工作表(“重述”).单元格(行数,1).结束(xlUp).行)).ClearContent
“*表格(“重述”)。单元格(1,1)。选择
BeginLoop:
“*在表上显示EOF之前执行此操作
在工作表(wrkPro)和工作表(wrkFFIS)中的单元格(船头,7)”和单元格(船头,4)”
当我运行它时,我得到了下标超出范围的错误。我已经检查过了,变量中有正确的值,但它没有在Do While中将其用作字符串

我尝试在字符串前后添加Char(34),并按照其他帖子中的建议将Dim改为Public,但没有任何乐趣

如有任何建议,将不胜感激


Carter

尝试使用工作表(wrkPro)。单元格而不是工作表(wrkPro)。单元格-工作表()按索引引用工作表,即整数,例如工作表(1)。单元格等。 工作表(wrkPro)。单元格字符串变量作为名称应该是可以接受的。

更改此行:

Sheets("Recap").Range("A2, B5000").ClearContents
为此:

Sheets("Recap").Range("A2:B5000").ClearContents

这似乎不正确<代码>工作表(字符串)也存在,并且工作正常。@KekuSemau也许你是对的,但是
Sub test()工作表(“1”)。范围(“A1”)。选择End Sub
返回下标超出范围错误,而
工作表(1)。
编译很好。Excel 2007-以防万一。是的,字符串参数必须是工作表的名称。我的错,你是正确的:
Sheets(“Sheet1”)。范围(“A1”)。选择即可!谢谢你的提示。我尝试了工作表而不是工作表,但我仍然得到同样的错误。我想我可以用一年来获得一个相对的表号,但这意味着表必须保持相同的顺序。还有什么吗?从您想要如何获取sheetname的角度来看,您的代码非常可靠。我将进行测试,以确保
wrkPro/wrkfis
变量的sheetname与工作簿中的sheetname完全相同。因此,在为每个位置设置字符串后,请使用a
debug.print wrkPro
debug.print wrkfis
并确保其名称按原样存在于WB中。另外,尝试删除
Cstr
包装器?尝试调试代码:在以
wrkPro=
开头的行中设置断点(按此行中的F9),然后运行代码。一旦它停在这里,你就可以用F8逐行执行。在即时窗口(Ctrl-G)中,您可以在局部变量窗口(查看->局部变量)中检查变量(
Debug.Print wrkPro
)您可以直接看到它。确保
wrkPro
的内容与您的工作表名称完全匹配-您可以使用
Debug.Print Sheet1.name=wrkPro
进行检查-只需将
Sheet1
替换为您工作表的代码名称-您可以在左侧列表的VBA编辑器中看到这一点。