Inhalt der Zelle einer Variablen zuweisen

magellan45

Mitglied
Guten Tag, ich bin ein VBA-Anfänger und habe folgendes Problem:
Funktion "Copy und Paste" aus einem beliebigen Bereich in ein beliebiges Bereich zu kopieren, solange bis dieser Vorgang mit der "Esc" Taste abgebrochen wird. Nun habe ich ein Problem mit der Zuweisung der Variablen.
Leider weiss ich noch nicht wie ich hier mein VBA-Skript hinzufügen soll.
Kann mir dies jemand zeigen?
 

Yaslaw

alter Rempler
Moderator
Genau, lass mal dein Code sehen. Dann können wir besser sehen, was du mit C&P im VBA machst.

[Code=VB]dein VBA-Code[/code]
 

magellan45

Mitglied
Visual Basic:
Dim InhVar As String
Dim AVariable As String
Dim BVariable As String
Dim zielVariable As String
Dim ABVariable As String
'Aufgabe:Beim Klick auf eine Zelle im Bereich A1 bis B43 z.B. "A3"
'soll der Inhalt der Zellen A3+B3 nach beliebige Zelle im Bereich I11 bis J33 kopiert werden
'solange bis die "Esc" Taste betätigt wird


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Target.Interior.ColorIndex = 6
If Not Intersect(Target, Range("A1:B43")) Is Nothing Then
    Target = UCase(Target)
    AVariable = Target.Address(0, 0)
    'MsgBox "Du hast gerade die Zelle " & AVariable & " angeklickt"
    'Hier wird die Zellen-Adresse angezeigt
 
InhVar = ActiveSheet.Range("A1").Value
'Hier wird der Inhalt der Zelle A1 angezeigt

  
    MsgBox "Das ist der Inhalt " & InhVar
  
    Target.Interior.ColorIndex = 2
End If
If Not Intersect(Target, Range("I11:J33")) Is Nothing Then
    Target = UCase(Target)
    zielVariable = Target.Address(0, 0)
    ABVariable = AVariable & BVariable
  
    'Target.Interior.ColorIndex = 2
End If
End Sub
 
Zuletzt bearbeitet von einem Moderator:

Yaslaw

alter Rempler
Moderator
Aha, wir reden also von Excel. Schön. Und was ist jetzt das Problem.
Nun habe ich ein Problem mit der Zuweisung der Variablen.
Diese Aussage ist etwa so aussagekräftig wie "Ich habe Probleme mit meinen Schuhen", Das reicht von "Sie wurden geklaut" über "sie sind zu klein" bis zu "Der Schuhbändel ist kaputt"

Kommt eine Fehlermeldung? Wenn ja, bitte diese hier posten und schreiben wo im Code das auftaucht.
 

magellan45

Mitglied
Mein Problem ist, in der Zeile 19 d.h. der Inhalt der "inhVar" wechselt immer wieder je nach Klick aufweine Zelle in angegebene Bereich, In diesem Beispiel ist es "A1" beim nächsten Klick z.B. "B14" usw. Oben habe ich die Aufgabe kommentiert. Einfacher gesagt, Klick auf eine Zelle im Bereich A1 bis B43, kopiere den Inhalt von Ax und Bx nach Klick auf eine Zelle im Bereich I11 bis J33.
 

Yaslaw

alter Rempler
Moderator
öhm. Natürlcih gibt er dir dort immer den Inhalt von A1 aus. Du liest ja uch den Wert von A1 explizit aus
Visual Basic:
InhVar = ActiveSheet.Range("A1").Value
'Hier wird der Inhalt der Zelle A1 angezeigt

ich verstehe noch nicht. Soll dort der Inhalt des angeklickten Feldes kommen? In der beschreibung schreibst du was, es soll weitergehen bis man Esc. drückt.Bedeutet das, dassein Feld nach dem Anderen bearbeitet werden soll? Wenn ja, zuerst horizontal oder vertikal?

Nachher irgnedwo in einen Bereich kopieren. Soll das ausgewürfelt werden, wo in demn Bereich? Oder gibt es da eine Logik?
 

Yaslaw

alter Rempler
Moderator
Ich habe mir jetzt mal unabhängig von deiner Lösung un den Problemen einfach mal die Aufgabenstellung angeschaut und umgesetzt.
Visual Basic:
'Aufgabe:Beim Klick auf eine Zelle im Bereich A1 bis B43 z.B. "A3"
'soll der Inhalt der Zellen A3+B3 nach beliebige Zelle im Bereich I11 bis J33 kopiert werden
'solange bis die "Esc" Taste betätigt wird

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rowDelta As Integer
   
    'Nur reagieren wenn wir im Range A1-B43 sind. Ansonste hier die Methode verlassen
    If Target.Row > 43 Or Target.Column > 2 Then Exit Sub

    'Diese Schleife ausführen, bis man Cancel klickt oder Exc drückt.
    Do While MsgBox("Kopiere den Wert", vbQuestion + vbOKCancel) = vbOK
        'Zur Auswahl: 23 Zeilen
        'Versatz zu I11 auswürfeln
        rowDelta = Int(Rnd * 23)
        'Ausgewürfeltes Feld abfüllen. Als Qelle den Wert auf der ausgewählten Zeile
        Range("I11").Offset(rowDelta) = Cells(Target.Row, 1)
        Range("J11").Offset(rowDelta) = Cells(Target.Row, 2)
    Loop
   
End Sub
 

magellan45

Mitglied
Ja, der Inhalt des angeklickten Feldes soll kommen. Ich habe die Variable inhVar falsch definiert. Die "AVariable" ist die Adresse der angeklickten Zelle, inhVar ist der Inhalt der AVariablen. Wie soll ich die "inhVar " definieren, wenn der (Range(xy) bei jedem Klick wechselt?
Die "Do" Anweisung habe ich hier noch nicht implementiert. Das mache ich später.
 

Yaslaw

alter Rempler
Moderator
Schwer zu sagen. Ich habe deine Konstrukt-Idee noch nicht verstanden und der Variablennamen inhVar sagt mir nicht, was drin sein soll. Deine Code-Komentare sind nicht aussagekräftig.

Aber schau doch mal meine Umsetzung an.