Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
864to868
864to868
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

kein

kein
06.05.2007 14:24:41
Michael
Hallo zusammen,
ich möchte ein Makro schreiben und bräuchte mal die VBA-Syntax für folgende in deutsch formulierte Anweisungen. Ich wähle dabei mit Absicht den umständlichen Weg über Select , copy und einfügen, weil sich das für mich als Anfänger besser nachvollziehen und konfigurieren lässt.
-selektiere in Tabelle 1 in Spalte A alle Zellen größer als 0 und die jeweils daneben liegende Zelle in Spalte B
-kopiere die Auswahl
-füge die Werte (also nicht die Zelle in ihrer Gesamtheit) der getroffenen Auswahl in Tabelle2 in die Spalten A und B, immer in die nächste freie Zeile ein.
Ich hoffe, dass einer von Euch Wissenschaftlern eine Lösung für mich hat und danke im Voraus.
MfG Susison

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: kein
06.05.2007 14:42:00
Peter
Hallo Susison,
versuch es einmal so: in ein allgemeine Modul kopieren


Option Explicit
Public Sub Kopieren()
Dim lZeile   As Long         ' For/Next Zeilen-Index
Dim WkSh     As Worksheet    ' das Tabellenblatt "Tabelle2"
Dim lLetzte  As Long         ' die letzte belegte Zeile im Blatt "Tabelle2"
   Application.ScreenUpdating = False ' Bildschirm-Update unterdrücken
   Set WkSh = Worksheets("Tabelle2")  ' Tabelle2 als Ausgabe festlegen
   lLetzte = IIf(WkSh.Range("A65536") <> "", 65536, _
      WkSh.Range("A65536").End(xlUp).Row) ' letzte belegte Zeile finden
   With Worksheets("Tabelle1") ' Tabelle1 ist die Eingabe
      For lZeile = 1 To .Range("A65536").End(xlUp).Row ' Zeile 1 bis Ende
         If .Range("A" & lZeile).Value <> "" Then  ' ist die Zelle gefüllt?
            If IsNumeric(.Range("A" & lZeile).Value) And _
               .Range("A" & lZeile).Value > 0 Then ' ist die Zelle nummerisch + > 0 ?
               lLetzte = lLetzte + 1  ' letzte belegte Zeile um 1 hochrechnen
               .Range("A" & lZeile & ":B" & lZeile).Copy Destination:= _
                  WkSh.Range("A" & lLetzte) ' Zellen A + B kopieren
            End If
         End If
      Next lZeile  ' nächste Zeile holen
   End With
   Application.ScreenUpdating = False  ' Bildschirm-Update wieder freigeben
End Sub 


Gruß Peter

Anzeige
AW: kein
06.05.2007 23:08:14
Michael
Hallo Peter,
erst mal vielen Dank. Das Makro funktioniert grundsätzlich. Allerdings werden die ganzen Zellen kopiert
(mit Linien usw), nicht nur deren Inhalt.
Kann man das Makro eigentlich genau in der Reihenfolge formulieren, wie ich das in deutsch getan habe?

AW: kein
07.05.2007 15:24:00
Peter
Hallo Michael,
wenn es irgendwie geht (und das tut es zu 99 %) arbeite ohne Select.
Aber versuch das beigefügte Makro:


Public Sub Kopieren()
Dim lZeile   As Long         ' For/Next Zeilen-Index
Dim WkSh     As Worksheet    ' das Tabellenblatt "Tabelle2"
Dim lLetzte  As Long         ' die letzte belegte Zeile im Blatt "Tabelle2"
   Application.ScreenUpdating = False ' Bildschirm-Update unterdrücken
   Set WkSh = Worksheets("Tabelle2")  ' Tabelle2 als Ausgabe festlegen
   lLetzte = IIf(WkSh.Range("A65536") <> "", 65536, _
      WkSh.Range("A65536").End(xlUp).Row) ' letzte belegte Zeile finden
   With Worksheets("Tabelle1") ' Tabelle1 ist die Eingabe
      For lZeile = 1 To .Range("A65536").End(xlUp).Row ' Zeile 1 bis Ende
         If .Range("A" & lZeile).Value <> "" Then  ' ist die Zelle gefüllt?
            If IsNumeric(.Range("A" & lZeile).Value) And _
               .Range("A" & lZeile).Value > 0 Then ' ist die Zelle nummerisch + > 0 ?
               lLetzte = lLetzte + 1  ' letzte belegte Zeile um 1 hochrechnen
               .Range("A" & lZeile & ":B" & lZeile).Copy
                  WkSh.Range("A" & lLetzte).PasteSpecial Paste:=xlPasteValues
            End If
         End If
      Next lZeile  ' nächste Zeile holen
   End With
   Application.ScreenUpdating = False  ' Bildschirm-Update wieder freigeben
End Sub 


Gruß Peter

Anzeige
AW: kein
07.05.2007 23:24:00
Michael
Hey Peter,
klappt super. dankeschön.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige