[[20200310173744]] 『VBA 大文字』(飴ちゃん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBA 大文字』(飴ちゃん)

こんにちは

  For i = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
          For j = 1 To Wsb.Cells(Wsb.Rows.Count, 1).End(xlUp).Row
              If .UCase(Cells(i, 8)) = Wsb.UCase(Cells(j, 1)) Then
                 .Cells(i, 15) = Date
                 .Range(Cells(i, 1), Cells(i, 15)).Interior.ColorIndex =45            
                     End If
                Next
    Next

このコードのUCaseを使用して小文字英字を大文字にして
処理しようとしましたが
使い方がちがうようでエラーになります。
どなたか英字小文字を大文字に変換する方法をご教授ください。

宜しくお願い致します。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


UcaseはVBAの関数なので、頭にドットとか余計なものは必要ないです。

(γ) 2020/03/10(火) 17:51


VBAの標準命令と、シート等のオブジェクトを、混同してしまっているようですね。

UCaseにはピリオドが要らないのと、逆に引数指定しているCells(何箇所かあり)にはピリオドが必要なのでは?
(???) 2020/03/10(火) 18:08


 If UCase(Cells(i, 8)) = Wsb.UCase(Cells(j, 1)) Then

これでよいのでしょうか?
(飴ちゃん) 2020/03/10(火) 19:32


Wsb.UCaseのことろはまずいです。

Wsbはワークシートを表す変数ですか?
ワークシートオブジェクトのメソッドなら、そういう書き方になりますが、
UCaseはワークシートとは関係なく、VBAにもともとある関数です。
したがって、それはアウト。
単に UCaseだけでいい。(左辺と同じ使い方でよい)

むしろ、
Cells(i, 8)やCells(j, 1)にワークシート指定が必要じゃないですか?
(γ) 2020/03/10(火) 19:40


もともとのコードで何が With ○○ とされているのか不明ですが、
Wsbとは別のシートでしょうか?
であれば、

If UCase(.Cells(i, 8)) = UCase(Wsb.Cells(j, 1)) Then
ではないですか?

余談です。
VBAで使える道具には色々な種類のものがあります。

VBAは、
(1)VB6(Basic言語)というプログラム言語 に、
(2)Excelをコントロールするために導入されたオブジェクト指向的仕組み
  を加えたものです。
(3)さらに、(2)の中には、WorksheetFunctionオブジェクトのメソッドとして、
  ワークシート関数(全てではありませんが)が利用できるようにされています。

大きく分けて、これらの3つの種類があると考えてよいと思います。

今回のUCaseは、上記の(1)に含まれるものです。一番古い地層に属するものですね。
どんな種類のものがあるかというと、それは、ヘルプに書かれています。

VBAのヘルプの「Visual Basic ランゲージレファレンス」の中に
「関数」という分類があり、ここに纏められていますので、
こんな関数があるのかと、ざっと見ておくとよいでしょう。

(γ) 2020/03/10(火) 21:46


ありがとうございます。
(飴ちゃん) 2020/03/11(水) 06:10

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.