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

Forumthread: Zellenwert mit Mausklick übertragen

Zellenwert mit Mausklick übertragen
Peter
Hallo und guten Tag zusammen,
ich habe alles versucht und auch sämtliche Foren abgesucht, aber nichts gefunden. Vielleicht können mir die Experten von Herber weiterhelfen.
Ich habe nur eine Frage,
Ist es möglich, das eine selektierte Zelle den Wert der Zelle übernimmt, in die ich mit der Maus Klicke?
Ich bedanke mich schon mal im vorraus für Eure Hilfe.
Anzeige
AW: Zellenwert mit Mausklick übertragen
05.08.2010 14:09:17
Markus
Hallo
Beispiel wäre gut von wo zb. nach wo du was klicken möchtest.
Gruß Markus
AW: Zellenwert mit Mausklick übertragen
05.08.2010 14:37:39
Peter
Hallo Markus,
ich habe eine Excelliste, die mit technischen Schwachstellen von Rohrbrücken gefüllt ist.
Diese Schwachstellen werden nach einer vom Betrieb vorgegebenen Farbmatrix bewertet.
Jedes Feld der Farbmatrix ist auch mit einer Buchstaben/ Zahlenkombination beschriftet z.B. A1, D2, E5 usw.
Über VBA habe ich mir 5 Bedingungen der Farbübernahme geschaffen.
Jetzt versuche ich mit einem klick auf die Matrix z.B. auf A1, das der Wert A1 in die vorher markierte Zelle übernommen wird und die entsprechende Zeile dann die Farbe der Matrix übernimmt.
Gruß Peter
Anzeige
AW: Zellenwert mit Mausklick überHallo,tragen
05.08.2010 14:24:58
Rudi
Hallo,
denk mal drüber nach: Wenn du in eine Zelle klickst, ist diese Zelle selektiert. Und nun?
Gruß
Rudi
AW: Zellenwert mit Mausklick überHallo,tragen
05.08.2010 14:39:55
Peter
Hallo Rudi,
genau das ist mein Problem!
Deshalb meine Frage an Euch Experten, ob so etwas überhaupt möglich ist
Gruß Peter
AW: Zellenwert mit Mausklick überHallo,tragen
05.08.2010 14:44:34
Dirk
Hallo Peter,
hier mal ein Beispielmakro:
als erstes musst Du in einem Modul die Variable Public LastAddr As String definieren,
dann im Arbeitsblatt folgende 2 makros:
Private Sub Worksheet_Activate()
LastAddr = ActiveCell.Address
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("A1:Z100")) Is Nothing Then
'do something
If Not LastAddr = "" Then
If Not LastAddr = Target.Address Then
Range(LastAddr).Value = Target.Value
LastAddr = Target.Address
End If
ElseIf LastAddr = "" Then
LastAddr = Target.Address
End If
End If
End Sub

Gruss
Dirk aus Dubai
Anzeige
AW: Zellenwert mit Mausklick überHallo,tragen
05.08.2010 14:48:08
Peter
Hallo Dirk,
schönen Dank für Dein Makro,
ich werde es mal einfügen.
Gruß Peter
AW: Zellenwert mit Mausklick überHallo,tragen
05.08.2010 14:50:57
Dirk
Hallo Nochmal,
Hier noch mit Abfrage, damit Du auch Zellen wechseln kannst ohne die Daten zu Uebernehmen.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim UQuerry As String
If Not Intersect(Target, Range("A1:Z100")) Is Nothing Then
'do something
If Not LastAddr = "" Then
If Not LastAddr = Target.Address Then
UQuerry = MsgBox("Wert der aktiven Zelle nach Zelle " & LastAddr & " uebernehmen?",  _
vbYesNo)
If UQuerry = vbYes Then
Range(LastAddr).Value = Target.Value
End If
LastAddr = Target.Address
End If
ElseIf LastAddr = "" Then
LastAddr = Target.Address
End If
End If
End Sub
Gruss
Dirk aus Dubai
Anzeige
Ja, prinzipiell schon, aber natürlich nur...
05.08.2010 14:28:38
Luc:-?
…mit VBA-Ereignisprozeduren, Peter!
Zuerst musst du in _SelectionChange die ausgewählte Zelle (Target) in einer Globalvariablen (hier auch prozedurinterne Static-Variable möglich) merken und dann bei der nächsten Auswahl den Wert des neuen Target in das alte übertragen. Das setzt aber eine ziemliche Klickdisziplin voraus, weshalb ich das nicht empfehle. Verwende zum Wertübertragen lieber Doppel- oder besser Rechtsklick. Dabei dann aber Cancel = True setzen, damit die Standardfktionalität ausgeschaltet wird. In beiden Prozeduren ist es sehr sinnvoll, die infrage kommenden Bereiche mit If Not Intersect(Target, …) Is Nothing Then abzugrenzen. Für … steht dann der Bereich. sind es mehrere getrennte, musst du dafür dann Union(bereich1, bereich2, …, bereichN) verwenden.
Gruß Luc :-?
Anzeige
AW: Ja, prinzipiell schon, aber natürlich nur...
05.08.2010 14:45:00
Peter
Hallo Luc,
erstmal vielen Dank für Deine Mühe.
Ich werde Deine Vorschläge ausprobieren.
Gruß Peter
AW: Ja, prinzipiell schon, aber natürlich nur...
05.08.2010 15:37:34
Andii
hallo Peter,
Const x_min As Long = 6
Const x_max As Long = 11
Const y_min As Long = 5
Const y_max As Long = 10
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call Start
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim x, y As Long
x = ActiveCell.Row
y = ActiveCell.Column
If x >= x_min And x = y_min And y 

Function Start()
UebernehmeWertundFormat
End Function Function UebernehmeWertundFormat()
Dim sh1 As Object
Dim x, y As Long
Set sh1 = ThisWorkbook.Sheets(1)
x = ActiveCell.Row
y = ActiveCell.Column
If x >= x_min And x If y >= y_min And y sh1.Cells(x, y) = ThisWorkbook.Sheets(2).Cells(1, 1)
sh1.Cells(x, y).Interior.ColorIndex = CLng(ThisWorkbook.Sheets(2).Cells(1, 2))
sh1.Cells(x + 1, y).Select
End If
End If
Set sh1 = Nothing
End Function
https://www.herber.de/bbs/user/70922.zip
Gruß Andi
Anzeige
Du hast da was NICHT beachtet, was ich...
05.08.2010 17:09:29
Luc:-?
…aber erwähnt hatte, Andi…!
So hätte Peter dann ein Problem!
Gruß Luc :-?
AW: Du hast da was NICHT beachtet, was ich...
09.08.2010 07:39:35
Peter
Hallo Luc,
das war eine 1a Punktlandung von Dir.
Das ist ganz genau das was ich mir vorgestellt habe.
Vielen herzlichen Dank für Deine kompetente Hilfe.
Auch möchte ich mich noch einmal bei allen anderen bedanken, die sich
meines Problems angenommen habe.
LG Peter
Anzeige
Bitte, gern geschehen! Gruß owT
10.08.2010 16:41:22
Luc:-?
:-?
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zellenwert mit Mausklick übertragen in Excel


Schritt-für-Schritt-Anleitung

Um den Wert einer Zelle mit einem Mausklick in Excel zu übertragen, kannst Du die folgenden Schritte ausführen:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder öffne eine bestehende.

  2. Drücke ALT + F11 um den VBA-Editor zu öffnen.

  3. Füge ein neues Modul hinzu:

    • Klicke auf Einfügen > Modul.
  4. Füge den folgenden Code ein:

    Public LastAddr As String
    
    Private Sub Worksheet_Activate()
       LastAddr = ActiveCell.Address
    End Sub
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
       If Not Intersect(Target, Range("A1:Z100")) Is Nothing Then
           If Not LastAddr = "" Then
               If Not LastAddr = Target.Address Then
                   Range(LastAddr).Value = Target.Value
                   LastAddr = Target.Address
               End If
           ElseIf LastAddr = "" Then
               LastAddr = Target.Address
           End If
       End If
    End Sub
  5. Schließe den VBA-Editor und kehre zu Excel zurück.

  6. Teste das Makro, indem Du auf verschiedene Zellen klickst. Die Werte sollten entsprechend übertragen werden.


Häufige Fehler und Lösungen

  • Fehler: Es wird kein Wert übertragen.

    • Lösung: Stelle sicher, dass der Bereich in Intersect korrekt definiert ist. Überprüfe auch, ob der VBA-Code korrekt eingefügt wurde.
  • Fehler: Makro wird nicht ausgeführt.

    • Lösung: Überprüfe, ob die Makros in den Excel-Einstellungen aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen.

Alternative Methoden

Wenn Du eine andere Methode zur Übertragung von Zellenwerten in Excel ausprobieren möchtest, kannst Du anstelle von Mausklicks auch Doppelklicks verwenden. Hierbei wird die Worksheet_BeforeDoubleClick-Ereignisprozedur genutzt. Ein Beispiel sieht so aus:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    ' Hier könntest Du den Wert übernehmen
    Call Start
    Cancel = True ' Verhindert die Standard-Doppelklick-Aktion
End Sub

Praktische Beispiele

Beispiel 1: Übertragung mit Bestätigung

Verwende den folgenden Modifizierten Code, um eine Bestätigung vor der Wertübertragung anzuzeigen:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim UQuerry As String
    If Not Intersect(Target, Range("A1:Z100")) Is Nothing Then
        If Not LastAddr = "" Then
            If Not LastAddr = Target.Address Then
                UQuerry = MsgBox("Wert der aktiven Zelle nach Zelle " & LastAddr & " übernehmen?", vbYesNo)
                If UQuerry = vbYes Then
                    Range(LastAddr).Value = Target.Value
                End If
                LastAddr = Target.Address
            End If
        ElseIf LastAddr = "" Then
            LastAddr = Target.Address
        End If
    End If
End Sub

Beispiel 2: Farbübernahme

Falls Du die Zellenfarbe mitübertragen möchtest, kannst Du den folgenden Code verwenden, um sowohl den Wert als auch die Farbe zu übernehmen.

Range(LastAddr).Interior.ColorIndex = Target.Interior.ColorIndex

Tipps für Profis

  • Verwende Globalvariablen, um den Status von Zellen über verschiedene Ereignisse hinweg zu verfolgen.
  • Optimiere Dein Makro, indem Du nur die relevanten Zellbereiche für die Übertragung definierst. Das verbessert die Performance und vermeidet unnötige Berechnungen.
  • Teste Deine VBA-Codes gründlich in einer Kopie Deiner Arbeitsmappe, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Frage
Kann ich dieses Makro auch in Excel Online verwenden?
Antwort: Nein, VBA-Makros sind nur in der Desktop-Version von Excel verfügbar.

2. Frage
Wie kann ich das Makro anpassen, um Werte aus einem anderen Arbeitsblatt zu übernehmen?
Antwort: Du kannst den Code anpassen, indem Du auf die Zellen eines anderen Arbeitsblatts zugreifst, z.B. ThisWorkbook.Sheets("Sheetname").Range("A1").Value.

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