用列名填充combobox

我有一个应用程序在vb.net文件Excel

首先,我有一个“浏览”button,打开Excel工作簿。

其次,我有一个button“获取工作表的名称”,它给了我在一个combobox1中的工作表的名称,然后我select工作表。 然后我有一个其他的button“获取列名”给我在一个combobox2表中的列的名称。 当我select列的名称新的工作表添加命名列的名称,并具有该列的数据

我想要的是:

当我从combobox1中select另一张纸时,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")) 

如果我说每个工作表都包含表格的第一行中列的名称,并且希望在从combobox中select工作表后检索这些列的名称,我是否理解正确?

我读了你的答案,我应用你给我,但它仍然是同样的问题,然后msgbox仍然出现时,我从combobox2select工作表2

  Dim updating As Boolean Public Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) FillColumnCombobox(Chargement_de_données.ComboBox1.Text) End Sub Public 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 If updating Then Exit Sub End If 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")) Public Sub FillColumnCombobox(ByVal sheetname As String) Dim currentcell As Range updating = True ComboBox2.Items.Clear() For Each currentcell In Chargement_de_données.xlWorkSheet.UsedRange.Rows(1).Cells If currentcell.Value <> "" Then ComboBox2.Items.Add(currentcell.Value) End If Next updating = False End Sub