Мне нужно перенести код VBA
в аддон VB.Net
, но я не могу получить конкретное значение ячейки из своей таблицы.
Я могу заменить Range(2,2)
на "Test"
, но table.Range(2, 2).ToString
дает System.__ComObject
в качестве значения.
Private Sub Button1_Click(sender As Object, e As RibbonControlEventArgs) _
Handles Button1.Click
Dim table As Excel.ListObject
table = Globals.wsTables.ListObjects("vehicleDefinations")
table.Range(2, 2) = "Test"
Dim file As New System.IO.StreamWriter _
("C:\Users\Ryzen2600x\Downloads\Debug.txt", False)
file.WriteLine(table.Range(2, 2).ToString)
file.Close()
End Sub
Вам не хватает .Value
file.WriteLine(table.Range(2, 2).Value.ToString)
добавление .value дает мне синтаксическую ошибку "Option Strict On запрещает позднее связывание"
Не используйте .Range для получения значения. Вместо этого попробуйте использовать
table.DataBodyRange.Cells (2, 2)
или
[MyTable] .Cells (2,2)
Он использует свойство ListObject().Range
, а не Application.Range
, это совершенно правильный способ ссылки на данные таблицы ...
Вдобавок к этому table.DataBodyRange.Cells(2,2)
(как и другие) приведет к ошибке, так как это выражение ожидает =
для присвоения значения!
он дает мне System .__ ComObject в качестве вывода,
file.WriteLine (table.DataBodyRange.Range ("B1"). Value) работает, но я хочу, чтобы он был в формате (1,1), чтобы поместить его в цикл
Пожалуйста, укажите этот код:
private void ListObject_Range()
{
Microsoft.Office.Tools.Excel.ListObject list1 = this.Controls.AddListObject(this.Range["A1", "C4"], "list1");
MessageBox.Show("The list object contains " + list1.Range.Cells.Count.ToString() + " cells.");
}
Более подробную информацию см.
Помогите, это поможет вам.
Спасибо, Юки
Попробуйте сменить код на
file.WriteLine(table.Range(2, 2).Value2)