Вставка 3 столбцов Excel в 1 метку

#excel #vba #userform

#excel #vba #пользовательская форма

Вопрос:

У меня есть три столбца данных. Есть ли способ с помощью vba вставить информацию в метку в пользовательской форме?

Вот обновленный код, который у меня есть:

 Dim rowNum As Integer
Dim lastRow As Integer
lastRow = 373

For rowNum = 2 To lastRow

report = Sheets("DATA2").Range("F" amp; rowNum).Text amp; _
"      " amp; Sheets("DATA2").Range("G" amp; rowNum).Text amp; _
"      " amp; Sheets("DATA2").Range("H" amp; rowNum).Text amp; vbCrLf

Next rowNum

End Sub
  

Комментарии:

1. Вы можете жестко закодировать lastRow как 373, если он никогда не изменится (т. Е. константа), или вы можете использовать какой-либо другой код, чтобы определить, какая строка является последней в столбце. Например, если вы хотите найти последнюю использованную строку в столбце F, используйте: lastRow = Sheets("DATA2").Range("F" amp; Rows.Count).End(xlUp).row

2. @Widor: Я пробовал это, и он по-прежнему вставляет только первую строку.

3. @Mike: моим кодом или вашим кодом? Вы используете .Range("F2").Text , когда это должно быть .Range("F" amp; rowNum).Text

4. Тогда это должно быть report.Caption = ... потому что вы должны установить свойство Caption метки в качестве строки, сгенерированной вами в цикле.

5. Извините, я думаю, что это закончено записывать в каждом цикле. Попробуйте report.Caption = report.Caption amp; вместо этого. У всех Label элементов управления есть свойство с именем Caption , которое вы увидите в окне свойств при разработке формы. В коде вам нужно получить доступ к этому как, report.Caption поскольку report это идентификатор вашей метки.

Ответ №1:

Попробуйте:

 Dim rowNum as Integer 'loop counter  
Dim lastRow as Integer
lastRow = 'some code to set the row number of the bottom row

For rowNum = 1 to lastRow
    With ActiveWorksheet
        myLabel.Text = myLabel.Text amp; .Range("A" amp; rowNum).Text amp; " " amp; .Range("B" amp; rowNum).Text amp; " " amp; .Range("C" amp; rowNum).Text amp; vbCrLf
    End With
Next rowNum
  

Редактировать

Обновлено для добавления каждого цикла вместо перезаписи

Комментарии:

1. Это работает для первой строки, но остальные столбцы не отображаются.

2. @Mike Извините, неправильно прочитал вопрос. соответствующим образом обновил свой ответ.

3. Я обновил исходное сообщение выше, чтобы отразить код, который у меня есть из того, что вы опубликовали. Я не знаю точно, какой код вставить туда, где написано «lastRow =», Моя последняя строка — 373. Кроме того, все ли остальное правильно? Спасибо

4. @Mike: Смотрите мой ответ на ваш первоначальный вопрос

Ответ №2:

Предполагая, что ваша метка может обрабатывать несколько строк, вы могли бы написать цикл, который перебирает каждый столбец данных и добавляет его к строке в виде новой строки, а затем присваивает текстовому полю этой метки значение созданной вами строки.