我创建了一个菜单来浏览工作表。但是,当我使用其中一个按钮转到另一张纸并在另一张纸上键入内容时,我输入的内容会出现在第一张纸上。虽然当我使用标签跳转到另一张纸时,它可以正常工作。似乎是宏正在考虑相对引用而不是绝对引用。
这是我的宏所做的(或至少应该):
Private Sub cadastrar_clientes_Click()
Application.ScreenUpdating = False
Menu.Hide
Sheets("Clientes").Select
Range("A1048576").Select
Selection.End(xlUp).Select
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Select
End Sub
注意:
我尝试使用“.activate”而不是“.select”
我曾试图只使用“Sheets(”Clientes“)。选择”,即便如此,也会发生错误。
在Windows CMD上执行“Excel / unregserver”解决了我的问题一次,但我再也无法做到这一点。它似乎不再起作用了。
我做了一次像这样的菜单,但我没有遇到这些问题。
当工作簿打开时,执行以下代码:
Private Sub Workbook_Open()
Application.DisplayFullScreen = True
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHeadings = False
ActiveWindow.DisplayGridlines = False
ActiveWindow.DisplayWorkbookTabs = False
End Sub
就是这样。我希望有人可以帮助我。
答案 0 :(得分:0)
用此更换VBA模块菜单上的所有代码(在您提供的文件中测试)
Option Explicit
Private Sub fechar_menu_Click()
Menu.Hide
End Sub
Private Sub novo_pedido_Click()
goToTab ActiveWorkbook.Worksheets("Novo pedido"), "B5"
End Sub
Private Sub ver_pedidos_Click()
goToTab ActiveWorkbook.Worksheets("Consultar pedido"), "F1"
End Sub
Private Sub cadastrar_clientes_Click()
goToTab ActiveWorkbook.Worksheets("Clientes")
End Sub
Private Sub cadastrar_produtos_Click()
goToTab ActiveWorkbook.Worksheets("Produtos")
End Sub
Private Sub cadastrar_transportadoras_Click()
goToTab ActiveWorkbook.Worksheets("Transportadoras")
End Sub
Private Sub painel_financeiro_Click()
goToTab ActiveWorkbook.Worksheets("Painel Financeiro"), "B3"
End Sub
Private Sub goToTab(ByRef ws As Worksheet, Optional cel As String = vbNullString)
Menu.Hide
Application.ScreenUpdating = False
With ws
.Activate
If Len(cel) = 0 Then
.Range("A" & .Rows.Count).End(xlUp).Offset(1, 0).Select
Else
.Range(cel).Select
End If
End With
Application.ScreenUpdating = True
End Sub
答案 1 :(得分:0)
嗯,我想我现在对这个问题了解得多。我已经在各种计算机上测试了工作簿,并得出结论,问题出在Office 2013中。在运行2007或2010版本时,我似乎没有这个问题。到目前为止,我还没有找到解决方案。我要感谢Paul Bika的帮助。