【发布时间】:2015-05-11 09:46:41
【问题描述】:
我在 vb.net 上有一个带有 Excel 文件的应用程序
首先,我有一个“浏览”按钮,可以打开 Excel 工作簿。
其次,我有一个按钮“获取工作表的名称”,它在组合框中为我提供工作表的名称1,然后我选择工作表。 然后我有另一个按钮“获取列名”,它为我提供了组合框2 中表的列名。 当我选择列名时,会添加一个名为列名的新工作表,其中包含该列的数据
我想要的是:
当我从 combobox1 中选择另一个工作表时,combobox2 将使用新工作表的新列名称刷新
Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
Chargement_de_données.xlWorkSheet = CType(Chargement_de_données.xlWorkBook.Sheets(Chargement_de_données.ComboBox1.Text), Excel.Worksheet)
Chargement_de_données.xlWorkSheet.Activate()
Chargement_de_données.xlApp.Visible = True
Dim key As String = CStr(DirectCast(ComboBox2.SelectedItem, KeyValuePair(Of Integer, String)).Key)
Dim value As String = DirectCast(ComboBox2.SelectedItem, KeyValuePair(Of Integer, String)).Value
DataGridView1.Visible = True
Dim DoesSheetExists As Boolean = False
For Each xs In Chargement_de_données.xlApp.Sheets
If xs.Name = value Then
DoesSheetExists = True
End If
Next
If DoesSheetExists = True Then
MsgBox("L'indicateur est déja ouvert ", CType(MessageBoxIcon.Error, MsgBoxStyle))
Else
With Chargement_de_données.xlWorkSheet
Dim lastrow As Integer = Chargement_de_données.xlWorkSheet.Cells.Rows.End(XlDirection.xlDown).Row
Dim colletter As String = ColumnIndexToColumnLetter(CInt(key))
exWS2 = DirectCast(Chargement_de_données.xlWorkBook.Sheets.Add, Microsoft.Office.Interop.Excel.Worksheet)
exWS2.Name = value
Chargement_de_données.xlWorkSheet.Range("C1:C" & lastrow.ToString).Copy(exWS2.Range("A1"))
Chargement_de_données.xlWorkSheet.Range(colletter & "1:" & colletter & lastrow.ToString).Copy(exWS2.Range("B1"))
【问题讨论】: