2017-08-23 3 views
0

Ich habe den folgenden Code, der den Benutzer auffordert, auf einen Zellenwert zu klicken.Eingabefeld vba zeigt die Zellennummer anstelle des Wertes an

Das Eingabefeld aber sobald ein Wert ausgewählt ist sagen wir zum Beispiel ich klicke auf b3 zeigt $ b $ 3 an. Ich möchte den Wert anzeigen, der sich in $ b $ 3 befindet. Wenn sich der 17-Jun beispielsweise innerhalb von $ B $ 3 befindet, sollte er 17-Jun und nicht $ B $ 3 im Eingabefeld anzeigen.

+0

Sie können nicht tun, dass mit Typ: = 8, wird die Adresse angezeigt werden soll. Berücksichtigen Sie auch, was passiert, wenn ein Benutzer mehr als eine Zelle auswählt. –

+0

Ich versuche nur 1 Zelle nicht mehr auszuwählen. Ich verstehe, dass ich Reichweite habe, aber wie wird es zu Einzelzelle umgearbeitet? und zeigt Type: = 2 das an, nachdem ich zu einer einzelnen Zelle gewechselt habe? –

+0

Warum haben Sie den Sub-Namen aus Ihrem Code weggelassen? – jsotola

Antwort

2

Eine andere Antwort ist die Verwendung eines UserForm.

Erstellen einer Userform, wie dies:

enter image description here

Weitere Informationen: Die Schaltfläche "Ok" wird "Ok" genannt, und das weiße Textfeld "dateBox"

für das Formular Code verwenden:

Private Sub Ok_Click() 
ActiveCell.Font.Bold = True 
UserForm1.Hide 
End Sub 

Dann im Arbeitsblatt Modul, setzen diese:

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 

laufen dann die bold_date2():

enter image description here

0

Was ich verstehe, dass Sie die Eingabe von Benutzer nehmen müssen, und davon ausgehen, dass nur einzelne Zelle zur Verfügung gestellt wird. Und Sie müssen den Wert der ausgewählten Zelle abrufen und den Schriftstil auf fett setzen.

Sie können dies erreichen, indem Sie zuerst die ausgewählte Zellenreferenz abrufen, die Font-Eigenschaft verwenden, um alle Schriftstile festzulegen, und die Value-Eigenschaft lesen, um den Inhalt zu erhalten.

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) 
+0

Ich möchte nicht wirklich ein Meldungsfeld ausgeben Ich möchte nur anzeigen, was sie im Eingabefeld angeklickt haben. Ich verstehe, was Sie erklärt haben und macht Sinn für jeden, der es auf diese Weise versucht. –

+0

OK, dann ist das Problem. Mit MsgBox habe ich gerade versucht zu zeigen, wie man Wert von Zelle, d. H. "SDate.Value" erhalten kann. –

0

Wie funktioniert das für Sie?

Es wird eine Messagebox mit dem Datum, nach Auswahl eines Bereichs. Es hat auch eine Überprüfung für mehrere Zellen. Wenn mehrere Zellen ausgewählt sind, verwendet es die erste Zelle in diesem Bereich als Ihre neue sDate.

+0

Vielen Dank, aber ich versuche nur zu setzen, was der Benutzer im Eingabefeld angeklickt hat, tut es schon, aber was es in das Eingabefeld steckt ist das Format falsch. –

+1

@AngatvirSanghera - AFAIK das ist mit 'InputBox' nicht möglich. Sie können dies möglicherweise mit einem Benutzerformular tun. – BruceWayne

Verwandte Themen