PDA

Vollständige Version anzeigen : Cursor in aktive Spalte?


StyroBor
28.08.2001, 09:13
Hallo,
ich bin noch recht neu mit dem Thema VBA, deshab hat man mir diese Adresse empfolen.
Nun zu meinem Problem:

Das Programm sucht die letzte freie Spalte aus und markiert diese grün.
Das funktioniet alles ohne Probleme!
Aber ich möchte noch das gleich der Cursor in dieser markierten grüne Spalte ist, damit ich gleich einen Wert reinschreiben kann.

Wäre Super wenn ic da eine Lösung bekommen könne.

Vielen Dank
Gruß
Stephan

<p align="left"><font size="1" face="Century Gothic"><font color="#000000">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurde in diesem Beitrag ein Link entfernt.</font>

Stema
28.08.2001, 12:04
Hallo Stephan,

gib uns mal Deinen VBA-Code zum Suchen der letzten (oder 1.?) freien Spalte.

Klaus-Dieter
28.08.2001, 20:22
Hallo Stefan,

letzte freie Spalte? Oder erste freie Spalte?
Welche Zelle möchtest Du dort selektieren?

StyroBor
28.08.2001, 20:36
Also:
Ich habe eine Tabelle1 in der Spalte A1 = "Test" in Spalte A2 = "tes2t", Splate A3 ist LEER!
Mein Programm überprüft alle Spalten bis dahin wo eine leer ist, im diesem Beispiel also Spalte A3.
Mein Progi geht nun in diese Tabelle und markiert diese leere Splate A3 grün.
Soweit so gut!
Nun muß ich aber mit der Maus auf diese grünmarkierte Spalte um so einen Wert oder einen Text hinein zu schreiben.
Ich hätte gern das nun der Cursor gleich in diesen Feld Blink so das ich gleich einen Wert oder Text eintragen kann.

Vielen dank!
Gruß
Stehan

[Dieser Beitrag wurde von StyroBor am 28.08.2001 editiert.]

jinx
28.08.2001, 22:31
<font size="2" face="Century Gothic">Moin Stephan,

eine Bitte an Dich: Als Spalten bezeichnet man die durch die Buchstaben A..IV gekennzeichneten vertikalen Bereiche, als Zeilen halt die von 1..65536 bezeichneten horizontalen Bereiche.
Zellen werden durch die Bezeichnung A1, Z456 genau in der Lage auf dem Tabellenblatt gekennzeichnet.
Du suchst gem. Deinen Vorgaben also die erste freie Zelle in Spalte A....

Es wäre nett, wenn Du Deinen genutzten Code posten würdest, dann könnte man Dir den Hinweis auf Ergänzungen geben.
Ein Beispiel, bezogen auf Deine Angaben:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Public Sub</span> Inhalt&Uuml;berpr&uuml;fen()
<span class="REM">'Cursor muss zu Beginn in der entsprechenden Zelle</span>
<span class="REM">'zur &Uuml;berpr&uuml;fung postiert sein</span>
<span class="TOKEN">Do</span> <span class="TOKEN">While</span> ActiveCell &lt;&gt; &quot;&quot;
ActiveCell.Offset(1, 0).Select
<span class="TOKEN">Loop</span>
ActiveCell.Select
<span class="TOKEN">With</span> Selection.Interior
.ColorIndex = 50
.Pattern = xlSolid
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>
Code eingefügt mit dem MOF Code Converter (http://www.ms-office-forum.net/forum/codeconverter.php)


Die erste freie Zelle wird grün hinterlegt und Cursor steht dort – allerdings wird die Hintergrundfarbe nicht von allein wieder verschwinden ;) - Abhilfe könnte dort die Anwendung einer MsgBox bringen, die den abgefragten Wert in die entsprechende Zelle einträgt....

<font color="#808080" size="3" face="Arial Black">cu
jinx</font>

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten und die Signatur angepasst...</font>

StyroBor
29.08.2001, 06:50
Nun hier mein Code:

(Bitte nicht auslachen ;)

Private Sub CommandButton1_Click()
Sheets("tabelle1").Activate
Range("a1").Activate
Range("a1").Select

10:
ac = ActiveCell
If ac = "" Then GoTo zelleleer
ActiveCell.Offset(0, 1).Select
GoTo 10
zelleleer:
ActiveCell.Select
With Selection.Interior
.ColorIndex = 50
.Pattern = xlSolid
End With
Unload UserForm1
End Sub

Das Programm(chen) funktioniert auch, die erste leere Zelle wird grün mrkiert, jedochder Cursor fehlt.
Erst bei Mouseclick kommt dann der Cursor.

Gruß
Stephan

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

Stema
29.08.2001, 10:45
Hallo Stephan,

das Beispiel von Jinx übernimmt genau die gleiche Funktionalität (allerdings eleganter programmiert ;)).

Public Sub InhaltÜberprüfen()
'Cursor muss zu Beginn in der entsprechenden Zelle
'zur Überprüfung postiert sein. Das übernehmen die folgenden 2 Zeilen.
Sheets("tabelle1").Activate
Range("a1").Activate
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Select
With Selection.Interior
.ColorIndex = 50
.Pattern = xlSolid
End With
Unload UserForm1
End Sub

So sollte das eigentlich für Dich passen. Du kannst diese Funktion aber auch variabel gestalten, indem Du den Tabellennamen und die Zelle der Funktion mitgibst:

Sub DeineAktion()
call InhaltÜberprüfen "Tabelle1", "A1"
End Sub

Public Function InhaltÜberprüfen(Tabelle as String, Zelle as String)
'Cursor muss zu Beginn in der entsprechenden Zelle
'zur Überprüfung postiert sein. Das übernehmen die folgenden 2 Zeilen.
Sheets(Tabelle).Activate
Range(Zelle).Activate
Do While ActiveCell <> ""
ActiveCell.Offset(1, 0).Select
Loop
ActiveCell.Select
With Selection.Interior
.ColorIndex = 50
.Pattern = xlSolid
End With
Unload UserForm1
End Sub


<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

Klaus-Dieter
29.08.2001, 16:08
Hallo Stefan,

das geht noch kürzer:

<div><link href="http://www.ms-office-forum.net/forum/externals/codeconv.css" rel="stylesheet"><pre><span class="TOKEN">Sub</span> markieren()
LetzteSpalte = Rows(2).End(xlToRight).Column
Cells(1, LetzteSpalte + 1).Activate
<span class="TOKEN">With</span> Selection.Interior
.ColorIndex = 50
.Pattern = xlSolid
<span class="TOKEN">End</span> <span class="TOKEN">With</span>
<span class="TOKEN">End</span> <span class="TOKEN">Sub</span></pre></div>

Wobei mir nicht klar ist, weshalb die Zelle eingefärbt werden soll. Wenn das nicht erwünscht ist, kannst Du den Bereich zwischen With und End With löschen. (Einschließlich With und End With, versteht sich.)
Du kannst Dir ja mal meine <a href="http://home.tiscali.de/excelseite/Index.html" target="_blank">Internetseite</a> zum Thema Excel-VBA für Einsteiger ansehen.

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag der Code für dieses Forum und die Signatur angepasst.<font>