Microsoft Excel

Herbers Excel/VBA-Archiv

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

variable Zelladresse finden | Herbers Excel-Forum


Betrifft: variable Zelladresse finden von: meixner
Geschrieben am: 18.11.2009 20:47:42

Hallo zusammen,

Ich möchte, dass untere Makro das gefundene Ergebnis (in diesem Fall "RIC Aktie" aus dem Datenblatt 2) nicht ins Datenblatt 1 in C8 einträgt wie das Makro unten anzeigt, sondern: Das Makro soll in Tabellenblatt 1 in Spalte C die lezte mit Text befüllte Zeile suchen und das gefundene Ergebnis in der nächsten leeren Zeile schreiben. Macht das für Euch Sinn? Ich tue mich selber ziemlich schwer damit.

Bsp.: Über die Inputbox wird der RIC (ALVG.DE) im Datenblatt 2 Spalte C gesucht. Dieser kann mehrmals vorkommen. Der gefundene RIC soll nicht ins Datenblatt 1 C8 eingetragen werden (da C8 bereits befüllt mit Text), sondern soll in Spalte C die letzte volle Zeile bzw. Zelle suchen und in der nächsten leeren eintragen. D.h. das Ergebnis wird immer in einer leeren Zelle eingetragen, die das Makro selber rausfinden muß. Ich kann ihr keine feste Zelladdresse vorgeben.

Mein PRoblem ist, das das untere Makro auf einer fixen Zelladressen (C8) aufbaut, diese aber eigentlich variabel sein soll. Die letzte befüllte Zelle soll in der Spalte C1:C100 gesucht werden.

Vielen Dank für die Hilfe.
Dani.

Sub Austausch_1_Bezugsrecht()

'Variablen definieren
Dim strRIC As String, rngSuch As Range
Dim rngF As Range, lngZ As Long, lngErst As Long, lngU As Long

' RIC wird gesucht in AlleBestände_alleFonds in Spalte C; Eingabe von RIC für das erste Bezugsrecht in A35, C8
strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
With Workbooks("Template_alle_Kapitalmaßnahmen in Arbeit.xls")
Set rngSuch = .Worksheets(2).Columns(3)
Set rngF = rngSuch.Find(What:=strRIC, LookAt:=xlPart)
If Not rngF Is Nothing Then
lngErst = rngF.Row
Do
lngZ = rngF.Row
With .Worksheets(1)
.Range("c8") = strRIC
End With
Sheets(5).Range("B5").Value = strRIC

'alle Informationen zu dem jeweilligen RIC (ISIN, NAME, BESTAND) aus dem Datenblatt AlleBestände_alle Fonds werden
'kopiert in und in Datenblatt "KapMaßnahme" eingetragen
With .Worksheets(1)
.Cells(8 + lngU, 3) = strRIC ' c8
.Cells(8 + lngU, 1) = rngF.Offset(0, -2) ' a8
.Cells(8 + lngU, 2) = rngF.Offset(0, -1) ' b8
.Cells(8 + lngU, 4) = rngF.Offset(0, 1) ' d8
.Cells(8 + lngU, 5) = rngF.Offset(0, 2) ' e8
.Cells(8 + lngU, 6) = rngF.Offset(0, 3) ' f8
.Cells(8 + lngU, 17) = rngF.Offset(0, 7) ' n8
.Cells(8 + lngU, 12) = rngF.Offset(0, 5) ' l8
.Cells(8 + lngU, 20) = rngF.Offset(0, 13).FormulaR1C1 ' q8
.Cells(8 + lngU, 18) = rngF.Offset(0, 12).FormulaR1C1 ' q8
End With
lngU = lngU + 1
Set rngF = rngSuch.FindNext(rngF) ' ### korrigiert
Loop While Not rngF Is Nothing And rngF.Row <> lngErst
Else
MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
vbCritical, "Nur Zahlen eingeben!"
End If
End With

  

Betrifft: AW: variable Zelladresse finden von: Oberschlumpf
Geschrieben am: 18.11.2009 23:11:51

Hi Dani

Ersetz mal dein

.Range("c8") = strRIC

durch

.Range("c" & .Cells(Rows.Count, 3).End(xlUp).Row + 1) = strRIC

diese Zeile + 1 verwendet immer die nächste freie Zeile in der angegebenen Spalte (hier 3 = C).

Hilfts?

Wenn nicht, weiß ich leider auch nicht weiter

Ciao
Thorsten


  

Betrifft: AW: variable Zelladresse finden von: meixner
Geschrieben am: 18.11.2009 23:35:39

Hallo Thorsten,

Du bist ein VBA - Genie :-). Klappt einwandfrei
Hab mir ergebnislos das Gehirn zermattert.

Brauche noch einmal kurz deine Hilfe.


Soll ich in den unteren Makrozeilen, dann die 8 ersetzen durch .Range("c" & .Cells(Rows.Count, 3).End(xlUp).Row + 1) = strRIC????

Das Problem ist der Verweis auf Zelle 8 durzieht sich durchs gesamte Makro.

Vielen Grüße
Dani

Cells(8 + lngU, 3) = strRIC ' c8
.Cells(8 + lngU, 1) = rngF.Offset(0, -2) ' a8


  

Betrifft: weiß nich, ob ich noch helfen kann von: Oberschlumpf
Geschrieben am: 18.11.2009 23:56:38

Hi Dani

versteh ich nich ganz

wenn lngU NICHT 0 ist, dann ist
Cells(8 + lngU, 3) = strRIC ' c8
auch nich C8
weil 8 + lngU immer größer als 8 ist (wenn lngU nich 0 is)

das Gleiche gilt auch für

.Cells(8 + lngU, 1) = rngF.Offset(0, -2) ' a8

Und ob du in den unteren Makrozeilen, dann die 8 ersetzen sollst durch die andere Code-Zeile, kann ich so nicht beantworten, weil (angenommen, nächste freie Zeile in C ist 8) ....

...der erste Befehl mit
.Range("c" & .Cells(Rows.Count, 3).End(xlUp).Row + 1) = strRIC
belegt Zelle C9

...der zweite Befehl mit
.Range("c" & .Cells(Rows.Count, 3).End(xlUp).Row + 1) = strRIC
belegt Zelle C10

wenn aber in deinem Code die zweite Wertzuweisung auch erst mal an C9 gehen soll, dann wäre die Verwendung im zweiten Befehl schon falsch.

Ich kenne deinen Code nicht.

Aber bitte poste nich deinen ganzen Code (zumindest nich für mich). Ich bin nicht gut im Code-Korrekturlesen.

Eine Bsp-Datei mit deinem Code, in der deine Frage nachvollziehbar ist, wäre glaube ich viel hilfreicher.

Ciao
Thorsten


  

Betrifft: AW: weiß nich, ob ich noch helfen kann von: meixner
Geschrieben am: 19.11.2009 11:46:29

ja, das Makro ist eigentlich noch viel viel länger, habe nur einen Teil gepostet, weil ich dachte das wäre hilfreich.

Habe mittlerweile schon eine Lsg. von Erich.

Aber trotzdem Danke, denn Du hast mir bereits sehr geholfen!!!!!

Viele Grüße
Dani


  

Betrifft: in nächste freie Zeile schreiben von: Erich G.
Geschrieben am: 19.11.2009 00:41:06

Hi Dani,
da hab ich mich doch ein wenig erinnert...

Jetzt muss es aber etwas anders aussehen. Probier mal

Option Explicit

Sub Austausch_1_Bezugsrecht()
   Dim strRIC As String, rngSuch As Range                         'Variablen deklarieren
   Dim rngF As Range, lngZ As Long, lngErst As Long
   ' RIC wird gesucht in AlleBestände_alleFonds in Spalte C;
   ' Eingabe von RIC für das erste Bezugsrecht in A35, C8
   strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")

   With Workbooks("Template_alle_Kapitalmaßnahmen in Arbeit.xls")
      Set rngSuch = .Worksheets(2).Columns(3)
      Set rngF = rngSuch.Find(What:=strRIC, LookAt:=xlPart)
      If Not rngF Is Nothing Then
         lngErst = rngF.Row
         With .Worksheets(1)
            lngZ = .Cells(.Rows.Count, 3).End(xlUp).Row  'letzte in Sp.C belegte Zeile
            Do
               Sheets(5).Range("B5").Value = strRIC ' Soll das noch so sein?
                     'alle Informationen zu dem jeweilligen RIC (ISIN, NAME, BESTAND)
                     'aus dem Datenblatt AlleBestände_alle Fonds werden
                     'kopiert in und in Datenblatt "KapMaßnahme" eingetragen
               lngZ = lngZ + 1            ' nächste (leere) Zeile
               .Cells(lngZ, 1) = rngF.Offset(0, -2)               ' a
               .Cells(lngZ, 2) = rngF.Offset(0, -1)               ' b
               .Cells(lngZ, 3) = strRIC                           ' C
               .Cells(lngZ, 4) = rngF.Offset(0, 1)                ' d
               .Cells(lngZ, 5) = rngF.Offset(0, 2)                ' e
               .Cells(lngZ, 6) = rngF.Offset(0, 3)                ' f
               .Cells(lngZ, 17) = rngF.Offset(0, 7)               ' Q
               .Cells(lngZ, 12) = rngF.Offset(0, 5)               ' L
               .Cells(lngZ, 20) = rngF.Offset(0, 13).FormulaR1C1  ' T
               .Cells(lngZ, 18) = rngF.Offset(0, 12).FormulaR1C1  ' R
               Set rngF = rngSuch.FindNext(rngF)
            Loop While Not rngF Is Nothing And rngF.Row <> lngErst
         End With
      Else
         MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
            vbCritical, "Nur Zahlen eingeben!"
      End If
   End With
End Sub
Noch ein Tipp:
Wenn du hier im Forum Code postest, kannst du ganz gut dafür sorgen, dass Einrückungen usw. sichtbar bleiben.
Du musst nur vor die erste Codezeile ein <pre> und hinter die letzte ein </pre> schreiben.
Du kannst es einfach ausprobieren - es gibt ja die Vorschau.
Dabei ist wichtig: Wenn du eine pre-Klammer aufmachst, solltest du sie später wieder mit /pre schließen,
jeweils mit den spitzen Klammer drumherum.

Bei diesem Post beispielsweise steht bei mir oben (beim Beginn des Codes) folgender Text, einfach hintereinander:
Probier mal<pre>Option Explicit
Das siehst du auch, wenn du dir im Firefox (oder auch IE oder ...) den Quelltext ansiehst.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: in nächste freie Zeile schreiben von: meixner
Geschrieben am: 19.11.2009 11:44:16

Erich, das ist echt der Hammer. Funktioniert super. Keine einzige Fehlermeldung. Danke! Danke! Danke!

Viele Grüße
Dani


  

Betrifft: Erich, noch eine Frage.... von: meixner
Geschrieben am: 19.11.2009 14:51:13

Hallo Erich,

habe noch eine Frage zu dem Problem:
dabei handelt es sich um das gleiche Problem wie oben. Obiger Code geht wie folgt weiter...Muß den Verweis auf F8 loswerden in For Each Zelle In Range("F8:F40") da wieder letzte volle Zelle benötigt.

Vielen Dank.
dani

Worksheets(1).Range("b35").FormulaR1C1 = Worksheets(4).Range("b3").FormulaR1C1
specialdividend = Application.InputBox("Bitte Betrag der special Dividend oder Capital Return eingeben:", "Dateneingabe:", , , , , , 1)
If specialdividend = False Then Exit Sub

For Each Zelle In Range("F8:F40") (HIER ist VERWEIS WIEDER AUF F8!!!!), aber cells(lngZ, 6) klappt nicht
If Zelle <> "" Then Zelle.Offset(0, 15) = specialdividend
Next Zelle


  

Betrifft: Rückfrage von: Erich G.
Geschrieben am: 19.11.2009 19:04:36

Hi Dani,
deine Frage ist mir nicht klar. Auch die Code-Bruchstücke helfen da nicht weiter.

lngZ wird bisher berechnet als die Nummer der jeweils letzten belegten Zeile in Spalte C.

Jetzt willst du "F8 loswerden in For Each Zelle In Range("F8:F40") da wieder letzte volle Zelle benötigt."
Geht es um die letzte volle Zelle in Spalte F? Deren Zeile kann kleiner als 8 sein,
zwischen 8 und 40 liegen oder auch größer als 40 sein.

Von wo bis wo genau soll die Schleife laufen,
in welche Zeilen soll der Wert von specialdividend geschrieben werden? Bis in Zeile 40?

Soll das Ganze passieren, nachdem die Find-Schleife (suche nach strRIC) komplett abgeschlossen ist?
Oder soll das innerhalb dieser Schleife sein?

Welche Tabellenblätter sind hier eigentlich beteiligt?

Was hat die Zeile

Worksheets(1).Range("b35").FormulaR1C1 = Worksheets(4).Range("b3").FormulaR1C1
mit dem Problem zu tun?

Sinnvoll wäre hier sicher eine Beispielmappe.

Noch eins:
Hast du meine Tipp zur Codedarstellung hier im Forum nicht wahrgenommen?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Rückfrage von: meixner
Geschrieben am: 19.11.2009 21:35:39

Hallo Erich,

unten ein Beispiel mit dem Problem.

1. Durchlauf Makro
mein Problem ist: 1 Durchlauf des Makros funktioniert einwandfrei. Die Infos werden bspw. von range(c8:Y11) eingetragen. c8 ist die erste leere Zeile. Alles richtet sich danach und alle Felder zwischen C8:Y11 werden anhand des Makros befüllt.

2. Durchlauf Makro
Hier werden die Infos in (C12 : Y15) eingetragen. C12 ist die erste leere Zeile. C8:y11 wurden ja schon beim ersten Durchlauf befüllt. Mein Problem ist, das die Spalte F beim zweiten Durchlauf nicht von F12: F15 befüllt wird, sondern F8:F15. Die Infos aus dem 1. Durchlauf des Makros (F8:F11) werden durch den zweiten Durchlauf überschrieben in der Spalte F (F8:F15). Die Infos sollen aber nur in F12:F15 eingetragen werden.

Macht das für Dich Sinn? Sorry, das ist ein für mich ziemlich wichtiges Makro, verliere aber langsam wg. der Komplexität den Überblick. Hilft Dir das weiter?
Tatsächlich gibt es insgesamt vier Tabellenblätter auf die ich zugreife.

Habe soeben deinen Rat gelesen. Danke nochmals für den Hinweis...

Viele Grüße
Dani


  

Betrifft: Rückfrage noch mal von: Erich G.
Geschrieben am: 20.11.2009 00:15:59

Hi Dani,
du schreibst:
"ziemlich wichtiges Makro, verliere aber langsam wg. der Komplexität den Überblick."

Ich kenne diejenigen Teile des Makros, die hier im Thread geschrieben wurden.
Ich weiß NICHT, wo sich deine neuen Zeilen (die mit F8:F40) jetzt in dem Code befinden.
Wenn du nicht den Code im Zusammenhang postest, ist das reines Rätselraten.

Du schreibst:
"Mein Problem ist, das die Spalte F beim zweiten Durchlauf nicht von F12: F15 befüllt wird, sondern F8:F15."
Ja - du hast das so programmiert: For Each Zelle In Range("F8:F40")

Der Teil des Makros, der in der Suchschleife ausgehend von der letzten in Spalte C gefüllten Zeile
weitere Zeilen füllt, scheint ja ordentlich zu laufen.
Warum werden hier nicht auch gleich die Zellen in Spalte F mitgefüllt?
Handelt es sich nicht um jeweils um die selben Zeilen?


Noch einmal: Ohne kompletten Code oder eine Beispielmappe ist keine wirkliche Hilfe möglich.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: Rückfrage noch mal von: meixner
Geschrieben am: 20.11.2009 01:05:09

Hallo Erich,

anbei der komplette Code unten. Ich weiß nicht, ob Dir das wirklich hilft, aber vielen Dank nochmals...

Mein Problem ist genau For Each Zelle In Range("F8:F40") glaube ich zumindest. Da statt in F12 beim zweiten Durchlauf was einzutragen die bereits befüllte Zelle von F8 und folgende überschrieben werden.


For Each Zelle In Range("F8:F40"): Frage: wie muß ich das abändern, damit nicht in F8 etwas eingetragen wird, sondern in der nächsten leeren Zelle, also F12???

Viele Grüße
Dani

Sub special_dividend() 



   Dim strRIC As String, rngSuch As Range                         'Variablen deklarieren 
   Dim rngF As Range, lngZ As Long, lngErst As Long 
   ' RIC wird gesucht in AlleBestände_alleFonds in Spalte C; 
   ' Eingabe von RIC für das erste Bezugsrecht in A35, C8 
   strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:") 

   With Workbooks("Template_alle_Kapitalmaßnahmen in Arbeit.xls") 
      Set rngSuch = .Worksheets(2).Columns(3) 
      Set rngF = rngSuch.Find(What:=strRIC, LookAt:=xlPart) 
      If Not rngF Is Nothing Then 
         lngErst = rngF.Row 
         With .Worksheets(1) 
            lngZ = .Cells(.Rows.Count, 3).End(xlUp).Row  'letzte in Sp.C belegte Zeile 
            Do 
               Sheets(5).Range("B5").Value = strRIC 
 
               lngZ = lngZ + 1            ' nächste (leere) Zeile 
               .Cells(lngZ, 1) = rngF.Offset(0, -2)               ' a 
               .Cells(lngZ, 2) = rngF.Offset(0, -1)               ' b 
               .Cells(lngZ, 3) = strRIC                           ' C 
               .Cells(lngZ, 4) = rngF.Offset(0, 1)                ' d 
               .Cells(lngZ, 5) = rngF.Offset(0, 2)                ' e 
               .Cells(lngZ, 6) = rngF.Offset(0, 3)                ' f 
               .Cells(lngZ, 17) = rngF.Offset(0, 7)               ' Q 
               .Cells(lngZ, 12) = rngF.Offset(0, 5)               ' L 
               .Cells(lngZ, 20) = rngF.Offset(0, 13).FormulaR1C1  ' T 
               .Cells(lngZ, 18) = rngF.Offset(0, 12).FormulaR1C1  ' R 
               Set rngF = rngSuch.FindNext(rngF) 
            Loop While Not rngF Is Nothing And rngF.Row <> lngErst 
         End With 
      Else 
         MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _ 
            vbCritical, "Nur Zahlen eingeben!" 
      End If 
   End With 

    
For Each Zelle In Range("F8:F40") 
last_trade_Aktie = Sheets("Parameter").Range("b3").FormulaR1C1 
If Zelle <> "" Then Zelle.Offset(0, 1) = last_trade_Aktie 
Next Zelle 
       

specialdividend = Application.InputBox("Bitte Betrag der special Dividend oder Capital Return  _
eingeben:", "Dateneingabe:", , , , , , 1)

If specialdividend = False Then Exit 
Sub 

For Each Zelle In Range("F8:F40") 
If Zelle <> "" Then Zelle.Offset(0, 15) = specialdividend 
Next Zelle 


For Each Zelle In Range("F8:F40") 
AS_Geschäft = Sheets("Parameter").Range("h8").FormulaR1C1 
If Zelle <> "" Then Zelle.Offset(0, 10) = AS_Geschäft 
Next Zelle 
      
 Worksheets(5).Range("c17").FormulaR1C1 = Worksheets(4).Range("b12") 

 Worksheets(5).Range("c11").Value = Worksheets(4).Range("b7").Value 
  
 Sheets(4).Range("a3").Value = Sheets(5).Range("b5").Value 

End Sub



  

Betrifft: AW: Rückfrage noch mal von: meixner
Geschrieben am: 20.11.2009 11:41:57

Hallo Erich,

Hallo Erich,

Vergiß meine Nachricht von vorhin.

ich glaube ich weiß, jetzt wo das Problem liegt. Allerdings weiß ich die Lösung dafür nicht. Vielleicht kannst Du mir da noch einen Tipp geben.

Wie kann ich das abändern: If Zelle <> "" soll abgeändert werden in if Zelle = Zelle in Spalte F, dann special Dividend eintragen, ansonsten if Zelle <>Zelle, dann keine special Dividend eintragen.

Soll heißen: Wenn z.B F11= F12, dann special dividend eintragen in spalte 15 (U12), ansonsten nicht; wenn F12=F13, special Dividend eintragen (u13) ansonsten nicht eintragen.

Viele Grüße
Dani

specialdividend = Application.InputBox("Bitte Betrag der special Dividend oder Capital Return eingeben:", "Dateneingabe:", , , , , , 1)
If specialdividend = False Then Exit Sub

For Each Zelle In Range("F8:F40")
If Zelle <> "" Then Zelle.Offset(0, 15) = specialdividend (Das Problem liegt bei If Zelle <> "")
Next Zelle


  

Betrifft: ein Versuch von: Erich G.
Geschrieben am: 21.11.2009 16:07:55

Hi Dani,
da ich nicht wirklich verstehe, was du da möchtest, kann ich nur mal ins Blaue hinein raten.

Vielleicht geht das ja in die richtige Richtung:

Option Explicit

Sub special_dividend()
   Dim strRIC As String, rngSuch As Range                         'Variablen deklarieren
   Dim rngF As Range, lngZ As Long, lngErst As Long
' ----------------------------------------------------------------------- neu Anfang
   Dim specialdividend As Double
' ----------------------------------------------------------------------- neu Ende

   specialdividend = Application.InputBox("Bitte Betrag der special Dividend " & _
      "oder Capital Return eingeben:", "Dateneingabe:", , , , , , 1)
   If specialdividend = False Then Exit Sub

   ' RIC wird gesucht in AlleBestände_alleFonds in Spalte C;
   ' Eingabe von RIC für das erste Bezugsrecht in A35, C8
   strRIC = InputBox("Bitte RIC Aktie eingeben:", "Dateneingabe:")
   
   With Workbooks("Template_alle_Kapitalmaßnahmen in Arbeit.xls")
      Set rngSuch = .Worksheets(2).Columns(3)
      Set rngF = rngSuch.Find(What:=strRIC, LookAt:=xlPart)
      If Not rngF Is Nothing Then
         lngErst = rngF.Row
         With .Worksheets(1)
            lngZ = .Cells(.Rows.Count, 3).End(xlUp).Row  'letzte in Sp.C belegte Zeile
            Do
               Sheets(5).Range("B5").Value = strRIC
 
               lngZ = lngZ + 1            ' nächste (leere) Zeile
               .Cells(lngZ, 1) = rngF.Offset(0, -2)               ' a
               .Cells(lngZ, 2) = rngF.Offset(0, -1)               ' b
               .Cells(lngZ, 3) = strRIC                           ' C
               .Cells(lngZ, 4) = rngF.Offset(0, 1)                ' d
               .Cells(lngZ, 5) = rngF.Offset(0, 2)                ' e
               .Cells(lngZ, 6) = rngF.Offset(0, 3)                ' f
               .Cells(lngZ, 17) = rngF.Offset(0, 7)               ' Q
               .Cells(lngZ, 12) = rngF.Offset(0, 5)               ' L
               .Cells(lngZ, 20) = rngF.Offset(0, 13).FormulaR1C1  ' T
               .Cells(lngZ, 18) = rngF.Offset(0, 12).FormulaR1C1  ' R
' ----------------------------------------------------------------------- neu Anfang
               If .Cells(lngZ, 6) = .Cells(lngZ - 1, 6) Then _
                  .Cells(lngZ, 21) = specialdividend  ' schreibe in Spalte U
' ----------------------------------------------------------------------- neu Ende
               Set rngF = rngSuch.FindNext(rngF)
            Loop While Not rngF Is Nothing And rngF.Row <> lngErst
         End With
      Else
         MsgBox "Die Aktie ist nicht vorhanden bzw. die Eingabe wurde abgebrochen!", _
            vbCritical, "Nur Zahlen eingeben!"
      End If
   End With
End Sub
Die Ergänzungen habe ich gekennzeichnet.

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: ein Versuch von: meixner
Geschrieben am: 21.11.2009 17:42:09

Hallo Erich,

das Makro läuft an sich super, aber die besagt Spalte U wird nicht mit der special dividend befüllt. Diese bleibt leer.
der feste Wert "special Dividend" wird nicht in die Spalte U eingetragen. Alles wird befüllt zwischen A8:T17. Nur die Spalte P (P8:P17) eben nicht. Es ist zum schreien...

Egal, ich werde versuchen das Problem anders anzupacken z.B über einen Bereich oder so.

Trotzdem herzlichen Dank für deine Mühe und deinen Einsatz!!!!!!! Finde ich echt nett von Dir!!

Viele Grüße
dani


  

Betrifft: AW: ein Versuch von: meixner
Geschrieben am: 21.11.2009 17:48:05

Hallo Erich,

ich nehme die Nachricht von vorhin zurück. Es klappt tatsächlich!!!!! Aber der schreibt komischerweise nicht den eingegebenen Wert der Special Dividend z.B 5, sondern immer eine 0,00000 Null rein.
Woran kann das liegen?


Viele Grüße
Dani


  

Betrifft: AW: ein Versuch von: Erich G.
Geschrieben am: 21.11.2009 18:04:33

Hi Dani,
wie ist die Zielzelle formatiert?
Welcher Wert steht tatsächlich nachher in der Zelle (siehst du besser in der Bearbeitungsleiste)?

Wenn du das Programm nicht verändert hast, finde ich das unverständlich...

Probier mal mit diesen Zeilen (da ist nur eine dazugekommen):

' ----------------------------------------------------------------------- neu Anfang
               MsgBox "Ausgabe " & specialdividend
               If .Cells(lngZ, 6) = .Cells(lngZ - 1, 6) Then _
                  .Cells(lngZ, 21) = specialdividend  ' schreibe in Spalte U
' ----------------------------------------------------------------------- neu Ende
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort


  

Betrifft: AW: ein Versuch von: meixner
Geschrieben am: 21.11.2009 18:24:41

Hi Erich,

Du hast Recht. Hatte was umgestellt :-). Klappt doch!!!!!!! Unglaublich...

Aber noch ein Kleinigkeit, da ich jetzt das Problem habe, dass ich jedesmal nach dem Durchlaufen des Makros eine leere Zelle habe; Das ist meine Schuld, da ich das anfänglich schlecht durchdacht habe.

Ein Makro soll in Spalte P nach leere Zeilen suchen. Jedesmal wenn das Makro eine leere Zeile findet, soll er diese Zeile mit dem Wert aus der Zelle unterhalb füllen, vorausgesetzt diese ist gefüllt.

Beispiel:
Finde leere Zeile in spalte P. Wenn z.B.
Zelle P11 steht leer, dann Wert aus P12 reinschreiben. Dann weitersuchen,
Zelle P20 ist leer, dann Wert aus P21 übernehmen.



Nochmals vielen Dank.
Dani


  

Betrifft: AW: ein Versuch von: meixner
Geschrieben am: 21.11.2009 19:33:51

Hallo Erich,

das Problem habe ich jetzt gelöst.

Vielen Dank für alles.
Dani


Beiträge aus den Excel-Beispielen zum Thema "variable Zelladresse finden"