显示单元格编号而不是值的输入框vba

显示单元格编号而不是值的输入框vba,vba,excel,Vba,Excel,我有以下代码提示用户单击单元格值 Dim sDate As Range On Error Resume Next Application.DisplayAlerts = False Set sDate = Application.InputBox(Prompt:= _ "Please select start date.", _ Title:="Start Date", Type:=8) On Error GoTo

我有以下代码提示用户单击单元格值

Dim sDate As Range
On Error Resume Next
    Application.DisplayAlerts = False
        Set sDate = Application.InputBox(Prompt:= _
            "Please select start date.", _
                Title:="Start Date", Type:=8)
On Error GoTo 0
    Application.DisplayAlerts = True
    If sDate Is Nothing Then
        Exit Sub
    Else
        sDate.Font.Bold = True
    End If
End Sub

然而,一旦选择了一个值,输入框就可以说,例如,我点击b3显示$b$3。我想显示$b$3内的值。例如,如果17 Jun在$b$3内,则应在输入框中显示17 Jun,而不是$b$3。

据我所知,您需要从用户处获取输入,并假设只提供单个单元格。您需要检索所选单元格的值,并将其字体样式设置为粗体

您可以通过首先获取选定的单元格引用,使用
Font
属性设置任何字体样式,并读取其
属性以获取其内容来实现此目的

 Set sDate = Application.InputBox(Prompt:= _
            "Please select start date.", _
                Title:="Start Date", Type:=8)

    sDate.Font.Bold = True
    MsgBox ("Selected cell's value is: " & sDate.Value)

据我所知,您需要从用户处获取输入,并假设只提供单个单元格。您需要检索所选单元格的值,并将其字体样式设置为粗体

您可以通过首先获取选定的单元格引用,使用
Font
属性设置任何字体样式,并读取其
属性以获取其内容来实现此目的

 Set sDate = Application.InputBox(Prompt:= _
            "Please select start date.", _
                Title:="Start Date", Type:=8)

    sDate.Font.Bold = True
    MsgBox ("Selected cell's value is: " & sDate.Value)

这对你有什么作用

Sub bold_Date()
Dim sDate   As Range
On Error Resume Next
Application.DisplayAlerts = False
Set sDate = Application.InputBox(Prompt:="Please select start date.", Title:="Start Date", Type:=8)

If sDate.Cells.Count > 1 Then Set sDate = sDate.Cells(1, 1)
MsgBox ("Date is: " & sDate.Text)

Application.DisplayAlerts = True

If sDate Is Nothing Then
    Exit Sub
Else
    sDate.Font.Bold = True
End If
End Sub

选择一个范围后,它将放置一个带有日期的消息框。此外,它还可以检查多个单元格。如果选择了多个单元格,它将使用该范围内的第一个单元格作为新的
sDate

这对您有何作用

Sub bold_Date()
Dim sDate   As Range
On Error Resume Next
Application.DisplayAlerts = False
Set sDate = Application.InputBox(Prompt:="Please select start date.", Title:="Start Date", Type:=8)

If sDate.Cells.Count > 1 Then Set sDate = sDate.Cells(1, 1)
MsgBox ("Date is: " & sDate.Text)

Application.DisplayAlerts = True

If sDate Is Nothing Then
    Exit Sub
Else
    sDate.Font.Bold = True
End If
End Sub

选择一个范围后,它将放置一个带有日期的消息框。此外,它还可以检查多个单元格。如果选择了多个单元格,它将使用该范围内的第一个单元格作为新的
sDate

另一个答案是使用用户表单

创建一个userform,例如:

注:“确定”按钮名为“确定”,白色文本框为“日期框”

对于表单代码,请使用:

Private Sub Ok_Click()
ActiveCell.Font.Bold = True
UserForm1.Hide
End Sub
然后在工作表模块中,输入以下内容:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then UserForm1.dateBox.Value = Target.Value
End Sub
Sub bold_Date2()
UserForm1.Show vbModeless
End Sub
然后运行
bold_date2()


另一个答案是使用UserForm

创建一个userform,例如:

注:“确定”按钮名为“确定”,白色文本框为“日期框”

对于表单代码,请使用:

Private Sub Ok_Click()
ActiveCell.Font.Bold = True
UserForm1.Hide
End Sub
然后在工作表模块中,输入以下内容:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Cells.Count = 1 Then UserForm1.dateBox.Value = Target.Value
End Sub
Sub bold_Date2()
UserForm1.Show vbModeless
End Sub
然后运行
bold_date2()


如果类型为:=8,则无法执行此操作,它将显示地址。还考虑如果用户选择超过1个单元格会发生什么。我只是尝试不再选择1个单元格。我知道我做了范围,但它是如何返工为单细胞?当我切换到单单元格时,Type:=2是否会显示它?为什么您要从代码中省略子名称?如果Type:=8,则无法执行此操作,它将显示地址。还考虑如果用户选择超过1个单元格会发生什么。我只是尝试不再选择1个单元格。我知道我做了范围,但它是如何返工为单细胞?当我切换到单单元格时,Type:=2是否会显示它?为什么你要从代码中省略子名称?我并不想输出消息框,我只想显示他们在输入框中单击的内容。我理解你的解释,而且对任何试图这样做的人都有意义。好吧,那问题出在哪里呢。通过使用MsgBox,我试图展示如何从单元格中获取值,即
sDate.value
。我并不想输出消息框,我只想显示他们在输入框中单击的内容。我理解你的解释,而且对任何试图这样做的人都有意义。好吧,那问题出在哪里呢。通过使用MsgBox,我试图展示如何从单元格中获取值,即
sDate.value
。谢谢,但我只是想把用户单击的内容放在输入框中,它已经这样做了,但它放在输入框中的格式是错误的。@AngatvirSanghera-AFAIK这在
输入框中是不可能的。您可能可以使用userform来实现这一点。谢谢,但我只是想将用户单击的内容放在输入框内,它已经这样做了,但它放在输入框内的内容格式是错误的。@AngatvirSanghera-AFAIK这在
InputBox
中是不可能的。您可以使用userform来实现这一点。