мои навыки работы с VBA довольно примитивны, поэтому, если кто-то действительно сможет помочь, вы сможете сказать мне точно, куда вставить код VBA и как заставить его "работать"!
Я обычно не отвечаю на вопросы, которые не требуют усилий, но этот вопрос выходит за рамки обычного вопроса, поэтому я попытаюсь ответить на него.
Можно показать содержимое, когда hovering
над ячейкой. Когда я говорю hovering
, я имею в виду hovering
, а не Selecting
клетка.
Ссылка на файл примера размещена в конце этого сообщения.
1. В вашем файле перейдите в редактор VBA и вставьте форму пользователя. Затем поместите элемент управления меткой и измените его размер, чтобы заполнить пользовательскую форму, как показано на рисунке ниже

2. Вставьте этот код в форму пользователя
Код
Option Explicit
Const GWL_STYLE = -16
Const WS_CAPTION = &HC00000
Private Declare Function GetWindowLong _
Lib "user32" Alias "GetWindowLongA" ( _
ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong _
Lib "user32" Alias "SetWindowLongA" ( _
ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long
Private Declare Function DrawMenuBar _
Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function FindWindowA _
Lib "user32" (ByVal lpClassName As String, _
ByVal lpWindowName As String) As Long
Sub HideTitleBar(frm As Object)
Dim lngWindow As Long
Dim lFrmHdl As Long
lFrmHdl = FindWindowA(vbNullString, frm.Caption)
lngWindow = GetWindowLong(lFrmHdl, GWL_STYLE)
lngWindow = lngWindow And (Not WS_CAPTION)
Call SetWindowLong(lFrmHdl, GWL_STYLE, lngWindow)
Call DrawMenuBar(lFrmHdl)
End Sub
'~~> Hide Title bar and border using API
Private Sub UserForm_Initialize()
HideTitleBar UserForm1
End Sub
'~~> Stop the execution of the code
Private Sub Label1_Click()
StopLoop = True
Unload Me
End Sub
Это означает, что он удаляет строку заголовка и границу формы.
3. Затем вставьте модуль и вставьте туда этот код
Public Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
Public Type POINTAPI
x As Long
y As Long
End Type
Public StopLoop As Boolean
Sub StartShowingCellContents()
Dim lngCurPos As POINTAPI
Dim rng As Range
StopLoop = False
Do
'~~> Get the cursor position
GetCursorPos lngCurPos
'~~> This will give the cell address "under" the cursor
Set rng = ActiveWindow.RangeFromPoint(lngCurPos.x, lngCurPos.y)
If Not rng Is Nothing Then
If Not rng.Cells.CountLarge > 1 Then
With UserForm1
'~~> Display cell value in the label
.Label1.Caption = rng.Value
'~~> Show the form modeless
.Show vbModeless
DoEvents
End With
End If
End If
DoEvents
'~~> Stop the loop (invoked by clicking on the userform's label
If StopLoop = True Then Exit Sub
Loop
End Sub
4. И все готово. Для начала запустите процедуру Sub StartShowingCellContents()
. И чтобы остановить, просто нажмите на пользовательскую форму
5. В действии. Я щелкнул изображение с помощью телефона, чтобы вы могли видеть курсор в верхней части этой ячейки.

ВАЖНО:
- Вы не сможете выполнять какие-либо операции, такие как копирование, вставка, удаление и т. Д., Пока не будет запущен код. Остановите код, сделайте то, что вы хотите, а затем снова запустите код.
- Не стесняйтесь настраивать код по своему вкусу.
- Образец файла можно загрузить с ЗДЕСЬ