Microsoft Excel

Herbers Excel/VBA-Archiv

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

Zellen auslesen | Herbers Excel-Forum


Betrifft: Zellen auslesen von: Leitz G.
Geschrieben am: 21.01.2010 21:11:12

Guten Abend!

Hätte gerne gewußt wie ich per VBA Werte aus Zellen auslesen kann.

Ich habe in der Spalte AH 4 bis AH 77 Werte (z.B. D 6001 od. D 1001 od. MP 1003 ........).
Wie kann ich die Zeilen auslesen erstens wieviel verschieden Werte stehen drinnen und in welchen Zeilen.
z.B. AH5 - AH7 = D 1001 ; AH11 - AH16 = D 6001 ; AH33 - AH34 = D 4001

Es stehen max. 6 verschieden Werte in den Zellen.

Bitte um Eure Hilfe

Gruß
Leitz G.

  

Betrifft: AW: Zellen auslesen von: Rene
Geschrieben am: 21.01.2010 21:27:17

vielleicht so


dim x(100)

For ze = 4 to 77
x(ze) = cells(ze, 34)
if cells(ze, 34) = "???" Then
msgbox "in dieser Zelle steht " & cells(ze,34)
end if
next ze


  

Betrifft: AW: Zellen auslesen von: Tino
Geschrieben am: 21.01.2010 23:20:44

Hallo,
hier mal eine Version zum testen.

Sub test()
Dim oDic As Object, meAr(1), strString$
Dim A As Long

Set oDic = CreateObject("Scripting.Dictionary")
'Tabellennamen anpassen !!!!!!!!!!!!!!! 
meAr(0) = Sheets("Tabelle1").Range("AH4:AH77").Value2

For A = 1 To Ubound(meAr(0))
 If meAr(0)(A, 1) <> "" Then
    If oDic.exists(meAr(0)(A, 1)) Then
       oDic(meAr(0)(A, 1)) = Union(Range(oDic(meAr(0)(A, 1))), Range("AH" & 3 + A)).Address(0, 0)
    Else
       oDic(meAr(0)(A, 1)) = "AH" & 3 + A
    End If
 End If
Next A

meAr(0) = oDic.Keys
meAr(1) = oDic.Items

For A = Lbound(meAr(0)) To Ubound(meAr(0))
  strString = strString & "'" & meAr(0)(A) & "' In Zelle: " & meAr(1)(A) & vbCr
Next A

MsgBox Left$(strString, Len(strString) - 1)

End Sub
Gruß Tino


  

Betrifft: AW: Zellen auslesen von: Leitz G.
Geschrieben am: 22.01.2010 10:22:04

Hallo!

Das ganze ist mir etwas zu kompliziert. Hänge deßhalb eine Testdatei an, die erklären soll was ich will.

Wenn in den Spalten S u. T Einträge sind dann handelt es sich um gleiche Positionen.
Wenn das so ist soll in der ersten Position die Stückzahl (K) um die Anzahl der gleichen erhöt werden und der Gesamtpreis (N) neu berechnet werden. Die darunter liegende Zeilen mit der Gleichen Pos. soll dann die Zellinhalte gelöscht werden bis auf die Spalte I und J.
Wenn in der Spalte P ein Eintrag ist (ausgeschieden) dann soll diese Zeile keine Berücksichtigung finden.



https://www.herber.de/bbs/user/67409.xls


Ich hab in der Datei zwei Tabellenblätter drinnen Tabelle1 = Start ; So solls aussehen = Ergebnis


Gruß
Leitz G.


  

Betrifft: AW: Zellen auslesen von: welga
Geschrieben am: 22.01.2010 10:45:40

Hallo Leitz G.,

Versuch mal folgendes:

Sub testing()
Dim i As Long
For i = Sheets(1).UsedRange.Rows.Count To 4 Step -1
If Cells(i, 19).Value <> "" And IsNumeric(Cells(i, 20)) Then
If Cells(i, 19).Value = Cells(i - 1, 19).Value Then
Cells(i - 1, 11).Value = Cells(i - 1, 11).Value + Cells(i, 11).Value
Cells(i, 11).ClearContents
Cells(i, 8).ClearContents
Cells(i, 14).ClearContents
Cells(i - 1, 14).Value = Cells(i - 1, 8).Value * Cells(i - 1, 11).Value
End If
End If
Next i

End Sub
Ich verstehe nur nicht, wie du nachher auf H26=50,00 kommst, denke aber dass es nur ein Tippfehler ist.


  

Betrifft: AW: Zellen auslesen von: Leitz G.
Geschrieben am: 22.01.2010 11:22:35

Hallo Welga!

Ist ein Tippfehler! Sorry

Herzlichen Dank für die superschnelle Hilfe!
Funktioniert perfekt! Nur wenn die oberste Zeile (z. B. 25) ausgeschieden wird dann dürfte diese nicht bearbeitet werden und der Endwert eine Zeile darunter ermittelt werden.
Sollte man das leicht ändern können, dann bitte ich Dich nochmals um Hilfe!

Sollte das kompliziert werden, dann versuche ich eine andere Lösung zu finden.


Gruß und Dank

Leitz G.


  

Betrifft: AW: Zellen auslesen von: welga
Geschrieben am: 22.01.2010 13:05:00

Hallo,
versuch mal:

Sub testing()
Dim i As Long
Dim a As Long
Dim b As Boolean
Dim c As Boolean
For i = Sheets(1).UsedRange.Rows.Count To 4 Step -1
b = False
c = True
If Cells(i, 19).Value <> "" And IsNumeric(Cells(i, 20)) And Cells(i, 16) = "" Then
If Cells(i, 19).Value = Cells(i - 1, 19).Value Then
If Cells(i - 1, 16).Value <> "" Then b = True
If b Then
a = 1
If Cells(i, 19).Value <> Cells(i - 1 - a, 19).Value Then c = False
b = False
Else
a = 0
End If
If c Then Cells(i - 1 - a, 11).Value = Cells(i - 1 - a, 11).Value + Cells(i, 11).Value
If c Then Cells(i, 11).ClearContents
If c Then Cells(i, 8).ClearContents
If c Then Cells(i, 14).ClearContents
If c Then Cells(i - 1 - a, 14).Value = Cells(i - 1 - a, 8).Value * Cells(i - 1 - a, 11).Value
End If
End If
If Cells(i, 16) <> "" Then
Cells(i, 11).ClearContents
Cells(i, 8).ClearContents
Cells(i, 14).ClearContents
End If
Next i

End Sub
Gruß
welga


  

Betrifft: AW: Zellen auslesen von: Leitz G.
Geschrieben am: 22.01.2010 13:27:58

Hallo Welga!

Es ist perfekt!
Vielen Dank!!!

Schönes Wochenende und Gruß

Leitz G.


  

Betrifft: AW: Zellen auslesen von: welga
Geschrieben am: 22.01.2010 14:36:08

Eine Anmerkung habe ich noch:

Das funktioniert nur, wenn nicht in zwei aufeinander folgenden zeilen etwas in der Ausgeschieden-Spalte steht.
Falls das auch berücksichtigt werden soll, bitte kurz bescheid geben.

Gruß
Welga


  

Betrifft: Sorry kann nicht helfen, verstehe es nicht. von: Tino
Geschrieben am: 22.01.2010 11:06:39

Hallo,
ich verstehe Deine Tabelle in Zusammenhang mit dem Ergebnis nicht.

z. Bsp. wird

D 1001 044

nicht mit

D 1001 012

zusammengezogen, aber

D 3010 011
D 3010 005
D 3010 009
D 3010 003

wiederrum doch?!

Warum aus der 40 bei D3010 in 'PREIS STK.' auf einmal eine 50 wird verstehe ich auch nicht?!

Sorry kann nicht helfen da ich es nicht verstehe.

Gruß Tino


  

Betrifft: AW: an Tino von: Leitz G.
Geschrieben am: 22.01.2010 11:25:34

Hallo Tino!

Danke für das Angebot! Habe schon eine super Lösung von Welga!


Dank und Gruß
Leitz G.


  

Betrifft: welches Angebot? Verstehe es immer noch nicht. oT. von: Tino
Geschrieben am: 22.01.2010 14:36:15




Beiträge aus den Excel-Beispielen zum Thema "Zellen auslesen"