
No.5ベストアンサー
- 回答日時:
#既に種々の回答が付いていますが、お示しのコードの「図」を拝見して考えられることを少し。
●1)先ず、「p=array.indexof(str,"い")」のところが赤くなっていますが、これはコンパイルエラーですよね。
「array」という言葉は予約語(Array 関数)であるため、変数としては使えないはずです。
試しに、「Dim array as Object」などと書こうとすると、「array」の部分が選択された状態で、「コンパイルエラー: 修正候補: 識別子」と表示されます。
http://officetanaka.net/excel/vba/error/compilat …
●2)次に、「indexof」という関数自体についてですが、
Sub Macro1()
Dim myAL As Object
Set myAL = CreateObject("System.Collections.ArrayList")
For i = 1 To 3
myAL.Add Mid("あいう", i, 1)
Next i
p = myAL.indexof("い", 0) + 1
MsgBox p & "番目"
End Sub
みたいな使い方なら動かすことはできなくはありません。
しかし、pucho3338 さんがお示しのコード
p = indexof(str, "い")
に書かれているような、第1引数が「配列」、第2引数が「配列の要素」となるっているものが、どの言語の [IndexOf メソッド] なのかが判りかねます(言語によって引数の数や種類が異なる)。
http://social.msdn.microsoft.com/Search/ja-JP?qu …
しかも、次行には、
p = array.indexof(str, "い")
というように、関数の前にオブジェクト(array)が配置されていますが、(1)で書きましたように、この行も動かないはずです。
この2行を拝見しただけでも、まともに動くコードとは思えませんので、これは、「友人に頼まれ修正」する前のコードではなくて、pucho3338 さんご自身が、修正時点でつまづかれたところだけを抜き書きされたコードではないかと存じますが、いかがでしょうか?
●3)この「コンパイルエラー: Sub または Function が定義されていません。」エラーが出ないようにするためには、下記のいずれかの処置がされている必要があるかと存じます。
・何かのライブラリに参照設定を施す。
・[CreateObject 関数] で ActiveX オブジェクトへの参照を作成する。
・別途、下記のようなユーザー定義関数が定義されている。
Function indexof(myArr, element)
For i = 0 To UBound(myArr)
If myArr(i) = element Then Exit For
Next
indexof = i + 1
End Function
●4)しかし、
p = array.indexof(str, "い")
という書き方から見ると、求める「p」は「2」ではないかと存じますが、その「答え」が欲しいだけでしたら、わざわざ関数を作らなくても、
p = Application.Match("い", str, 0)
でイケルかと存じますが、実は、「IndexOf メソッド」だけではなくて、「Sort メソッド」や「Contains メソッド」などが使いたいというようなことでしたら、
http://social.msdn.microsoft.com/Search/ja-JP?qu …
に検索された「ArrayList クラス」を使うことになろうかと存じます。
回答ありがとうございます。
説明不足でした、すみません。
私が p = array.indexof(str, "い") で欲しかった値は
str の中にある "い"の番号(何番目)です。
For文やIfを使えば割り出せるんですが、なんとか1文で出来ないか、できるはず!って思った為質問しました。
もともと.Netでの開発をしていたので「できるはず!」って思ったのかもしれません。
DOUGLAS_さんの
p = Application.Match("い", str, 0)で欲しかった答えが出ました。
Application.Matchという方法があるなんて知りませんでした。
ベストアンサーにさせていただきます。
No.4
- 回答日時:
VBAだから、DOT NET の関数やオブジェクトは使えません。
与えられた文字列配列の中から参照文字列を検索して、要素位置を返す関数を作ってください。
Private Function ArraySearch(arrStr() as string, refStr as String) As integer
Dim posL As Integer
Dim posU As Integer
Dim pos As Integer
posL = LBound(arrStr)
posU = UBound(arrStr)
ArraySearch = -1
For pos = posL To posU
If arrStr(pos) = refStr Then
ArraySearch = pos
End If
Next pos
End Function
※テキストエディタ上で書いたので、ステートメントや関数が間違っているかも知れません。
確かに For文、IF文の組み合わせで検索できますが、面倒なので1文くらいで検索できないかなー?と思ってました。
回答ありがとうございます。
No.3
- 回答日時:
Access2010のVBAのヘルプだと
Execute メソッド、Requery メソッド、および Clear メソッドの使用例 (JScript)
が載っていました。
もしかしたら、ツール→参照設定の、Microsoft_JSCriptにチェックを入れれば使えるようになるかも。
少し関係ありそうな?処
http://iphone-dev.doorblog.jp/archives/26337466. …
もし、JSCript を使っているのがここだけなら
参照リンク先にもあるようにFor ~Next でループして探しても・・・と思います。
参照の追加でどうにかなるだろうと思ってましたがダメでした。
VB.Netで出来たので、マクロでもできると思ったんですが。。。
回答ありがとうございます。
No.2
- 回答日時:
No1です。
あとの可能性としてはユーザー定義関数を
削除(あるいは未作成・未コピペ)したとか???
どっちにしても修正元がどうなっているのか
その友人に詳しく聞いてみないと。。。。
No.1
- 回答日時:
画像が良く見えないけどVBAでは
.NET FrameworkのArray.IndexOf メソッド
http://msdn.microsoft.com/ja-jp/library/system.a …
は使えないのでは?
中には使えるものもあるみたいですが。
.NET Frameworkを使う
http://officetanaka.net/excel/vba/tips/tips98.htm
⇒検証していないけどArrayListだと使えるかな?
Array.IndexOf は使えないんですね。
もともと.netで開発していた者で、
「構造体内の検索くらいできるだろう!」って考えがあったので・・・
回答ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelについて質問です。 シート1の検索値例えば *ABC* をシート2.3.4から検索して、シ 5 2023/02/17 23:30
- Excel(エクセル) マクロVBAのフォルダ階層別で検索の方法 4 2022/04/03 23:23
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Visual Basic(VBA) VBAでPDFのアクティブページ番号取得 1 2023/05/25 12:41
- Visual Basic(VBA) Excel VBAのリストボックスの値を他のフォームに反映させる方法を教えてください。 2 2023/07/14 14:06
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
- Excel(エクセル) エクセルVBAについて質問です。 2 2022/12/09 17:59
- その他(Microsoft Office) Windows Update 後、Office2019(Word、Excelなど)が消えた 4 2023/01/14 10:28
- Excel(エクセル) 重複したデータ(空白は除く)のVBA表記について 4 2022/08/15 07:28
- その他(データベース) Excel VBA 転記について 1 2022/04/20 16:55
このQ&Aを見た人はこんなQ&Aも見ています
-
ショボ短歌会
ひどい短歌を詠んでください。
-
「これはヤバかったな」という遅刻エピソード
寝坊だったり、不測の事態だったり、いずれにしても遅刻の思い出はいつ思い出しても冷や汗をかいてしまいますよね。
-
最速怪談選手権
できるだけ短い文章で怖がらせてください。
-
一番好きなみそ汁の具材は?
みんなで大好きなみそ汁の具材について語り合おうよっ!
-
人生で一番お金がなかったとき
人生で一番お金がなかったときって、どんなときでしたか?
-
構造体配列の特定のメンバーをFor~Eachで
Visual Basic(VBA)
-
構造体配列内の文字列検索のよい方法を教えてください
C言語・C++・C#
-
クラスのプロパティに構造体を使いたい。
Visual Basic(VBA)
-
-
4
VBA でxmlの全要素・属性の読み込み
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
VBPをダブルクリックするとたま...
-
Windowsプログラムから音を出す...
-
PDFファイルから別ウィンドウで...
-
ExcelVBAのプログラムをJavaへ変換
-
Application.Wait の参照設定
-
java 次の機能を有するメソッド...
-
エクセルのマクロでプリンタを...
-
【sendkeysメソッドが動かずに...
-
VB.NETで色を比較するIF文を...
-
eclipseでabstractクラスをデバ...
-
pythonのプログラムについての...
-
ポストバック時のDatasourceバ...
-
C#の動的キャスト
-
eclipse-Tomcatでのデバッグに...
-
タブコントロールの問題 (VB)
-
VBAでSaveAs使用し、指定してい...
-
Visual Basic 2005 でのデリゲ...
-
javascriptからjavaを呼び出したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
DataGridViewでセルクリックイ...
-
ウィンドウを最前面にできません
-
コマンドプロンプト実行後に画...
-
VBPをダブルクリックするとたま...
-
【sendkeysメソッドが動かずに...
-
final修飾子を使っているのに、...
-
Application.Wait の参照設定
-
javascriptからjavaを呼び出したい
-
VBA コピーが出来ません…!
-
Excel VBA でExcelを終了したい...
-
エクセルVBAにおけるON TIMEメ...
-
JSPで<SELECT>の中にDBから持っ...
-
Labelコントロールに数字を代入...
-
boolean型のフィールドとゲッタ...
-
eclipse-Tomcatでのデバッグに...
-
C#.net Define文
-
[VBA]GetSaveAsFilenameメソッ...
-
CALLされていないメソッドを見...
-
エクセルのマクロでプリンタを...
おすすめ情報