Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Excel
  Berichtsheft schreiben

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Berichtsheft schreiben (1408 mal gelesen)
Steve12
Mitglied
Bürokaufmann

Sehen Sie sich das Profil von Steve12 an!   Senden Sie eine Private Message an Steve12  Schreiben Sie einen Gästebucheintrag für Steve12

Beiträge: 3
Registriert: 14.11.2015

erstellt am: 14. Nov. 2015 15:55    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich habe ein Problem mit Makros. Ich habe auf einem Excel sheet 20 Texteinträge die ich immer zufällig auswählen will. Anschließend möchte ich den gefunden Eintrag kopieren und in ein anderes Programm einfügen lassen. Besser wäre wenn gleich 5 Einträge ausgewählt und kopiert werden, damit ich Sie in eine andere Auswahl einfügen kann.

Mein Quelltext sieht momentan so aus:

  Dim r As Range, zufallszelle As Integer, zufallsbereich As Integer
  Set r = Range("A1:a20").SpecialCells(xlCellTypeConstants) 'merke dir nur befüllte Zellen (hier nur Konstanten, formeln würden ignoriert)
  Range("A1:a20").ClearFormats ' löscht die Formatierung (hilfreich, wenn man Zelle farbig makiert
  zufallsbereich = Int(Rnd() * r.Areas.Count) + 1  'Ermittle, aus wievielen Bereichen die befüllten Zellen bestehen und suche dir irgendeine aus (RND-Funktion)
  zufallszelle = Int(Rnd() * r.Areas(zufallsbereich).Cells.Count) + 1  'Such dir aus dem beliebigen Bereich irgendeine Zelle aus
  r.Areas(zufallsbereich).Cells(zufallszelle).Activate  'Aktiviere die zufallszelle im Zufallsbereich
  r.Areas(zufallsbereich).Cells(zufallszelle).Interior.ColorIndex = 4
 

Kann mir jemand weiterhelfen.

????

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 14. Nov. 2015 17:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Steve12 10 Unities + Antwort hilfreich

Hallo Steve12,
Willkommen im Forum 

Zu Deiner Frage: Warum machst Du Dir nicht einfach ein Variablenfeld in das Du die Werte hineinschreibst?
Damit kannst Du dann machen was Du möchtest, an ein anderes Programm übergeben oder einen anderen Tabellenbereich füllen.
Stellt sich nur die Frage, darf in einer 5er-Auswahl eine Zelle auch mehrfach übernommen werden? Wenn nicht müßte man die bereits ausgewählten dahingehend auch noch mal untersuchen.

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Steve12
Mitglied
Bürokaufmann

Sehen Sie sich das Profil von Steve12 an!   Senden Sie eine Private Message an Steve12  Schreiben Sie einen Gästebucheintrag für Steve12

Beiträge: 3
Registriert: 14.11.2015

erstellt am: 14. Nov. 2015 19:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

danke für die schnelle Antwort.

Nein es dürften nicht 2 Einträge gleichzeitig vorkommen.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 14. Nov. 2015 21:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Steve12 10 Unities + Antwort hilfreich

Hey,
Bin mir jetzt nicht ganz sicher, hat Dir der vorherige Hinweis schon geholfen oder brauchst Du weitere Unterstützung. Ich habe so ein wenig das Gefühl, dass dies Dein erstes Makro ist 

Nebenbei bemerkt: Wenn Du keine Mehrfachauswahl hast brauchst Du den Area-Bereich nicht und der Zufallsbereich wird nie andere Werte als 1 (=Spalte A) annehmen. Man könnte die Zelle also auch direkt über cells(Zeile,Spalte) also cells(zufallszelle,1) ansprechen.

Grüße
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Steve12
Mitglied
Bürokaufmann

Sehen Sie sich das Profil von Steve12 an!   Senden Sie eine Private Message an Steve12  Schreiben Sie einen Gästebucheintrag für Steve12

Beiträge: 3
Registriert: 14.11.2015

erstellt am: 15. Nov. 2015 15:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hey,

ja war mein erstes Makro. Hab ne Lösung gesucht um Texteinträge zufällig auswählen zu können. Hab auch das mit dem Aufnehmen von Makros und auch das was Sie meinten bezüglich Variablenfeld nicht ganz verstanden. Gibt es nun ne Möglichkeit, dass immer 5 unterschiedliche Einträge farblich durch Makro markiert werden und kopierbar sind ?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

KlaK
Ehrenmitglied V.I.P. h.c.
Dipl. Ing. Vermessung, CAD- und Netz-Admin



Sehen Sie sich das Profil von KlaK an!   Senden Sie eine Private Message an KlaK  Schreiben Sie einen Gästebucheintrag für KlaK

Beiträge: 2624
Registriert: 02.05.2006

Office 2010; Office365
Visual Basic

erstellt am: 15. Nov. 2015 17:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Steve12 10 Unities + Antwort hilfreich

Hallo,

Ja Möglichkeiten gibt es viele aber dazu müßte man sich einmal mit den Grundlagen der Programmierung beschäftigen 
Wie eine (von vielen anderen) Lösung aussehen könnte siehst Du hier im Code:

Code:
Sub Zufalltext()

  Dim r As Range
  Dim Zufallszelle As Integer
  Dim Zufallsbereich As Integer
  Dim L As Long, L1 As Long  ' Schleifenvariable
  Dim sText(5) As String  ' hier werden die Texte gespeichert
  Dim lZelle(5) As Long  ' hier wird die Ausgangszelle gemerkt
  Dim bVorhanden As Boolean
 
  Set r = Range("A1:a20").SpecialCells(xlCellTypeConstants) 'merke dir nur befüllte Zellen (hier nur Konstanten, formeln würden ignoriert)
  Range("A1:a20").ClearFormats ' löscht die Formatierung (hilfreich, wenn man Zelle farbig makiert
'  zufallsbereich = Int(Rnd() * r.Areas.Count) + 1  'Ermittle, aus wievielen Bereichen die befüllten Zellen bestehen und suche dir irgendeine aus (RND-Funktion)
'  zufallszelle = Int(Rnd() * r.Areas(zufallsbereich).Cells.Count) + 1  'Such dir aus dem beliebigen Bereich irgendeine Zelle aus
'  r.Areas(zufallsbereich).Cells(zufallszelle).Activate  'Aktiviere die zufallszelle im Zufallsbereich
'  r.Areas(zufallsbereich).Cells(zufallszelle).Interior.ColorIndex = 4
 
' Wir wollen mehrere Werte lelsen, das geschieht am einfachsten über eine Schleife
  For L = 1 To 5 ' 5 Werte werden gebraucht
    Zufallszelle = Int(Rnd() * r.Cells.Count) + 1  'Such dir aus dem beliebigen Bereich irgendeine Zelle aus
    ' Ein Wert soll nur übernommen werden, wenn er noch nicht vorhanden ist
    ' Deshalb werden die vorherigen Werte untersucht
    bVorhanden = False
    For L1 = L - 1 To 1 Step -1 ' vom zuletzt gespeicherten bis zum ersten
      ' Vergleich ob neuer Wert schon vorhanden
      If lZelle(L1) = Zufallszelle Then bVorhanden = True : Exit For
    Next L1
    If bVorhanden Then
      L = L - 1 ' Rückstellen des aktuellen Zählers
    Else
      ' Übernahme der Werte
      sText(L) = r.Cells(Zufallszelle, 1)
      lZelle(L) = Zufallszelle
      r.Cells(Zufallszelle, 1).Interior.ColorIndex = 4
    End If
  Next L
  ' Nun können diese Werte in eine andere Spalte geschrieben werden
  ' z.B. in Spalte C (=3)
  For L = 1 To 5
    Cells(L, 3) = sText(L)
  Next L
  ' Hätte man auch über direkt kopieren machen können, dann spart man sich das Textfeld:
  ' Ergebnis in Spalte D (4)
  For L = 1 To 5
    Cells(L, 4) = Cells(lZelle(L), 1)
  Next L

End Sub


Wenn Du jetzt Interesse daran gefunden hast schau Dir einfach mal die Hilfe an da gibt es auch eine gute prinzipielle Einführung in VBA. Ein Grundwissen über Variable, Schleifen, Abfragen ist schnell erworben und auch leicht zu verstehen.

Viel Spaß dabei
Klaus 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz