Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Weshalb wird die nächste freie Spalte nicht benutz

Betrifft: Weshalb wird die nächste freie Spalte nicht benutz von: Maike Bromann
Geschrieben am: 18.09.2014 19:33:44

Liebe Forenmitglieder,

ermutigt von der mir geleisteten großartigen Hilfe möchte ich ein VBA Problem schildern, das ich mit meinen Makro Kenntnissen bisher nicht lösen konnte.

In einer Tabelle seien ab Zeile 6 die Spalten 1-7 mit Werten gefüllt, es können zukünftig aber noch mehr Spalten mit Werten dazukommen. Diese würde ich aber auf einem anderen Blatt speichern, sodass meine Prozedur möglichst flexibel bleiben sollte, also mit variablen Zellbezügen.

Anbei meine bisherige Prozedur:

Sub Auswertung_Zbereiche()

Dim ObjCells As Object

Dim i As Integer
Dim i2 As Integer
Dim k As Integer

i2 = ActiveSheet.UsedRange.Rows.Count

k = Cells(6, Columns.Count).End(xlToLeft).Column + 1
MsgBox "Erste freie Zelle in Zeile 6 ist in Spalte: " & k

For i = 1 To i2
Cells(i, 1).Select
Set ObjCells = ActiveCell
Select Case ObjCells.Value
Case 1 To 5
Cells(i, k) = 1
Case 6 To 9
Cells(i, k) = 2
Case 10 To 13
Cells(i, k) = 3
Case 14 To 16
Cells(i, k) = 4
Case 17 To 18
Cells(i, k) = 5
Case 19 To 20
Cells(i, k) = 6
Case 21 To 100
Cells(i, k) = 7

End Select

Wie kann man k dazu veranlassen die wirklich nächste freie Spalte, die die MessageBox auch ausgibt, für die Rangfolgeauswertung zu benutzen.

  

Betrifft: AW: Weshalb wird die nächste freie Spalte nicht benutz von: Rudi Maintaire
Geschrieben am: 18.09.2014 19:53:13

Hallo,
ich sehe keinen Grund dafür.

Das Select ist überflüssig.
Set ObjCells = Cells(i, 1)

Eigentlich kannst du direkt
Select Case Cells(i,1)
schreiben und auf die Objektvariable verzichten.

Gruß
Rudi


  

Betrifft: welche wird denn benutzt? owT von: Rudi Maintaire
Geschrieben am: 18.09.2014 19:54:00




  

Betrifft: AW: welche wird denn benutzt? owT von: Gerold
Geschrieben am: 18.09.2014 20:18:08

Hallo Maike

Tausche mal folgende Zeilen


i2 = ActiveSheet.UsedRange.Rows.Count

durch

i2 = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 'Maximum Zeile ermitteln

ersetzen.


Gruß Gerold

Rückmeldung wäre nett.


  

Betrifft: AW: welche wird denn benutzt? owT von: Maike Bromann
Geschrieben am: 18.09.2014 20:54:18

Hallo Gerold,

die nächste Zeile waren nicht das Problem, es klappte mit der nächst freien Spalte nicht.

https://www.herber.de/bbs/user/92717.xlsm ist der Mappenaufbau, aber der Code funktioniert hier überhaupt nicht mehr. Rudi Maintere ist schon involviert, aber eventuell findest du ja eine andere Lösung.

Vielen Dank
Lg Maike


  

Betrifft: AW: Weshalb wird die nächste freie Spalte nicht benutz von: Maike Bromann
Geschrieben am: 18.09.2014 20:17:17

Hallo Rudi,

die Spalten 1 bis 3 sind Kalenderdaten, die Werte gehen von Spalte 4 bis 11, und die Prozedur fängt in Spalte 8 an Werte zu überschreiben.


  

Betrifft: lad mal die Mappe hoch owT von: Rudi Maintaire
Geschrieben am: 18.09.2014 20:25:31




  

Betrifft: AW: lad mal die Mappe hoch owT von: Maike Bromann
Geschrieben am: 18.09.2014 20:45:45

https://www.herber.de/bbs/user/92717.xlsm

das ist die Mappe, allerdings werden in diesem Muster gar keine Werte mehr berechnet und ich habe nur den Code entsprechend zu deinem Hinweis (Selet) geändert.

Vielen Dank

LG Maike


  

Betrifft: AW: lad mal die Mappe hoch owT von: Rudi Maintaire
Geschrieben am: 18.09.2014 20:55:41

Hallo,
Code ist korrekt.
Allerdings werden 101 und 102 im Select Case gar nicht berücksichtigt. Es wird also nichts in die Tabelle geschrieben.


Gruß
Rudi


  

Betrifft: AW: lad mal die Mappe hoch owT von: Maike Bromann
Geschrieben am: 18.09.2014 21:09:16

Ich habe i gleich 4 gesetzt, aber da lief auch nichts!

LG Maike


  

Betrifft: AW: lad mal die Mappe hoch owT von: Rudi Maintaire
Geschrieben am: 18.09.2014 21:29:50

Hallo,
Ich habe i gleich 4 gesetzt
washat das denn damit zu tun?
Schreib mal in A anstatt 101, 102 irgendwas zwischen 1 und 100.


Gruß
Rudi


  

Betrifft: AW: lad mal die Mappe hoch owT von: Maike Bromann
Geschrieben am: 18.09.2014 21:58:48

Hallo Rudi,

du hast recht, die Prozedur läuft reibungsfrei ab.

Aber wie kriege ich es hin, das die Ausgangsergebnisse auch erst in Spalte 4 stehen können?


  

Betrifft: cells(1, 4) ??? owT von: Rudi Maintaire
Geschrieben am: 18.09.2014 22:09:44




  

Betrifft: AW: cells(1, 4) ??? owT von: Maike Bromann
Geschrieben am: 18.09.2014 22:20:18

Hallo Rudi,
cells(1, 4) oder cells(i, 4) bei beiden Ersetzungen werden die Werte nicht berechnet.
In meiner Tabelle stehen jetzt in Spalte D ab Zeile 6 nur noch 7 Zahlen zwischen 1 und 100.

Vielen Dank widerum
LG Maike


  

Betrifft: Bahnhof owT von: Rudi Maintaire
Geschrieben am: 18.09.2014 22:49:10




  

Betrifft: AW: cells(1, 4) ??? owT von: Maike Bromann
Geschrieben am: 18.09.2014 23:15:24

Hallo Rudi,

wenn Spalten vor der Wertezeile in zb, D keine Inhalte haben geht cells(i, 4) nicht, sobald aber in Spalte A oder B oder C etwas steht, wertet die Prozedur Spalte D aus. Ist doch ulkig, oder.

Besten Dank für deine Geduld
Bis morgen vielleicht
LG Maike


  

Betrifft: AW: lad mal die Mappe hoch owT von: Maike Bromann
Geschrieben am: 18.09.2014 22:00:26

Ich meine natürlich die Ausgangswerte und nicht Ausgangsergebnisse.

Vielen Dank
LG Maike


  

Betrifft: AW: lad mal die Mappe hoch owT von: Maike Bromann
Geschrieben am: 18.09.2014 21:01:57

Hallo Rudi,

die Werte sollen ja auch nur aus den Spalten D bis I gebildet werden, war wahrscheinlich im Original von
A bis G, aber ich bin mir unklar darüber, wie der neue Startwert für die Spalte vergeben wird.

Vielen Dank und
LG Maike


 

Beiträge aus den Excel-Beispielen zum Thema "Weshalb wird die nächste freie Spalte nicht benutz"