2013-07-18 54 views
-3

我有2个工作簿“StudentID”和“Student”。在另一个工作簿中打开工作表

在“StudentID”一书中,列A的每一行都有一张ID列表。 在“学生”中,为工作簿“StudentID”中列出的每个学生ID都标有表格。

单击学生ID时,我需要该“ID”的特定工作表才能在“学生”中打开。

这是用VBA编写的。

无论如何我无法想到启用此功能。

任何帮助,将不胜感激。

+0

请不要这样做。这是一种可怕的方式来实现你正在做的任何事情。它不会缩放,它会很慢,它会在未来造成巨大的问题。请使用数据库。请使用其他编程语言。为了您的目的,请重新审视您的实施。 –

回答

1

只要你不包括任何代码,我明白你需要的一切都是一些想法的开始。

StudentID(.XLSM,或任何其他宏观支持扩展),你必须依靠SelectionChange事件的具体板材(Microsoft Excel Objects下,被称为你要跟踪的纸张文件),也就是说,你必须写一样的东西:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    If (Not IsEmpty(Selection.Value)) Then 
     On Error Resume Next 
     'Selection.Value -> content of the selected cell, that is, ID 
     'Here you have to write your code to open the corresponding worksheet in the Student workbook 
    End If 
End Sub 

有了这个小的帮助,你不应该觉得写的所有东西被自己所需要的任何问题。

+0

选择变化的好处。我正在寻找类似的东西。 – mike27015

+0

@ mike27015传统上,我认为这些事件非常不可靠,但几周前Tim Williams证明我完全错了。 – varocarbas

0

Varocarbas已经给你提供了选择的提示。 我可以告诉你如何在以后循环使用工作表,下面的代码在C#中完成。

foreach (Excel.Worksheet sheet in workbook.Sheets) 
{ 
    workbook.Activate(); 
    if(sheet.Name="your specific selected row") 
    { 
      sheet.Activate(); 
    } 
} 

如果你不使用C#得到它,你得到的VB.NET代码后面的位置:VB

Set excelApp = CreateObject("excel.application") 
Set excelWrkbook = excelApp.WorkBooks.Add 
Set excelSheet = excelWrkbook.WorkSheets(1) 
excelSheet.Cells(1,1).Select //1,1 can be changed to be mapped on column A 

类似

http://www.developerfusion.com/tools/convert/csharp-to-vb/?batchId=bbd6bd81-5e7e-4341-8fb4-69830a87c654

东西现在用Varocarbas的代码,C#和VB代码,你应该能够完成所有的链接,你应该能够单击单元格A - >事件触发器,并且能够比较表单姓名并根据StudentID激活工作表。

相关问题