Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 vba阻止拖动工作表顺序_Vba_Excel - Fatal编程技术网

Excel vba阻止拖动工作表顺序

Excel vba阻止拖动工作表顺序,vba,excel,Vba,Excel,是否有vba方法防止重新排列工作表?例如:Sheet1、Sheet2、Sheet3不能拖动到Sheet3、Sheet2、Sheet1的新顺序 例如:我有代码Sheet1.cells(1,1).value,通过重新排列工作表,它会更改对象引用。我需要禁用它,这样用户就不会无意中破坏代码。也许是计划上的失败,但无论如何,在重写之前,我还是要坚持下去 如果可能的话,将需要2003年、2007年、2010年及以后的解决方案 我没有在网上、对象浏览器或stackoverflow上看到任何主题或解决方案,因

是否有vba方法防止重新排列工作表?例如:Sheet1、Sheet2、Sheet3不能拖动到Sheet3、Sheet2、Sheet1的新顺序

例如:我有代码Sheet1.cells(1,1).value,通过重新排列工作表,它会更改对象引用。我需要禁用它,这样用户就不会无意中破坏代码。也许是计划上的失败,但无论如何,在重写之前,我还是要坚持下去

如果可能的话,将需要2003年、2007年、2010年及以后的解决方案

我没有在网上、对象浏览器或stackoverflow上看到任何主题或解决方案,因此非常感谢您提供的帮助/参考


谢谢。

我看到了代码的问题

Main 1

Sub Main(sheetIndex as integer)

Dim ws as worksheet
Dim x as String

    Set ws = Sheets(sheetIndex)

    x = ws.Cells(1, 1).value

End sub 
改为:

Main Sheet1

Sub Main(sheetIndex as Object)  

Dim x as String      

    x = sheetIndex.Cells(1, 1).value

End sub 

重新排列工作表现在不会破坏代码。现在我需要深入研究代码并找到更多的实例。谢谢Tim,Alexandre。

将工作表拖动到其他位置不会更改其代码名,只会更改其
索引属性。@AlexandreP.Levasseur就像我说的,现在不可能,我希望是这样。我知道你是从哪里来的。使用工作表名称是使用索引的一个很好的选择。设置ws=Sheets(“sheet_name”)@SamWard我需要能够让用户更改sheet name,我会这样做的。谢谢