Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Messagebox ausgeben von aktiver Zelle (offset)

Forumthread: Messagebox ausgeben von aktiver Zelle (offset)

Messagebox ausgeben von aktiver Zelle (offset)
22.11.2017 20:41:43
aktiver
Hallo Zusammen,
ich möchte mit dem Barcode-Scanner die Nummer einlesen. Das funktioniert soweit.
Dabei soll der dazugehöhrende Text rechts von der aktiven Zelle mit den Strichcode-Zahlen in einer Messagebox eingezeigt werden.
Kann mir jemand helfen wie ich das erreichen kann.
Bei Fragen stehe ich euch jederzeit zur Verfügung
https://www.herber.de/bbs/user/117850.doc
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
activeCell.offset(0,2).Value
23.11.2017 00:07:20
CitizenX
Ohne "s"
quasi singular ;-)
VG
Steffen
AW: activeCell.offset(0,2).Value
23.11.2017 09:00:35
Silvan
Hallo CitizenX
vielen Dank für deine Antwort. Nun kommt der Laufzeitfehler 438.
Kann man mit "Range" suchen und sich anschliessend auf "activecell" beziehen?
Vielen Dank für eure Hilfe
AW: activeCell.offset(0,2).Value
23.11.2017 09:38:28
Peter
Hallo Silvan,
Probier mal:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strMeldung As String
If Target.Column = 35 Then
If Target.Row >= 56 Then
If ActiveCell.Offset(-1, 2)  "" Then
strMeldung = ActiveCell.Offset(-1, 2).Value
MsgBox "Du hast den " & strMeldung & " richtig und sauber fertiggestellt.",  _
vbInformation, "Meldung"
End If
End If
End If
End Sub
Gruß
Peter (hpo)
Anzeige
AW: activeCell.offset(0,2).Value
23.11.2017 18:09:53
Silvan
Hallo Peter,
vielen herzlichen Dank für deine Hilfe. Wir kommen der Sache schon näher.
Ich habe noch das Problem, dass ich zwischen den sichtbaren Zeilen alle Zeilen ausgeblendet habe, die keine Positionsnummer haben. Somit weisst es mir immer "0" aus, da der Wert der vorhergehenden, ausgeblendeten Zeile "0" ist.
Gibt es eine Möglichkeit dieses Problem zu umgehen?
- Ein Befehl für letzte aktive Zelle?
- oder der Text des eingelesenen Artikel automatisch in die Zeile oberhalb reinschreiben?
Bin dir sehr dankbar, wenn du noch einen weiterführenden Lösungsansatz weisst.
Freundliche Grüsse Silvan
https://www.herber.de/bbs/user/117876.zip
Anzeige
AW: activeCell.offset(0,2).Value
24.11.2017 09:12:48
Peter
Hallo Silvan,
Probier mal:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strMeldung As String, i As Integer
On Error Resume Next
If Target.Column = 35 Then
If Target.Row >= 56 Then
If Rows.Rows(ActiveCell.Row - 1).EntireRow.Hidden = True Then
For i = ActiveCell.Row To 56 Step -1
If Cells(i - 1, 37).EntireRow.Hidden = False Then
If Cells(i - 1, 37).Value  0 Then
strMeldung = Cells(i - 1, 37).Value
Exit For
End If
End If
Next i
End If
If ActiveCell.Offset(-1, 2)  "" And ActiveCell.Offset(-1, 2)  0 Then
strMeldung = ActiveCell.Offset(-1, 2).Value
End If
If strMeldung  "" Then
MsgBox "Du hast den " & strMeldung & " richtig und sauber fertiggestellt.",  _
vbInformation, "Meldung"
End If
End If
End If
End Sub
Gruß
Peter (hpo)
Anzeige
AW: activeCell.offset(0,2).Value
24.11.2017 09:58:17
Peter
Hallo Silvan,
bitte diesen Code verwenden:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strMeldung As String, i As Integer
On Error Resume Next
If Target.Column = 35 Then
If Target.Row >= 56 Then
If Rows.Rows(ActiveCell.Row - 1).EntireRow.Hidden = True Then
For i = ActiveCell.Row To 56 Step -1
If Cells(i - 1, 37).EntireRow.Hidden = False Then
If Cells(i - 1, 37).Value  0 Then
strMeldung = Cells(i - 1, 37).Value
End If
Exit For
End If
Next i
End If
If ActiveCell.Offset(-1, 2)  "" And ActiveCell.Offset(-1, 2)  0 Then
strMeldung = ActiveCell.Offset(-1, 2).Value
End If
If strMeldung  "" Then
MsgBox "Du hast den " & strMeldung & " richtig und sauber fertiggestellt.",  _
vbInformation, "Meldung"
End If
End If
End If
End Sub
Gruß
Peter (hpo)
Anzeige
AW: activeCell.offset(0,2).Value
25.11.2017 12:58:49
Silvan
Hallo Peter alias VBA-Gott,
ich weiss nicht wie ich dir danken soll. Klappt genau so wie ich es mir vorgestellt habe.
Hätte ich selber wohl nie hingekriegt.
Habe noch eine Frage: kannst du mir sagen, wie und wo ich diese Formel in einer Userform einfügen muss, damit ich eine eigene Messagebox gestalten kann. Sollte genau wie jetzt funktionieren, will einfach die Messagebox grösser und von weitem besser lesbar gestalten.
nochmals vielen herzlichen Dank
Anzeige
AW: activeCell.offset(0,2).Value
25.11.2017 16:50:24
Silvan
Hallo Peter,
ich bin's nochmals.
Habe mich noch ein wenig mit der Userform beschäftigt und kriege leider nicht alles so hin wie ich möchte.
Im Anhang sende ich dir meine Versuch, die Userform einzurichten. Ich habe meine offenen Punkte als Bemerkung reingeschrieben.
https://www.herber.de/bbs/user/117906.zip
freundliche Grüsse
Anzeige
Aktive Zelle in Userform ausgeben
30.11.2017 21:05:17
Silvan
Hallo Peter, Hallo andere VBA-Cracks,
bin immer noch an meinem Problem mit der Ausgabe der aktiven Zelle in einer Userform. Dank Peter funktioniert es wie gewollt in einer Messagebox.
Kann mir jemand erklären wie ich den funktionierenden Code einzusetzen habe, dass dieser in der Userform statt der Messagebox funktioniert? Vorangehend sieht man den Originalcode von Peter.
Mein Versuch:
Private Sub UserForm_Initialize()
Dim strMeldung As String, i As Integer
On Error Resume Next
If Target.Column = 35 Then
If Target.Row >= 56 Then
If Rows.Rows(ActiveCell.Row - 1).EntireRow.Hidden = True Then
For i = ActiveCell.Row To 56 Step -1
If Cells(i - 1, 37).EntireRow.Hidden = False Then
If Cells(i - 1, 37).Value  0 Then
strMeldung = Cells(i - 1, 37).Value
End If
Exit For
End If
Next i
End If
If ActiveCell.Offset(-1, 2)  "" And ActiveCell.Offset(-1, 2)  0 Then
strMeldung = ActiveCell.Offset(-1, 2).Value
End If
If strMeldung  "" Then
UserForm.TextBox1.Value = strMeldung
End If
End If
End If
End Sub
Gruss Silvan
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Messagebox aus aktiver Zelle mit Excel VBA


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu:

    • Rechtsklick auf „VBAProject (dein Arbeitsblatt)“ > Einfügen > Modul.
  3. Kopiere den folgenden Code in das Modul:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       Dim strMeldung As String
       If Target.Column = 35 Then
           If Target.Row >= 56 Then
               If ActiveCell.Offset(-1, 2) <> "" Then
                   strMeldung = ActiveCell.Offset(-1, 2).Value
                   MsgBox "Du hast den " & strMeldung & " richtig und sauber fertiggestellt.", vbInformation, "Meldung"
               End If
           End If
       End If
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Teste die Funktion: Wähle eine Zelle in Spalte 35 und überprüfe, ob die Messagebox korrekt erscheint.


Häufige Fehler und Lösungen

  • Laufzeitfehler 438: Dieser Fehler tritt auf, wenn du versuchst, auf eine Methode oder Eigenschaft zuzugreifen, die nicht existiert. Überprüfe, ob du die richtige Syntax verwendest, z. B. ActiveCell.Offset(0, 2).Value.

  • Leere Messagebox: Wenn die Messagebox leer bleibt, stelle sicher, dass sich in der Zelle, die du abfragst, tatsächlich ein Wert befindet. Überprüfe auch den Offset-Wert.


Alternative Methoden

  • Verwendung von UserForms: Wenn du eine benutzerdefinierte Messagebox möchtest, kannst du eine UserForm erstellen. Füge ein Textfeld hinzu und setze den Wert wie folgt:

    Private Sub UserForm_Initialize()
       Dim strMeldung As String
       strMeldung = ActiveCell.Offset(-1, 2).Value
       If strMeldung <> "" Then
           Me.TextBox1.Value = strMeldung
       End If
    End Sub
  • Direkte Ausgabe in eine Zelle: Anstatt eine Messagebox zu verwenden, kannst du den Wert auch direkt in eine Zelle schreiben:

    Worksheets("Sheet1").Range("A1").Value = ActiveCell.Offset(-1, 2).Value

Praktische Beispiele

  • Beispiel für Barcode-Scanner: Wenn du einen Barcode-Scanner verwendest, um Daten in eine bestimmte Zelle einzugeben, kannst du den Code so anpassen, dass der Text rechts davon in einer Messagebox angezeigt wird.

    If Not IsEmpty(ActiveCell.Offset(0, 1)) Then
       MsgBox "Barcode erkannt: " & ActiveCell.Value & " - " & ActiveCell.Offset(0, 1).Value
    End If

Tipps für Profis

  • Fehlerbehandlung hinzufügen: Nutze On Error Resume Next, um unerwartete Fehler zu vermeiden und die Stabilität deines Codes zu erhöhen.

  • Verwende Named Ranges: Dies erleichtert das Verstehen deines Codes. Anstelle von Cells(i - 1, 37) kannst du einen benannten Bereich verwenden, was den Code lesbarer macht.

  • Testen in verschiedenen Excel-Versionen: Achte darauf, dass dein VBA-Code in verschiedenen Versionen von Excel, z. B. Excel 2016 und Excel 365, funktioniert.


FAQ: Häufige Fragen

1. Kann ich den Code in einer UserForm verwenden?
Ja, du kannst den Code für die Ausgabe in einer UserForm anpassen, indem du den Wert in ein Textfeld der UserForm schreibst.

2. Wie kann ich die Messagebox anpassen?
Die Standard-Messagebox hat begrenzte Anpassungsmöglichkeiten. Für eine benutzerdefinierte Gestaltung solltest du eine UserForm verwenden, die dir mehr Flexibilität bietet.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige