は、彼らが値の列の代わりに、値の行であるかのように細胞が扱われるように
ListBox1.List = rngSource.Cells.Value
が
ListBox1.List = Application.Transpose(rngSource.Cells.Value)
ことを言うあなたの文を変更し
。 ASHによってコメントで指摘したように
、あなたはまた、修飾されていないプロパティ(あなたはプロパティがアクティブシートにデフォルトはを参照し、したがってされたワークシートを指定しないCells
のようなつまり、物事を)持っています。これらは、マクロで複数のワークシートを使用する必要があるとすぐに問題を引き起こす可能性があります。そのため、今は完全修飾の習慣に入る方がよいでしょう。
現時点では、(上記の私の提案補正後)あなたのコードは同等です:
Dim rngSource As Range
Dim lCol As Long
'Determine last column
lCol = ActiveSheet.Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column
'Set range source data to be included in listbox
Set rngSource = Worksheets("Sheet1").Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(1, lCol))
'Populate listbox with range source data
lstAllFields.List = Application.Transpose(rngSource.Cells.Value)
ActiveSheet
とWorksheets("Sheet1")
ながら、細かいRange
Worksheets("Sheet1")
の作品のための境界としてActiveSheet
に属するCells
の使用同じものですが、異なる場合はクラッシュします。
私はちょうど私達が文法的にWorksheets("Sheet1")
単に.
のすべての出現をショートカットすることができますWith Worksheets("Sheet1")
ブロックの使用をお勧めします。あなたのコードは次のようになります:
Dim rngSource As Range
Dim lCol As Long
With Worksheets("Sheet1")
'Determine last column
lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
'Set range source data to be included in listbox
Set rngSource = .Range(.Cells(1, 1), .Cells(1, lCol))
'Populate listbox with range source data
lstAllFields.List = Application.Transpose(rngSource.Cells.Value)
End With
@A.S.H - あなたは私を見ている必要があります!私は更新を掲示し、あなたのコメントをupvoteに行ったが、すでに消えてしまった。 – YowE3K