Microsoft Excel

Herbers Excel/VBA-Archiv

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

Wird hier interner Speicher durchlaufen?

Betrifft: Wird hier interner Speicher durchlaufen? von: Stefanie
Geschrieben am: 03.09.2014 10:30:38

Noch einmal kurz ich :)
Könnte mir jemand sagen, ob ich hier korrekt eine Zeile im internen Speicher durchlaufe? Da ich die Werte ja im arr speichere, denke ich das klappt. Bin mir aber noch etwas unsicher :)

Danke!

Sub internerSpeicher_lauf()
 Dim arr
 Dim i As Long
 Dim x As Integer
 
 For x = 2 To 4
   With Cells(2, x)
     arr = .Value
     If .Value = "x" Then
     MsgBox "X gefunden"
     End If
    End With
Next x
End Sub

  

Betrifft: AW: Wird hier interner Speicher durchlaufen? von: Rudi Maintaire
Geschrieben am: 03.09.2014 10:37:29

Hallo,
nein, damit liest du aus der Tabelle.

Sub internerSpeicher_lauf()
  Dim arr
  Dim i As Long
  Dim x As Integer
  arr = Range(Cells(2, 2), Cells(2, 4))
  For x = 1 To UBound(arr)
    If arr(1, x) = "x" Then
      MsgBox "X gefunden"
    End If
  Next x
End Sub

Gruß
Rudi


  

Betrifft: AW: Wird hier interner Speicher durchlaufen? von: Stefanie
Geschrieben am: 03.09.2014 10:42:35

Mist, ok dann orientiere ich mich mal an deinem Beispiel.
Danke dir!


  

Betrifft: vom Prinzip her ... von: Rudi Maintaire
Geschrieben am: 03.09.2014 10:49:44

Hallo,
.. musst du deinen Bereich erst in ein Array einlesen und dann das Array durchlaufen.
Wobei du beachten musst, dass das Array immer mit (1,1) beginnt.

Gruß
Rudi


  

Betrifft: AW: Wird hier interner Speicher durchlaufen? von: Stefanie
Geschrieben am: 03.09.2014 10:48:58

Wenn ich den arr variabel machen möchte, dann benötige ich 2 For schleifen. Ist das korrekt?

Also dann würde mein arr so aussehen:

arr = Cells(a, b)
Daaaannkeee :)


  

Betrifft: AW: Wird hier interner Speicher durchlaufen? von: Rudi Maintaire
Geschrieben am: 03.09.2014 10:54:04

Hallo,
etwa so:

Sub internerSpeicher_lauf()
  Dim arr
  Dim lZeile As Long, lSpalte As Long
  arr = Range("A1:F100")  'kann man flexibilisieren
  For lZeile = 1 To UBound(arr) 'alle Zeilen
    For lSpalte = 1 To UBound(arr, 2) 'alle Spalten
      If arr(lZeile, lSpalte) = "x" Then
        MsgBox "X gefunden"
      End If
    Next lSpalte
  Next lZeile
End Sub

Gruß
Rudi


  

Betrifft: AW: Wird hier interner Speicher durchlaufen? von: Stefanie
Geschrieben am: 03.09.2014 11:13:10

Das ist super. Ich habe versucht den Bereich auch flexiebel zu gestalten mit Range(Cells(a,b),Cells(a,b)) da kam dann aber immer eine Meldung, dass die typen unverträglich sind :-(

Wie kann man den Bereich noch flexibiliseren?

Hatte an sowas gedacht:

Dim i as integer
Dim Zeile_A as integer
Zeile_A=2
Dim arr
Dim lZeile As Long, lSpalte As Long

For i = 2 To 134
                 For Each Zelle_X In Range(Cells(Zeile_A, i), Cells(Zeile_A, i))
                     arr = Range(Cells(Zeile_A, i), Cells(Zeile_A, i)
                     For lZeile = 1 To UBound(arr) 'alle Zeilen
                        For lSpalte = 1 To UBound(arr, 2) 'alle Spalten
                              If arr(lZeile, lSpalte) = "x" Then
                                 MsgBox "X gefunden"
                              End If
                        Next lSpalte
                     Next lZeile 
                  Next Zelle_X
Next i 



  

Betrifft: noch nicht verstanden von: Rudi Maintaire
Geschrieben am: 03.09.2014 11:44:31

Hallo,
hier

For Each Zelle_X In Range(Cells(Zeile_A, i), Cells(Zeile_A, i))

durchläufst du alle Zellen einzeln.
Damit
arr = Range(Cells(Zeile_A, i), Cells(Zeile_A, i))

weist du arr einen einzelnen Zellwert zu. Somit ist arr kein Array. Deshalb der Fehler.
Sub aaa()
  Dim Zeile_A As Integer
  Zeile_A = 2
  Dim arr
  Dim lZeile As Long, lSpalte As Long
  
  arr = Range(Cells(Zeile_A, 1), Cells(Zeile_A, Columns.Count).End(xlToLeft))
  For lZeile = 1 To UBound(arr) 'alle Zeilen
    For lSpalte = 1 To UBound(arr, 2) 'alle Spalten
      If arr(lZeile, lSpalte) = "x" Then
        MsgBox "X gefunden"
      End If
    Next lSpalte
  Next lZeile
End Sub
Gruß
Rudi


  

Betrifft: AW: noch nicht verstanden von: Stefanie
Geschrieben am: 03.09.2014 13:23:20

Stimmt... oh man da stand mir wohl jemand auf der Leitung!°
Jetzt hab ich es aber verstanden. Ich danke dir für deine Geduld und deine ausführliche Antwort!

Viele Grüße
Stefanie


  

Betrifft: AW: noch nicht verstanden von: Stefanie
Geschrieben am: 08.09.2014 10:40:59

Kann mir jemand evtl noch erläutern was die 2 macht? Das verstehe ich noch nicht :-(

For lSpalte = 1 To UBound(arr, 2) 'alle Spalten

Vielen Dank


 

Beiträge aus den Excel-Beispielen zum Thema "Wird hier interner Speicher durchlaufen?"