im Range spalte und zeile als Variable

Bild

Betrifft: im Range spalte und zeile als Variable
von: Thomas
Geschrieben am: 14.09.2015 20:10:48

Hallo excelfreunde,
ich habe von matthias die macro bekommen es funktioniert auch gut, nur leider
ist meine Spaltenanzahl und Zeilenanzahl Variable. So das ich den Spaltenbuchstabe anhand der Überschrift suchen muss.
Mit
Dim quellSpalte As Variant
Dim zielSpalte As Variant
Application.ScreenUpdating = False
Set quellSpalte = Rows(10).Find("Datum h", LookAt:=xlWhole)
Set zielSpalte = Rows(10).Find("Datum Z", LookAt:=xlWhole)
finde ich zwar die Spaltennummern aber wenn ich das "G" bzw B mit quellSpalte bzw. zielSpalte ersetze geht es nicht.
kann mir jemand zeigen wie ich es machen muss?
liebe grüsse thomas

Sub wenn_wert_vorhanden_dann_kopieren()
' wenn in spalte g ein wert vorhanden ist wird er nach spalte b kopiert ausschneiden einfügen
Dim Myrow
 For Myrow = 10 To 20000 'Ende(hier Zeile20) anpassen oder Einlesen!
  If Range("G" & Myrow).Value <> "" Then Range("G" & Myrow).Cut Destination:=Range("B" & Myrow)
 Next
End Sub

Bild

Betrifft: AW: im Range spalte und zeile als Variable
von: Nepumuk
Geschrieben am: 14.09.2015 20:32:15
Hallo,
so:
Cells(Zeilennummer, Spaltennummer)
Gruß
Nepumuk

Bild

Betrifft: AW: im Range spalte und zeile als Variable
von: Thomas
Geschrieben am: 14.09.2015 20:55:29
Hallo Nepumuk
hab vielen dank für deine unterstützung
ich habe es mal versucht aber es kommt fehler typenunverträglichkeit was bedeutet dies?
Ich hab bestimmt was falsch gemacht.
schaust du mal bitte?
liebe grüsse thomas

Sub wenn_wert_vorhanden_dann_kopieren()
' wenn in spalte g ein wert vorhanden ist wird er nach spalte b kopiert ausschneiden einfügen
Dim quellSpalte As Variant
Dim zielSpalte As Variant
Application.ScreenUpdating = False
   Set quellSpalte = Rows(10).Find("Datum h", LookAt:=xlWhole)
 Set zielSpalte = Rows(10).Find("Datum Z", LookAt:=xlWhole)
 
 'Cells(Zeilennummer, Spaltennummer)
 
Dim Myrow
 For Myrow = 10 To 20000 'Ende(hier Zeile20) anpassen oder Einlesen!
  If Cells(Myrow, quellSpalte).Value <> "" Then Cells(Myrow, quellSpalte).Cut Destination:= _
Cells(Myrow, quellSpalte)
 Next
End Sub


Bild

Betrifft: AW: im Range spalte und zeile als Variable
von: Gerd L
Geschrieben am: 14.09.2015 21:05:18
Hallo Thomas,
ohne Plausi-Prüfungen u. im Wesentlichen nur eingesetzt.

Sub wenn_wert_vorhanden_dann_versetzen()
 
 ' wenn in quellspalte ein wert vorhanden ist, wird ausgeschnitten u. in zielspalte eingefügt
 Dim Myrow As Long, quellspalte As Long, zielspalte As Long
 
 quellspalte = Rows(10).Find("Datum h", LookAt:=xlWhole).Column
 zielspalte = Rows(10).Find("Datum Z", LookAt:=xlWhole).Column
 
 
 
  For Myrow = 10 To 20000 'Ende(hier Zeile20) anpassen oder Einlesen!
   If Cells(Myrow, quellspalte).Value <> "" Then Cells(Myrow, quellspalte).Cut Destination:= _
Cells(Myrow, zielspalte)
  Next
 Application.CutCopyMode = False
 
 End Sub
Gruß Gerd

Bild

Betrifft: super es klappt
von: Thomas
Geschrieben am: 14.09.2015 21:23:08
Hallo Gerd,
es klappt super ich kapiere es nie. vielen vielen dank.
geht dies auch mit den Zeilen?
liebe grüsse thomas

Bild

Betrifft: AW: im Range spalte und zeile als Variable
von: Gerd L
Geschrieben am: 14.09.2015 22:53:19
Hallo Thomas,
ja. Erkläre bitte, was du erreichen möchtest.
Gruß GErd

Bild

Betrifft: AW: im Range spalte und zeile als Variable
von: Thomas
Geschrieben am: 14.09.2015 23:25:51
Hallo Gerd,
wenn das ginge wäre dies sicherer für den Fall das die Überschriften doch mal in einer anderen Zeile als 10 landen und ich müsste wirklich nur den Bereich abklappern der mit Daten gefüllt ist. So muss ich ein riesen Bereich wählen um nicht Gefahr zu laufen das er nicht ausreicht. Dann wird dieses Makro sehr langsam. Ursprünglich wollte ich die daten mit dem Makro unten markieren ausschneiden und dann in die Spalte Datum z einfügen. dabei dürfen nur dann die zellen überschrieben werden wenn in der Quellspalte auch daten sind. Aber leider geht es wahrscheinlich nicht mit nichtzusammenhängenden datenbereichen ohne schleife. Den kompletten bereich kann ich nicht ausschneiden einfügen denn dann werden die Daten in der Zielspalte teilweise mit leer überschrieben. In diesen Fall müssen aber die Daten in der Zielspalte stehen bleiben.
hab recht vielen dank für dein interesse an mein problem.
liebe grüsse thomas

Sub gefüllte_markieren_()
With ActiveSheet.Columns(1)
.ColumnDifferences(.Cells(Rows.Count, 1)).Select  'Cut  ' die eins UND ROWS muss mit varible  _
ersetzt werden.
End With
End 

Sub    

Bild

Betrifft: konnte dies problem lösen owt
von: Thomas
Geschrieben am: 16.09.2015 21:19:17
.

 Bild

Beiträge aus den Excel-Beispielen zum Thema "im Range spalte und zeile als Variable"