Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


252 / 3841 ページ ←次へ | 前へ→

【77414】データ一覧から複数条件で対象の行を探す
質問  さい  - 15/9/23(水) 22:35 -

引用なし
パスワード
   VBAでデータ一覧から下記の条件で該当する人物・人物が記載されているセル(Range型)を取得したいです。

表には、<No.><属性><種族><攻撃範囲><モード><名前>が記載されています。
すべての条件を指定すればひとつの行しか出てこないという前提です。

イメージ
Dim hoge As Range
set hoge = Activesheet.<検索条件>
のような形


こちらが取得している情報
・ 属性=火 As String
・ 種族=神 As String
・ 攻撃範囲=広範囲 As String
・ モード=攻撃 As String

自分で探すと、No.9の「○○○○○」 セル:G12 が探せます。(画像が貼れないので申し訳ないです)
これをプログラムでやらせたいです。
どのように検索をすればよいか教えて下さい。
・ツリー全体表示

【77413】Re:オートフィルタ 繰り返し
お礼  はる  - 15/9/17(木) 16:15 -

引用なし
パスワード
   >    Sheets("計画").Range("K:N").Copy
>    .Range("E:H").PasteSpecial Paste:=xlPasteValues
>
>でコピーされたデータ部分の1〜2行目、セルE1:H2は空白になっていますか?
>.Range("E3").CurrentRegionに影響があります。
空欄です。何かしら埋めておいたほうが良かったでしょうか

頂いたマクロで思うような結果が出ました!
ありがとうございます!!!!!!
・ツリー全体表示

【77412】Re:オートフィルタ 繰り返し
回答  ウッシ  - 15/9/17(木) 15:38 -

引用なし
パスワード
   こんにちは

    Sheets("計画").Range("K:N").Copy
    .Range("E:H").PasteSpecial Paste:=xlPasteValues

でコピーされたデータ部分の1〜2行目、セルE1:H2は空白になっていますか?
.Range("E3").CurrentRegionに影響があります。

また、
Criteria1:=.Cells(10, i).Value

Criteria1:=.Cells(i, 10).Value
ですね。

Sub test()
  Dim aSh As Worksheet
  Dim i  As Integer
  
  Set aSh = Sheets("マクロセット")
  '#データ更新
  With aSh
    .Columns("E:J").Clear
    Sheets("計画").Range("K:N").Copy
    .Range("E:H").PasteSpecial Paste:=xlPasteValues
    Sheets("Data Base").Range("AP4:AP100").Copy
    .Range("J8").PasteSpecial Paste:=xlPasteValues
    
    .Range("E3:H3").AutoFilter

    If ActiveWorkbook.Worksheets.Count < 8 Then Exit Sub
    For i = 8 To ActiveWorkbook.Worksheets.Count
      .Range("$E$3:$H$5000").AutoFilter _
        Field:=4, Criteria1:=.Cells(i, 10).Value
      .Range("E3").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
      Sheets(i).Range("B53").PasteSpecial Paste:=xlPasteValues
    Next i
  End With
  
End Sub
・ツリー全体表示

【77411】Re:オートフィルタ 繰り返し
発言  はる  - 15/9/17(木) 14:17 -

引用なし
パスワード
   ActiveSheetは、Sheets("マクロセット")です。

Sheets("計画")及びSheets("DateBase")は、
別ブックやシートから数式でデータを集めています。
フィルターに関してだけなら無関係です。

オートフィルタのマクロ作成中に分りにくくなったので、
一旦Sheets("マクロセット")データに集約しました・・

エラー内容といいますか、
J列の内容でフィルターされておらず、
全データがシート(8)にコピーされてしまいます。

返答頂いたマクロも同じ現象です。
・ツリー全体表示

【77410】Re:オートフィルタ 繰り返し
回答  ウッシ  - 15/9/17(木) 14:02 -

引用なし
パスワード
   こんにちは

セル位置とシートが良く分かりません。

ActiveSheet名は?
Sheets("マクロセット")?

Sheets("計画")は無関係?

どこで、どんなエラーになるのでしょうか?

Sub test()
  Dim aSh As Worksheet
  Dim i  As Integer
  
  Set aSh = ActiveSheet
  '#データ更新
  With aSh
    .Columns("E:J").Clear
    Sheets("計画").Range("K:N").Copy
    Sheets("マクロセット").Range("E:H").PasteSpecial Paste:=xlPasteValues
    Sheets("Data Base").Range("AP4:AP100").Copy
    Sheets("マクロセット").Range("J8").PasteSpecial Paste:=xlPasteValues
    
    .Range("E3:H3").AutoFilter

    If ActiveWorkbook.Worksheets.Count < 8 Then Exit Sub
    For i = 8 To ActiveWorkbook.Worksheets.Count
      .Range("$E$3:$H$5000").AutoFilter _
        Field:=4, Criteria1:=.Cells(10, i).Value
      .Range("E3").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
      Sheets(i).Range("B53").PasteSpecial Paste:=xlPasteValues
    Next i
  End With
  
  Sheets("マクロセット").Select
 
End Sub

ActiveSheetがSheets("マクロセット")ならもっと整理出来ます。
・ツリー全体表示

【77409】オートフィルタ 繰り返し
質問  はる  - 15/9/17(木) 13:34 -

引用なし
パスワード
   お初にお目にかかります。VBAの入り口をうろうろしている初心者です。
過去ログ等を参考にして自分で組んでみましたがエラーで動かないので
ご指摘お願い致します。


Sub Macro3()
'
'
’#データ更新
  Columns("E:j").Clear
  Sheets("計画").Range("K:N").Copy
  Sheets("マクロセット").Range("E:H").PasteSpecial Paste:=xlPasteValues
  Sheets("Data Base").Range("AP4:AP100").Copy
  Sheets("マクロセット").Range("J8").PasteSpecial Paste:=xlPasteValues
'
  Range("E3:H3").Select
  Selection.AutoFilter
' 
  Dim i As Integer
  If ActiveWorkbook.Worksheets.Count < 8 Then Exit Sub
  For i = 8 To ActiveWorkbook.Worksheets.Count
  ActiveSheet.Range("$E$3:$H$5000").AutoFilter Field:=4, Criteria1:=Cells(10, i).Value
  Range("E3").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
  Sheets(i).Range("B53").PasteSpecial Paste:=xlPasteValues
  Next i
  Sheets("マクロセット").Select
  
End Sub


左から8シート目以降に枚数未定のシートが40~70枚ほどあります。
E:H列のデータを、シート名(J列に順に記載)を用いH列でフィルターを掛け、
その抽出データを各シートに貼り付けを行いたいです。

色々調べてみたのですが、どう修正すればいいのか見つけきれず。。
どうかよろしくお願い致します
・ツリー全体表示

【77408】Re:1字消す
お礼  トキノハジメ  - 15/9/11(金) 12:33 -

引用なし
パスワード
   ▼β さん:
お返事有難うございました。

何とかうまくできました。

今後とも宜しくお願い致します。
・ツリー全体表示

【77407】Re:1字消す
発言  β  - 15/9/9(水) 17:07 -

引用なし
パスワード
   ▼トキノハジメ さん:

文字化けが激しいのですが、特殊な文字で質問文を書いておられるのでしょうか?

もし、A1:T40 の範囲のセルにある ☆を(場所はどこでも)無条件に消したいなら
範囲を選んで、置換。置換前文字が ☆、置換後は空白のままにして実行。
これをマクロ記録。

やはり、文字列の最後にある☆だけを消したいなら、その範囲のセルをループで1つずつ
☆があるかどうか判定して、あれば消す。
この判定は Right(その文字列,1) が ☆ かどうかをきいてやればいいですし、
消すのは、いろんな方法がありますが、簡単なのは Left(その文字列,Len(その文字列)-1) で置き換えるといったことでしょうかね。
・ツリー全体表示

【77406】1字消す
質問  トキノハジメ  - 15/9/9(水) 16:52 -

引用なし
パスワード
   いつもお世話になります。セルが20・苅阿阿蕕い△辰ニ
それぞれにカタカナの名前があって、字数は3&#12316;9文字ぐらいですが、それら
の名前の最後に☆印が付いているのですが、その☆印のみを消したいのですが
(例・・・ヤマモト☆)  A1:T40 まで
なにを使えば良いのか教えて下さい 。
宜しくおねがいいたします。
・ツリー全体表示

【77404】Re:テキストボックスのスクロールバー
発言  β  - 15/9/9(水) 9:28 -

引用なし
パスワード
   ▼tomi さん:

なんの役にも立たないレスですけど。

おもいつきで、API の GetScrollInfo で情報取得が成功したら、あるいは
API の SendMessage でスクロールバーにメッセージを送り、成功したら
スクロールバーが表示されている、失敗したら表示されていないという制御が
できるかもと、トライしましたが、そもそもVBAで扱うユーザーフォームでは
テキストボックスのハンドルが取得できないので(私の力量では)、
その思い付きを試すこともできません。
(試して思惑通りかどうかもわかりませんが)
・ツリー全体表示

【77403】Re:テキストボックスのスクロールバー
お礼  tomi  - 15/9/9(水) 7:51 -

引用なし
パスワード
   ▼β さん:
>▼tomi さん:
>▼tomi さん:
>おはようございます。
>
> 本件、悩ましいですよねぇ。
> 別掲示板のやり取りの中でもありましたけど、ネックは、現在の文字フォントの種類とサイズで
>現在の文字列がどれだけの長さ(桁数ではなく)なのか、エクセルが、その情報を我々にくれない
> ということです。
>しかも、今回の場合、【文字の高さ】つまり1行の高さとテキストボックスの高さを比較しなければ
> いけないという要素も含まれてしまいます。この1行の高さも、我々は情報として取得できません。
> (エクセルの意地悪?)
>
>これも、別板になりますが、文字列の長さに関して、
>ht p://www.excel.studio-kazu.jp/kw/20150908152533.html
>でも、質問者さんともども悩みました。結局、苦肉の策でお茶を濁しましたが。
>
>Changeイベントでの文字数の把握と、そのフォント情報から自動処理をしたいということは
>重々理解できますが、う〜ん・・・
>
> しかも、実は、解は1つだけではないということがあります。
>たとえば文字数が20文字だったとします。
>これをテキストボックスにすべて表示させたいという場合、
>
>・1行にして、小さなサイズで表示
>・2行にして、少し大きなサイズで表示
>・3行にして、もっと大きなサイズで表示
>   ・
>  ・
>  ・
>
>無数に解があります。
>
>で、それらの解の中で、今度は、そのフォントで、テキストボックスには何行収まるか
> これを、その時の文字の高さで判断して、できるだけ下に余白行がない解を選択。
>
>でも、コメントしたように、この文字の高さが取得できません。(と思います)
>
>ご希望のスクロールバーが出現しているかどうかを把握できれば、Changeイベント内で
>大きなフォントから始めて、ぐるぐる、ループさせて、スクロールバーが消えたら
>そのフォントで決定 ということができるんですがねぇ。
>
>やはり(お好みではなかったようですけど)別掲示板でのWinArrowさんのリコメンド、
> 入力したものを自分で調整して見やすくするということしかないのではと思います。
β さん適切なアドバイスありがとうございます。確かに悩ましい問題で、
 出来るだけ先方(利用者)の便宜を図ってやりたい気持ちで投稿しました。
 スクロールバーの出現が取得できれば・・・・
 もう一度考えなおします。
・ツリー全体表示

【77402】Re:テキストボックスのスクロールバー
発言  β  - 15/9/9(水) 7:16 -

引用なし
パスワード
   ▼tomi さん:
▼tomi さん:
おはようございます。

本件、悩ましいですよねぇ。
別掲示板のやり取りの中でもありましたけど、ネックは、現在の文字フォントの種類とサイズで
現在の文字列がどれだけの長さ(桁数ではなく)なのか、エクセルが、その情報を我々にくれない
ということです。
しかも、今回の場合、【文字の高さ】つまり1行の高さとテキストボックスの高さを比較しなければ
いけないという要素も含まれてしまいます。この1行の高さも、我々は情報として取得できません。
(エクセルの意地悪?)

これも、別板になりますが、文字列の長さに関して、
ht p://www.excel.studio-kazu.jp/kw/20150908152533.html
でも、質問者さんともども悩みました。結局、苦肉の策でお茶を濁しましたが。

Changeイベントでの文字数の把握と、そのフォント情報から自動処理をしたいということは
重々理解できますが、う〜ん・・・

しかも、実は、解は1つだけではないということがあります。
たとえば文字数が20文字だったとします。
これをテキストボックスにすべて表示させたいという場合、

・1行にして、小さなサイズで表示
・2行にして、少し大きなサイズで表示
・3行にして、もっと大きなサイズで表示
  ・
  ・
  ・

無数に解があります。

で、それらの解の中で、今度は、そのフォントで、テキストボックスには何行収まるか
これを、その時の文字の高さで判断して、できるだけ下に余白行がない解を選択。

でも、コメントしたように、この文字の高さが取得できません。(と思います)

ご希望のスクロールバーが出現しているかどうかを把握できれば、Changeイベント内で
大きなフォントから始めて、ぐるぐる、ループさせて、スクロールバーが消えたら
そのフォントで決定 ということができるんですがねぇ。

やはり(お好みではなかったようですけど)別掲示板でのWinArrowさんのリコメンド、
入力したものを自分で調整して見やすくするということしかないのではと思います。
・ツリー全体表示

【77401】Re:テキストボックスのスクロールバー
お礼  tomi  - 15/9/9(水) 5:05 -

引用なし
パスワード
   ▼マナ さん:
>▼tomi さん:
>
>これも、期待するものと違うかもしれませんが、
>都度、一定のフォントサイズにして行数をカウントするのはだめですか
>
>Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
>  With TextBox1
>    .Font.Size = 14
>    MsgBox .LineCount
>    If .LineCount > 5 Then
>      .Font.Size = 10
>    Else
>      .Font.Size = 14
>    End If
>  End With
>End Sub
マナさんありがとうございます。上記でテストをしましたが、行数だけではなかなか私の希望が出来ないことがわかりました。文字数を減らし場合(行数が減る場合)にはフォントを一つ上げるとかです。そしてbeforeUpdateでなく、できればchangeイベントで実行したいと思っています。
 以上 よろしくお願いします。
・ツリー全体表示

【77400】Re:テキストボックスのスクロールバー
お礼  tomi  - 15/9/9(水) 5:00 -

引用なし
パスワード
   ▼カリーニン さん:
>私の回答としては、mougでの回答のとおりですし、なぜmougでの回答ではだめなのかを
>書かないと、同じことの繰り返しになりますよ。
>
>エクセル関連のQ&Aサイトの回答者はどこのサイトでもほぼ同じ方ですので。
>
>あと、HNはサイトごとに変えるのではなく、統一したほうがいいです。
カリーニンさんお手数をお掛けしました。
 通常はこのサイトを使っていましたが、8月の中旬頃からアクセスが出来なくなり、やむをえず、mougを利用しました。昨日からこのサイトにアクセス出来るようになり質問をさせて頂きました。私はこのサイトの方が利用しやすので、今後はこのサイトに質問をさせて頂きます。mougの件については常に全体表示をしたいのとテキストボックの横、幅が大きくなると他の部分が見えなくなるので、問題と思いました。
 もうすこし、考えてみます。ありがとうございました。
・ツリー全体表示

【77399】Re:テキストボックスのスクロールバー
発言  マナ  - 15/9/8(火) 20:50 -

引用なし
パスワード
   ▼tomi さん:

これも、期待するものと違うかもしれませんが、
都度、一定のフォントサイズにして行数をカウントするのはだめですか

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
  With TextBox1
    .Font.Size = 14
    MsgBox .LineCount
    If .LineCount > 5 Then
      .Font.Size = 10
    Else
      .Font.Size = 14
    End If
  End With
End Sub
・ツリー全体表示

【77398】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 20:39 -

引用なし
パスワード
   私の回答としては、mougでの回答のとおりですし、なぜmougでの回答ではだめなのかを
書かないと、同じことの繰り返しになりますよ。

エクセル関連のQ&Aサイトの回答者はどこのサイトでもほぼ同じ方ですので。

あと、HNはサイトごとに変えるのではなく、統一したほうがいいです。
・ツリー全体表示

【77397】Re:テキストボックスのスクロールバー
発言  tomi  - 15/9/8(火) 20:32 -

引用なし
パスワード
   ▼カリーニン さん:
>もしかしたらtomiokaさん?
>違いましたらすみません。
>
>最近他サイトで似たような質問に回答したものですから。
モーグに質問をしましたが、予想していた解答が得られませんでしたので、
 別途方法を考えました。以上です。よろしくお願いします。
・ツリー全体表示

【77396】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 20:02 -

引用なし
パスワード
   もしかしたらtomiokaさん?
違いましたらすみません。

最近他サイトで似たような質問に回答したものですから。
・ツリー全体表示

【77395】Re:テキストボックスのスクロールバー
発言  tomi  - 15/9/8(火) 19:45 -

引用なし
パスワード
   ▼カリーニン さん:
>スクロールバー表示の有無を取得する目的は何でしょうか?
>目的が分かれば回答が付きやすいかもしれません。
テキストボックスに入力された文章全体を表示したいので、フォントサイズを
 小さくしたいと思っており、スクロールバーが出た時点で現在のフォントサイズを一つ小さいサイズにしたいと思ってスクロールバーの出たのがわかればと考えました。以上よろしくお願いします。
・ツリー全体表示

【77394】Re:テキストボックスのスクロールバー
発言  カリーニン  - 15/9/8(火) 19:25 -

引用なし
パスワード
   スクロールバー表示の有無を取得する目的は何でしょうか?
目的が分かれば回答が付きやすいかもしれません。
・ツリー全体表示

252 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free