C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■5197  Re[6]: ComboBoxでフォーカスのあるIDを取得するには?
□投稿者/ とけい -(2007/07/06(Fri) 13:55:33)
    魔界の仮面弁士 さん回答有難うございます。

    特に、今回の方法でも問題が無いと思いますので解決とさせて頂きます。
    アドバイス有難うございました。


    No5191 (魔界の仮面弁士 さん) に返信
    > ■No5181 (とけい さん) に返信
    >>>「あまりスマートな方法では無いなぁ。(T_T)」と仰っておりますが
    > Index を取得するだけのために、いちいち、内容を自己描画しなければいけないのが面倒だなぁ、と。(^^;
    >
    >>他に実現する方法はあるのでしょうか?
    > 思い当たりません。
記事No.5145 のレス / END /過去ログ15より / 関連記事表示
削除チェック/

■67645  Re[1]: 社内ネットワーク上で同時編集不可にしたい
□投稿者/ クンフー -(2013/08/20(Tue) 14:42:13)
    Excelでの限界を感じている、とありますが、例えばそれはどのようなところでしょうか?
    (例えばExcelのマクロで対応できる範疇なのかどうか)
    Excelの排他機能をそのまま使えるので、「Excelの限界」の部分がマクロで対処できるのならば、その方が楽だと思います。

    プログラムを組むとなると、データベースの設計等、色々とやることがたくさんありますし、
    素人であればやはりハードルが高いと思います。

    ※余談ですが、貴方は「敷居が高い」という表現を使っていますが、これは本来別の意味です。
     興味があれば調べてみてください。
記事No.67637 のレス /過去ログ114より / 関連記事表示
削除チェック/

■81235  Re[1]: バイト数から文字数を割り出す
□投稿者/ WebSurfer -(2016/09/04(Sun) 17:22:11)
    No81233 (よしえ さん) に返信

    > 全角文字と半角文字が混ざった文字列があり、

    質問者さんの言う「全角文字と半角文字」の定義は何でしょう?

    VB.NET の String オブジェクトは Char 構造体のシーケンシャルコレクションで、「半角
    文字」とか「全角文字」という概念はないのですが・・・

    詳しい説明は以下の記事を見てください。

    Char 構造体
    https://msdn.microsoft.com/ja-jp/library/system.char(v=vs.100).aspx

    Shift_JIS の 1 バイト文字を「半角文字」、2 バイト文字を「全角文字」といってますか?

    とすると、Shift_JIS に含まれない文字(サロゲートも)はどう考えるのですか?
記事No.81233 のレス /過去ログ138より / 関連記事表示
削除チェック/

■97733  Re[5]: 【ExcelVBA】行内の黄色セルのカウント
□投稿者/ 工場プログラマー -(2021/07/07(Wed) 08:43:03)
    No97721 (魔界の仮面弁士 さん) に返信
    > ■No97715 (工場プログラマー さん) に返信
    >>いろいろやってみたんですけど1列ずつ調べることしかできなくて、、
    >
    > 残念ながら、一つずつ調べていくしか無いと思います。
    >
    > セル値に対する判定処理であれば、データ構造上比較的容易に処理できますが、
    > セル色に対する判定処理は一括で行えません。ワークブックを作る際には
    > 「色」を識別用途にはせず、セル値として作りこんだ方がプログラム的には処理しやすいです。

    なるほど、色の判定は難しそうなんで別の方法も考えてみます。
    >
    > A 列が黄色だったらどうするんだろう…という思いや、
    > 列数の上限なし(16384列目まで)なのかといった疑問はありますが、それはさておき。

    すいません。列の指定がなかったですね、4列目から最終行です。

    > セルの色といっても、「パターンの色」「塗りつぶしの背景色」「文字色」「各罫線の色」などが
    > ありますが、今回は背景色でしょうか。

    背景色です。

    > 条件付き書式による色変化も考慮するとなれば、使用するのは必然的に
    > .DisplayFormat.Interior.Color プロパティ (あるいは同 ColorIndex) になるでしょう。
    >
    > 条件付き書式を使っていない場合は GET.CELL(63, セル) マクロという選択肢もありますが、
    > 大量に使うとメモリ不足で動かなくなるので実質的に使えないと思います。
    >
    >
    > そして Interior オブジェクトにせよ GET.CELL マクロにせよ、
    > 複数のセル範囲を一括して処理することはできません。
    >
    > 処理速度が懸念されますが、ループ処理で一つずつ見ていくしか無いと思いますよ。

    そこまで多いデータ量ではないんで頑張ってみますね。
記事No.97715 のレス /過去ログ169より / 関連記事表示
削除チェック/

■97735  Re[6]: 【ExcelVBA】行内の黄色セルのカウント
□投稿者/ 魔界の仮面弁士 -(2021/07/07(Wed) 09:58:38)
    2021/07/07(Wed) 11:42:25 編集(投稿者)

    No97733 (工場プログラマー さん) に返信
    > 列の指定がなかったですね、4列目から最終行です。

    4「列」目から最終「行」、という表現に違和感が…。

    「1 行目以降、最終行まで」の各行を
    「4 列目以降、最終列まで」の範囲で調べていくということですかね?


    Option Explicit

    Public Sub Wankuma97715(Optional ByVal targetSheet As Excel.Worksheet)
      Const CELL_MARK_COLOR As Long = vbRed
      Const CELL_FIND_COLOR As Long = vbYellow  '探索対象の色
      Const CELL_FIND_COUNT As Long = 4      '探索を打ち切る数(1以上)
      Const START_ROW As Long = 1         '探索開始行(1以上)
      Const START_COL As Long = 4         '探索開始列(2以上)

      If targetSheet Is Nothing Then
        Set targetSheet = ThisWorkbook.ActiveSheet
      End If
      Dim rng As Excel.Range
      Set rng = targetSheet.UsedRange

      ' A 列の背景色を事前にクリアしておく
      targetSheet.Columns(1).Interior.ColorIndex = xlColorIndexNone

      Dim rowIndex As Long, colIndex As Long
      Dim colorCount As Long
      For rowIndex = WorksheetFunction.Max(rng.Row, START_ROW) To rng.Row + rng.Rows.Count - 1
        colorCount = 0
        For colIndex = START_COL To rng.Column + rng.Columns.Count - 1
          If targetSheet.Cells(rowIndex, colIndex).DisplayFormat.Interior.Color = CELL_FIND_COLOR Then
            colorCount = colorCount + 1   '該当する背景色を発見
            If colorCount >= CELL_FIND_COUNT Then
              '既定数に達したので A 列を着色
              targetSheet.Cells(rowIndex, 1).Interior.Color = CELL_MARK_COLOR
              'この行の探索を打ち切って次行へ
              Exit For
            End If
          End If
        Next
      Next
    End Sub
記事No.97715 のレス /過去ログ169より / 関連記事表示
削除チェック/

■97752  Re[7]: 【ExcelVBA】行内の黄色セルのカウント
□投稿者/ 工場プログラマー -(2021/07/08(Thu) 08:47:25)
    No97735 (魔界の仮面弁士 さん) に返信
    > 2021/07/07(Wed) 11:42:25 編集(投稿者)
    >
    > ■No97733 (工場プログラマー さん) に返信
    >>列の指定がなかったですね、4列目から最終行です。
    >
    > 4「列」目から最終「行」、という表現に違和感が…。
    >
    > 「1 行目以降、最終行まで」の各行を
    > 「4 列目以降、最終列まで」の範囲で調べていくということですかね?

    ごめんなさい、4行目から最終行といいたかったです、、

    > Option Explicit
    >
    > Public Sub Wankuma97715(Optional ByVal targetSheet As Excel.Worksheet)
    >   Const CELL_MARK_COLOR As Long = vbRed
    >   Const CELL_FIND_COLOR As Long = vbYellow  '探索対象の色
    >   Const CELL_FIND_COUNT As Long = 4      '探索を打ち切る数(1以上)
    >   Const START_ROW As Long = 1         '探索開始行(1以上)
    >   Const START_COL As Long = 4         '探索開始列(2以上)
    >
    >   If targetSheet Is Nothing Then
    >     Set targetSheet = ThisWorkbook.ActiveSheet
    >   End If
    >   Dim rng As Excel.Range
    >   Set rng = targetSheet.UsedRange
    >
    >   ' A 列の背景色を事前にクリアしておく
    >   targetSheet.Columns(1).Interior.ColorIndex = xlColorIndexNone
    >
    >   Dim rowIndex As Long, colIndex As Long
    >   Dim colorCount As Long
    >   For rowIndex = WorksheetFunction.Max(rng.Row, START_ROW) To rng.Row + rng.Rows.Count - 1
    >     colorCount = 0
    >     For colIndex = START_COL To rng.Column + rng.Columns.Count - 1
    >       If targetSheet.Cells(rowIndex, colIndex).DisplayFormat.Interior.Color = CELL_FIND_COLOR Then
    >         colorCount = colorCount + 1   '該当する背景色を発見
    >         If colorCount >= CELL_FIND_COUNT Then
    >           '既定数に達したので A 列を着色
    >           targetSheet.Cells(rowIndex, 1).Interior.Color = CELL_MARK_COLOR
    >           'この行の探索を打ち切って次行へ
    >           Exit For
    >         End If
    >       End If
    >     Next
    >   Next
    > End Sub

    参考にしてこんな感じで作れました。

    Dim i, j, iRow, MaxRow, MaxCol, yellow_cnt As Long

    MaxRow = Cells(Rows.Count, 4).End(xlUp).Row
    MaxCol = Cells(7, Columns.Count).End(xlToLeft).Column
    iRow = 7

    For i = 7 To MaxRow
    For j = 4 To MaxCol                 '列の端までいったら抜ける
    If Cells(iRow, j).Interior.ColorIndex = 6 Then  '黄色の判定
    yellow_cnt = yellow_cnt + 1         '行内の黄色セルをカウント
    If yellow_cnt >= 4 Then           '4以上で1列目を背景色を赤色に変更
    Cells(iRow, 1).Interior.ColorIndex = 3
    End If
    End If
    Next j

    iRow = iRow + 1                     '次の行へ
    yellow_cnt = 0                      'カウントを0に戻す

    Next i

    皆さん、たくさんのご回答ありがとうございました。
記事No.97715 のレス / END /過去ログ169より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -