Excel VBA質問箱 IV

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

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


36 / 12962 ツリー ←次へ | 前へ→

【78755】型が一致しないエラーについて VBA勉強中 17/1/14(土) 11:47 質問[未読]

【78756】Re:型が一致しないエラーについて γ 17/1/14(土) 13:40 回答[未読]
【78757】Re:型が一致しないエラーについて VBA勉強中 17/1/14(土) 14:14 お礼[未読]
【78758】Re:型が一致しないエラーについて γ 17/1/14(土) 14:42 発言[未読]
【78759】Re:型が一致しないエラーについて γ 17/1/15(日) 9:03 回答[未読]

【78756】Re:型が一致しないエラーについて
回答  γ  - 17/1/14(土) 13:40 -

引用なし
パスワード
   つっこみどころがいくつかあります。

型の不一致ですが、それは、pos1が結合セルの場合、
pos1.Valueが配列になるからです。

配列と一つの値を = で比較することはできません。

まずそのことを念頭におくと、
  Set pos1 = Cells(pos1row, pos1col).MergeArea
  Set pos1 = pos1(1)
としてしまう方法があります。
(最初だけでなく、複数箇所変更が必要です)

その他。

(1)1行ずつ行送りすると無駄かもしれない。
  pos1row = pos1row + sh1.Cells(pos1row, pos1col).MergeArea.Rows.Count
  とするとよいかも。

(2) name1,name2などを繰り返しの中で定義する必要はない。

(3) memo = "ee" などとダイレクトに文字をコードに書くなら、
  name1 などと変数を使わないほうが直感的かもしれない。
  memo に書き込む値も文字列変数で定義するか、いずれ統一が必要。

(4)Case Is = name1 は、普通は Case name1 で良い。

(5)投稿にあたっては、コピーペイストしてください。
  memo = bb1" & Right(pos1.Offset(, 3).Value, 5) & "bb2" _
                & Left(pos1.Offset(, 3).Value, 4) & "bb3"
  などというのはコンパイルエラーになる。
(6)インデントが恣意的です。タブを使ってください。

【78757】Re:型が一致しないエラーについて
お礼  VBA勉強中  - 17/1/14(土) 14:14 -

引用なし
パスワード
   ▼γ さん:
ありがとうございます!
型の不一致の問題、その他の問題も解決し意図した通りに動きました!
>まずそのことを念頭におくと、
>  Set pos1 = Cells(pos1row, pos1col).MergeArea
>  Set pos1 = pos1(1)
>としてしまう方法があります。
>(最初だけでなく、複数箇所変更が必要です)
変数名(インデックス番号)で扱うことができるのですね
また、配列について調べていると最初に同じ型、同じような変数をたくさん定義するのがいかに無駄になるかわかりました。ありがとうございます

今回は無事に動きましたので特に修正はしないと思いますが、次回からはタブ、配列を念頭に置いて、見やすいものをかけるように心がけます。

ありがとうございました!!

【78758】Re:型が一致しないエラーについて
発言  γ  - 17/1/14(土) 14:42 -

引用なし
パスワード
   ああ、単に
Set pos1 = Cells(pos1row, pos1col)
だけで良かったですね。

次のpos1に進めるときは、
提案の形で、結合セルの行数を調べたほうがよいとは思うが。

【78759】Re:型が一致しないエラーについて
回答  γ  - 17/1/15(日) 9:03 -

引用なし
パスワード
   >型の不一致の問題、その他の問題も解決し意図した通りに動きました!
どんな風にされたのか、折角ですから示して欲しいものですね。
それは閲覧しているかたにも参考になりますしね。

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