Excel VBA質問箱 IV

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

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


4060 / 13644 ツリー ←次へ | 前へ→

【58615】Left関数はどうすれば? わかめ 08/10/31(金) 14:34 質問[未読]
【58616】Re:Left関数はどうすれば? こぎつね 08/10/31(金) 14:54 発言[未読]
【58617】Re:Left関数はどうすれば? わかめ 08/10/31(金) 15:47 質問[未読]
【58618】Re:Left関数はどうすれば? かみちゃん 08/10/31(金) 15:55 発言[未読]
【58622】Re:Left関数はどうすれば? わかめ 08/10/31(金) 16:13 お礼[未読]
【58619】Re:Left関数はどうすれば? neptune 08/10/31(金) 16:03 回答[未読]
【58621】Re:Left関数はどうすれば? neptune 08/10/31(金) 16:10 発言[未読]
【58623】Re:Left関数はどうすれば? わかめ 08/10/31(金) 16:20 お礼[未読]
【58620】Re:Left関数はどうすれば? neptune 08/10/31(金) 16:06 発言[未読]

【58615】Left関数はどうすれば?
質問  わかめ  - 08/10/31(金) 14:34 -

引用なし
パスワード
   ワークシート関数のLeftをVBAで使いたいのですが、
うまくいきません。
VBAにもLeft・・・関数?メソッド?らしきものがありますが、
それもうまくいきません。
要は左から指定文字数分切り出したいのですが、
どうすればよいのでしょうか?
よろしくおねがいします。

【58616】Re:Left関数はどうすれば?
発言  こぎつね  - 08/10/31(金) 14:54 -

引用なし
パスワード
   ▼わかめ さん:
>ワークシート関数のLeftをVBAで使いたいのですが、
>うまくいきません。
>VBAにもLeft・・・関数?メソッド?らしきものがありますが、
>それもうまくいきません。
>要は左から指定文字数分切り出したいのですが、
>どうすればよいのでしょうか?
>よろしくおねがいします。

Dim st As String
st = "abcdefg"
MsgBox Left(st, 3) '左から3文字切り出し

とは違うのでしょうか。

【58617】Re:Left関数はどうすれば?
質問  わかめ  - 08/10/31(金) 15:47 -

引用なし
パスワード
   >Dim st As String
>st = "abcdefg"
>MsgBox Left(st, 3) '左から3文字切り出し
>
>とは違うのでしょうか。

ご回答ありがとうございます。
そのようなかんじの例がヘルプにあったので、似せてやってみた
つもりです。
恥ずかしながら。。。
  ↓

  For countI = 2 To inLastRow
    hani = "U" & countI
    Set myRange = Ish.Range(hani)
    ichi = Application.WorksheetFunction.FindB(".", myRange, 1)
    
    ichi2 = ichi - 1
    Set moji = Ish.Range(hani)
    IgenshoCD = Ish.Range(hani).Left(moji, ichi2)

前半はなぜかうまくいき、ピリオドの位置を取得しています。
後半で、ピリオドより左の文字列を切り出そうとしてますがダメです。
(型が違うと言われる)
型とかオブジェクトとかよくわかっていません。
よろしくお願いします。

【58618】Re:Left関数はどうすれば?
発言  かみちゃん E-MAIL  - 08/10/31(金) 15:55 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>    IgenshoCD = Ish.Range(hani).Left(moji, ichi2)
>
>後半で、ピリオドより左の文字列を切り出そうとしてますがダメです。
>(型が違うと言われる)

このコード何をしようとしているかわかっていますか?

変数 moji は、どのように宣言されていますか?

Ish.Range(hani)
は、
Set moji = Ish.Range(hani)
で、オブジェクト(セルとか図形)変数mojiに代入しています。

そのため、Ish.Range(hani)の値は、
Set moji = Ish.Range(hani)
をしているならば、
moji.Value
で取得できますし、
Set moji = Ish.Range(hani)
をしていないならば、
Ish.Range(hani).Value
で取得できます。

そのため、
 IgenshoCD = Ish.Range(hani).Left(moji, ichi2)
ではなく
 IgenshoCD = Left(moji.Value, ichi2)

 IgenshoCD = Left(Ish.Range(hani).Value, ichi2)
になりますし、

ichi2 の部分は、ichi1 - 1 でもいいと思います。

もう少し言うならば、
Ish.Range(hani)
の部分は、
Ish.Range("U" & countI)
でもいいと思います。

【58619】Re:Left関数はどうすれば?
回答  neptune  - 08/10/31(金) 16:03 -

引用なし
パスワード
   ▼わかめ さん:
こんにちは

どこでエラーが出たか書きましょうね。
探すのが面倒ですから。
>そのようなかんじの例がヘルプにあったので、似せてやってみた
>つもりです。
>恥ずかしながら。。。
初心者の方に良くあることですが、簡単なサンプルで質問して、後で
実は、、、ってな感じで後出し質問のパターンですが、今度からは
最初から自分のコードを提示して、質問しましょう。その方がお互い
楽チンです。

で、本題ですが、
>    IgenshoCD = Ish.Range(hani).Left(moji, ichi2)
これですか?

先ず、すべき事はrangeにカレットを当てて、F1を押しましょう。
そうしたら、rangeオブジェクトのHelpが出てくると思いますから、上の端に
あるプロパティとメソッドの中にLeftがあるかどうか確認しましょう。
leftプロパティってのがありますね。今度はそれを見てみましょう。

ご自分が、したい処理、使い方が違うという事に気が付くと思います。

そうしたら、Helpに書いている構文に従って、デバッグしましょう。

構文
Left(string, length)

戻り値は
バリアント型 (内部処理形式 String の Variant) の値を返します。文字列の左端から指定した文字数分の文字列を返します。

頑張ってね。

【58620】Re:Left関数はどうすれば?
発言  neptune  - 08/10/31(金) 16:06 -

引用なし
パスワード
   グダグダと書いていたらかみちゃんさん が、親切なResを既に書かれてますね。
私のも害にはならんから、まぁ、置いときましょう。

【58621】Re:Left関数はどうすれば?
発言  neptune  - 08/10/31(金) 16:10 -

引用なし
パスワード
   度々申し訳ない
書き忘れていました。

私の先の書き込み
>構文
>Left(string, length)
はLeft関数のものです。

【58622】Re:Left関数はどうすれば?
お礼  わかめ  - 08/10/31(金) 16:13 -

引用なし
パスワード
   細やかなご指導ありがとうございます。
全くもって、1ミリずつ処理をしているようなダサダサな
コーディングです。
それはわかっているけれど、私が1行で記述すると、なぜか
エラーになるのです。。
今後頑張ります!
ありがとうございました。
また「絶対」質問させて頂きますので、その際は是非是非よろしく
お願い致します。

【58623】Re:Left関数はどうすれば?
お礼  わかめ  - 08/10/31(金) 16:20 -

引用なし
パスワード
   何度もありがとうございます。

>最初から自分のコードを提示して、質問しましょう。その方がお互い
>楽チンです。
おっしゃる通りです。
あまりにダサダサのコーディングで恥ずかしくて躊躇しましたが。。
今後はそうします!

neptune さんに教えて頂いたのは、私にはなかなかムズカシイお話です。
ちょっとお時間頂いてやらせて頂きます。
ありがとうございました!

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