【问题标题】:Menu to navigate through sheets doesn't work proper用于浏览工作表的菜单无法正常工作
【发布时间】:2015-09-30 21:11:04
【问题描述】:

我创建了一个菜单来浏览工作表。但是当我使用其中一个按钮转到另一张表并在另一张表中键入一些内容时,我键入的内容会出现在第一个表中。虽然当我使用标签跳到一张纸到另一张纸时它工作正常。似乎是宏正在考虑相对引用而不是绝对引用。

这是我的宏的作用(或至少应该):

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").Select",即使出现错误。 在 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

就是这样。我希望有人可以帮助我。

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    用这个替换 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
    

    【讨论】:

    • 好吧,看来你最后的建议是好的,但它并没有像它应该的那样运行(至少我无法弄清楚)。错误还在继续。好吧,这是文件:bit.ly/1WrEgcu。您可以从“Novo pedido”表开始。从那里点击“菜单”按钮,然后使用同名按钮转到“地籍客户”。一旦你在那里输入一些东西,你会看到输入的文本出现在“Novo pedido”表中,而不是“Clientes”表中。我在上面发布的代码是一个名为“菜单”的表单。
    • 最新更新适用于您的文件。如果这解决了最初的问题,请接受答案作为其他人的参考(如果您觉得有用,请单击左侧的复选标记并投票)
    • 我没有看到最后的更新。这最后一个大。我现在就试试。谢谢。
    • 好吧。还是行不通。我开始觉得自己很笨。这是一个视频,您可以想象发生了什么:bit.ly/1h0JCeL。
    • 我在这两种情况下都使用了相同版本的 Office 和 Windows。可能是 Dropbox 的问题。我曾经在编写一些 HTML 代码时遇到了一些问题。我会尝试复制该文件并将其从 Dropbox 文件夹中取出。 - 不,不是这样。
    【解决方案2】:

    嗯,我想我现在对这个问题了解得更多了。我已经在各种计算机上测试了工作簿,得出的结论是问题出在 Office 2013 中。运行 2007 或 2010 版本时,我似乎没有这个问题。到目前为止,我还没有找到解决方案。我要感谢 Paul Bika 的帮助。

    【讨论】:

      猜你喜欢
      • 2017-11-11
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 2014-12-27
      • 1970-01-01
      • 2015-11-14
      • 1970-01-01
      • 2020-10-27
      相关资源
      最近更新 更多