Как я могу сделать ссылку из <td> ячейки таблицы

Колонна консолидации

Sub ConsolidateColumn()

    ' Source Worksheet List
    Const cSheets As String = "Invoices,CreditNotes,Journals"
    Const cTarget As String = "Sheet1"  ' Target Worksheet Name
    Const cFur As Long = 2              ' Source First Used Row
    Const cColS As Variant = 11         ' Source Column Letter/Number ("K")
    Const cColT As Variant = 1          ' Target Column Letter/Number ("A")

    Dim rng As Range      ' Source Column Range (in current Source Worksheet)
    Dim vntW As Variant   ' Worksheet Array
    Dim LurS As Long      ' Source Last Used Row Number
    Dim FerT As Long      ' Target First Empty Row Number
    Dim i As Long         ' Worksheet Array Element Counter

    ' Split Source Worksheet List to Worksheet Array.
    vntW = Split(cSheets, ",")

    ' In This Workbook (The Workbook Containing This Code)
    With ThisWorkbook.Worksheets(cTarget)
        ' Loop through elements of Worksheet Array.
        For i = 0 To UBound(vntW)
            ' Calculate Target First Empty Row Number.
            FerT = .Cells(.Rows.Count, cColT).End(xlUp).Row + 1
            ' In Current Source Worksheet
            With ThisWorkbook.Worksheets(Trim(vntW(i)))
                ' Calculate Source Last Used Row Number.
                LurS = .Cells(.Rows.Count, cColS).End(xlUp).Row
                ' Calculate Source Column Range.
                ' Create a reference to Source Column Range.
                Set rng = .Cells(cFur, cColS).Resize(LurS - cFur + 1)
            End With
            ' Calculate Target Column Range.
            ' Copy values from current Source Column Range to Target Column
            ' Range.
            .Cells(FerT, cColT).Resize(rng.Rows.Count) = rng.Value
        Next
    End With
 End Sub
60
задан Abel 23 December 2016 в 19:25
поделиться

4 ответа

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

Как уже объяснялось, это семантически неверно. Элемент a является встроенным элементом и не должен использоваться как элемент уровня блока. Однако вот пример (но JavaScript плюс стиль td: hover CSS будет намного опрятнее), который работает в большинстве браузеров:

<td>
  <a href="http://example.com">
    <div style="height:100%;width:100%">
      hello world
    </div>
  </a>
</td>

PS: на самом деле лучше изменить a в элементе уровня блока, используя CSS как объясняется в другом решении в этой ветке . он не будет хорошо работать в IE6, но это не новость;)

Альтернативное (не рекомендованное) решение

Если ваш мир - только Internet Explorer (редко, в настоящее время), вы можете нарушить стандарт HTML и написать это будет работать, как ожидалось, но будет крайне неодобрительно встречено и будет сочтено опрометчивым (вы не слышали об этом от меня). Любой другой браузер, кроме IE, не отобразит ссылку, но отобразит таблицу правильно.

<table>
    <tr>
        <a href="http://example.com"><td  width="200">hello world</td></a>
    </tr>
</table>
89
ответ дан 24 November 2019 в 17:39
поделиться

Это могло бы быть самым простым способом сделать целое <td> ячейка активная гиперссылка просто использование HTML.

у меня никогда не было удовлетворительного ответа для этого вопроса, до приблизительно 10 минут назад, таким образом, годы #humor в процессе создания.

Протестированный на Firefox 70, это - базовый пример, где одна ширина сплошной линии ячейки активна:

<td><a href=""><div><br /></div></a></td>

, Очевидно, пример просто связывается с "этим документом", поэтому заполните href="" и замените <br /> чем-либо соответствующим.

Ранее я использовал стиль и пару класса, которую я починил из ответов выше (Благодаря Вам люди.)

Сегодня, работающий над другим вопросом, я продолжал разделять его вниз, пока <div>&nbsp;</div> не была единственная оставленная вещь, удалите <div></div>, и это прекращает связываться вне текста. Я не любил короткое "_" эти &nbsp; отображенный и нашел сингл <br /> работы без "дополнительной строки" штраф.

, Если другой <td></td> в эти <tr> имеет несколько строк и делает строку более высокой с переходом на новую строку, например, то используют приблизительно [1 110] для обеспечения <td>, Вы хотите быть активными к корректному количеству строк и активными полная ширина каждой строки.

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

0
ответ дан 24 November 2019 в 17:39
поделиться

Я бы хотел сделать весь td гиперссылкой. Я бы предпочел без javascript. Возможно ли это?

Это невозможно без javascript. Кроме того, это не будет семантической разметкой. Вы должны использовать ссылку, иначе это вопрос прикрепления обработчика onclick к для перенаправления на какую-то другую страницу.

1
ответ дан 24 November 2019 в 17:39
поделиться

Я бы рекомендовал использовать реальный элемент привязки и установить его как блок.

<div class="divBox">
    <a href="#">Link</a>
</div>

.divBox
{
    width: 300px;
    height: 100px;
}
.divBox a
{
    width: 100%;
    height: 100%;
    display: block;
}

Это установит привязку к тем же размерам, что и родительский div.

13
ответ дан 24 November 2019 в 17:39
поделиться