更改Excel用户窗体combobox的列

早上好,

我在另一个车辙,需要一些帮助。 我创build了一个用户表单,允许用户删除第二张纸上的整行数据(rawdata)。 一切工作正常使用下面的代码,但combobox只显示行号。 我迫切需要改变列,所以它会显示需要删除的行的项目名称。

例:

Row: Project 1 Alpha 2 Beta 

我希望combobox显示阿尔法和testing版,并让用户能够根据该标准select他们想要删除的行。

下面的代码取消隐藏,然后隐藏我希望发生删除的工作表。 这是有目的的完成的。

  Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Dim lRw As Long ActiveWorkbook.Sheets("RAWDATA").Visible = xlSheetVisible 'get the row number. add 1 because ListIndex starts at zero lRw = Me.ComboBox1.ListIndex + 1 ActiveWorkbook.Sheets("RAWDATA").Select Cells(lRw, 1).EntireRow.Delete ActiveWorkbook.Sheets("RAWDATA").Visible = xlSheetHidden End Sub Private Sub CommandButton1_Click() End Sub Private Sub UserForm_Initialize() 'assumes data starts in A1 and has a header row Me.ComboBox1.List = ActiveWorkbook.Sheets("RAWDATA").Cells(1, 1).CurrentRegion.Offset(1).Value End Sub 

谢谢您的帮助!

.Cells(1, 1)更改为.Cells(1, 2)

Cells()方法使用行和列号给出代码坐标到特定的范围,如下所示:

 Cells(r, c) 

所以在原始代码中,.Cells(1,1)指向“A1”,然后使用.CurrentRegion获取A1区域内的所有单元格。

通过replace列号并使用.Cells(1,2),我们告诉它看看“B1”,因此将列移到右边。

编辑:

你可以将这个逻辑应用到Offset(r,c)函数中,将返回值移动1列 – 所以:

 .Cells(1, 1).CurrentRegion.Offset(1, 1) 

.Cells()方法将指向一个特定的单元格,但是这个可能是罪魁祸首。但是,除非我们抵消它,否则.CurrentRegion()方法将返回相同的结果。