初歩的な質問で申し訳ありません。
文字列型のデータを1文字ずつ順番に配列に格納する方法を教えてください。
よろしくお願いしますっ。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

変数名を間違えてしまいました。

スイマセン
strAA を strA に変えてください。

一応もう一度、、、

dim arr() '文字列を入れる配列(動的配列)
dim strA as string '文字列が入っている配列。
dim i as intger 'カウンタ

redim arr(len(strA))
for i = 1 to len(strA)
arr(i-1) = mid(strA,i,1)
next i
    • good
    • 0
この回答へのお礼

ありがとうございます!!
問題はすっかりくっきり解決しましたっ!!

お礼日時:2001/12/09 20:21

ごくごく簡単に行いますと



dim arr() '文字列を入れる配列(動的配列)
dim strA as string '文字列が入っている配列。
dim i as intger 'カウンタ

redim arr(len(strAA))
for i = 1 to len(strA)
arr(i-1) = mid(strAA,i,1)
next i

こんな感じでしょうか。すいません未検証です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

QVB上で実行中の無限ループの止め方

今まで、CUIベースのBASICでのプログラムの経験はあるのですが
Visual系のBASICは初心者です。
原因はわかっているのでプログラムの修正はできるのですが
VB上でコンパイルして実行したときに無限ループに陥ってしまって
どうにもプログラムをとめられなくなります。
そんなことがないように、実行前に全てのプロジェクトを保存して
いますので、そんなに実害はないのですが、どうすればとめられるのでしょう・・
今現在は、タスクマネージャーから強制終了させています。

Aベストアンサー

無限ループの一番内側に
DoEvents
を入れておくと、ウィンドウ切替え->デバッガ終了操作が出来ますよ

危なそうなとこにも入れておくと、何かと安心です。

QArrayListを使った多次元配列の作成について

ArrayListで可変長配列を扱っているのですが、
2次元可変長配列を用いる必要が出てきたので、
下記のように変更したのですがうまくいきません。
何が悪いのか教えていただけませんでしょうか?

-----------------------------------------
ArrayList cars=new ArrayList();
cars.add("フェラーリ");
cars.add("ポルシェ");
cars.add("メルセデスベンツ");
for(int i=0;i<cars.size();i++){
 String str=(String)cars.get(i);
 System.out.println(str);}
-----------------------------------------
上記から下記のように変更しました。
-----------------------------------------
ArrayList[] cars=new ArrayList[3];
cars[0].add("フェラーリ");
cars[0].add("ポルシェ");
cars[0].add("メルセデスベンツ");
for(int i=0;i<cars[0].size();i++){
 String str=(String)cars[0].get(i);
 System.out.println(str);}
-----------------------------------------
エラーは「Exception in thread "main" java.lang.NullPointerException」です。
どうやら初期配列が10ではなく3となってしまっているようです。

ArrayListで可変長配列を扱っているのですが、
2次元可変長配列を用いる必要が出てきたので、
下記のように変更したのですがうまくいきません。
何が悪いのか教えていただけませんでしょうか?

-----------------------------------------
ArrayList cars=new ArrayList();
cars.add("フェラーリ");
cars.add("ポルシェ");
cars.add("メルセデスベンツ");
for(int i=0;i<cars.size();i++){
 String str=(String)cars.get(i);
 System.out.println(str);}
---------------------------------------...続きを読む

Aベストアンサー

こんにちは。

>ArrayList[] cars=new ArrayList[3];
はArrayList型のオブジェクトのインスタンス
を格納する箱を3個作成しただけなので、
この時点では、
cars[0] = null
cars[1] = null
cars[2] = null
となっています。ですから、当然
cars[0].add("フェラーリ");
などとやると、NullPointerExceptionが
発生します。これをさけるには、
cars[0] = new ArrayList();
cars[1] = new ArrayList();
cars[2] = new ArrayList();
とする必要があります。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。

Q長い文字列を配列に入れるには?

VBから長い文字列を送って,c言語で受け取りたいのですが,うまく配列に入れることが出来ません.文字列サイズは最低でも4000バイト必要です.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//VBから送られてくるデータ
char getch[4000]="start1T\tpose 0 0 -5 0 -5 0 -5 0 -5 0 0 0 0 0\ ..省略.. 25\t\n";

void main(void){
char *token;
char seps[]="\t\n";
FILE *pose;
pose=fopen("pose.txt","a");
if((token=strtok(getch,"\t"))==NULL){
printf("Error File1\n");
exit(1);
}
printf("%s\n",token);
while(strcmp(token,"\n")!=0){
token=strtok(NULL,"\t");
fputs(token,pose);
fputs("\n",pose);
printf("%s\n",token);
}
fclose(pose);
}

VBから長い文字列を送って,c言語で受け取りたいのですが,うまく配列に入れることが出来ません.文字列サイズは最低でも4000バイト必要です.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//VBから送られてくるデータ
char getch[4000]="start1T\tpose 0 0 -5 0 -5 0 -5 0 -5 0 0 0 0 0\ ..省略.. 25\t\n";

void main(void){
char *token;
char seps[]="\t\n";
FILE *pose;
pose=fopen("pose.txt","a");
if((token=strtok(getch,"\t"))==NULL){
printf("Error File1\n");
e...続きを読む

Aベストアンサー

>うまく配列に入れることが出来ません.
とは具体的にどうなるのでしょう? 何が期待とは異なる動作なのですか?

例文の段階ですでに上手く動かないのなら,単にC言語のロジックが誤っている,思い通りのロジックが書けていないだけでしょうし。

デバッガでプログラム動作中の変数の内容を監視し,どこでおかしくなるのか,どこで期待とは異なる動作となるのか,きっちり調査しましょう。

Qエクセル(VBA)の空白配列の削除について

エクセルのVBAで配列を使おうと考えています。
データ配列 = Split(データ源, Chr(13))
として、1次元配列に取り込んだところ、chr(10)だけが入力されたデータ配列(?)が出来てしまいました。このデータ配列を詰めたいのですが、何かいい方法が無いでしょうか?教えてください。
元の配列
データ配列(0)  "てすと1"
データ配列(1)  chr(10)
データ配列(2)  "テスト2"
とすれば、
詰めたあと、
データ配列(0)  "てすと1"
データ配列(1)  "テスト2"
となるようにしたいのです。(配列の最大数が減る必要が必ずしもありません。)
for each で回せばいいのでしょうか?
Dim 仮 AS Variant
for Each 仮 In データ配列
   処理をここに書く
Next
では、上手く行きませんでした。
どなたか?詳しい方がいらっしゃいましたら教えてください。宜しくお願い致します。

Aベストアンサー

すみません。コメントが一部不適切でした。

  ' Filter 関数で Chr(10)を含むデータを取り除く



  ' Filter 関数で ・を含むデータを取り除く

の誤りです。もちろん Chr(10) を含むデータを取り除くことも可能です。
これだけだと、しょうもない回答なので、横レスになってしまい、恐縮ですが、、

> 変数をカウント(例:i=i+1)に使わないと分からないのでしょうか?

その場合は、通常 For Each ではなくて、最初から For ~ Next を使います。

> 配列から条件に一致したするものを取得した場合にどの配列番号から取得
> したのか?

Application.Match で調べられます。

> 2バイト文字を使うと誤動作...半分、見栄えや、入力のしやすさだけで、
> 使わないのかと思っていましたが?

例えば、

Dim strText

と宣言してあると、コーディング時に strtext と入力しても自動的に strText
に変換されます。コーディング時に入力のパンチミスを発見できるわけですが、
2バイト文字の場合、この機能は使えません。合理的な理由としてはこれ。

可読性については人それぞれなので、自分で使う分には2バイトを使っても構わ
ないかもしれませんが、私はコメントとコードの境界がなくなって「読み難い」
し、嫌う人は多いです。

2バイト文字の変数やプロシージャ名が原因で誤動作するかどうかについて、
誤動作する可能性があるとの話は聞いたことがあります。しかし、実際に自分で
体験したことはありません。

すみません。コメントが一部不適切でした。

  ' Filter 関数で Chr(10)を含むデータを取り除く



  ' Filter 関数で ・を含むデータを取り除く

の誤りです。もちろん Chr(10) を含むデータを取り除くことも可能です。
これだけだと、しょうもない回答なので、横レスになってしまい、恐縮ですが、、

> 変数をカウント(例:i=i+1)に使わないと分からないのでしょうか?

その場合は、通常 For Each ではなくて、最初から For ~ Next を使います。

> 配列から条件に一致したするものを取...続きを読む

Q3つの表の外部結合

表A、B、Cの3つがあり、Aのすべての行を出力したいと考えています。
外部結合を用いるのだとは思うのですが、3つの表に対して行う場合の
書き方がわからず困っています。
ご教授いただけないでしょうか?
select * from a,b,c
where a.商品ID =b.商品ID (+) and b.商品ID (+) =c.商品ID (+)
としてみましたが、うまくいきませんでした。

Aベストアンサー

ansi構文の趣旨からいえば、結合条件と絞り込み条件は分けて書くので・・

select *
from a
left join b on (a.商品ID =b.商品ID)
left join c on (b.商品ID =c.商品ID)
where a.年月 = 任意の値

と書くのが一般的でしょうね。

QVBAで画像を表示する方法

VBA初心者です。ExcelのVBAでプログラミングの練習をしています。
早速ですが質問させてください。
ユーザーフォーム上にコマンドボタンをクリックすることにより画像を表示させることはできるのですが、これをユーザーフォームを開いた瞬間に自動的に表示させる方法はないのでしょうか?

ちなみに現在は以下のようにしています。
Private Sub CommandButton1_Click()
Image1.Picture = LoadPicture(" ")
End Sub

インターネットで調べてみても見つからないので質問させてもらいました。分かりにくい説明でしたらすみません。

Aベストアンサー

UserFormのinitializeイベントかActivateイベントを使ってください。

Private Sub UserForm_Initialize()
 Image1.Picture = LoadPicture("C:\aaa.jpg")
End Sub

または、

Private Sub UserForm_Activate()
 Image1.Picture = LoadPicture("c:\aaa.jpg")
End Sub

Qプログラム設計書の書き方

僕は新人SEです。
今、上司の方からあるシステムの基本設計書・システム設計書・プログラム設計書を作り、プログラミングまでしてから単体テスト・結合テストもやるように言われています。(全て1人で)

おそらく経験のある方ならすぐにできてしまうようなシステムで、上司の方も勉強のために全てやらせているようです。

今、基本設計書・システム設計書まではなんとかできて、プログラム設計書の作成に取り掛かりたいのですが、初めての経験で実際のプログラム設計書には何をどのように書いているものなのかも全く見当もつかずにいるので全く何も書けません。

上司さんは今週忙しいようで
「来週見てあげるから自分で調べたりしてやってみて」
と言っています。
ですが、全く何もできずにいるのもイヤなので何かそれらしいものでも書いてみたいのですが…プログラム設計書とは何をどう書いてあるものなのでしょうか?

日本語が書いてあるのかプログラムが書いてあるものなのか…
そういったところからわからないので少しでも何か教えていただきたいです。
宜しくお願いします。

Aベストアンサー

こんにちは。
No.1様のご回答通りなのですが会社によって異なります。
というのを踏まえた上で・・・うちではという回答になりますが

・日付 2009/10/10
・版 初版(その後バージョンアップで改定するため、改定ナンバー必須)
・タイトル 企業情報印刷(ここでは決定済み名称)
・発注仕様書ナンバー(正式にお客さまと契約で決めた発注番号を記載)
・作成者 boo_boo_suu
・使用言語 Visual C++
・使用データベース ORACLE
・使用帳票アプリケーション Crystal Reports
・フロー図(Visioで埋め込み図)
・概要説明 
メインメニューから呼び出され企業情報の印刷条件を入力し、クリスタルレポートの帳票情報から企業情報ファイル(KIGYOU_INFO)ファイルを呼び出し印字します。
・全企業情報が一覧で印字可能である。
・特定一企業(企業コード指定)での印字も可能である。
・一企業が指定された場合は企業情報を画面表示する。

-----------------------------------
で・・・・プログラム仕様書はこのくらい。
命令書ですからコードそのものは打ちません。
これみて作ってもらわないといけないので日本語メインです。

あとはDBの仕様書をみてもらったりしてプログラムのローカルルール、画面サイズ、文字サイズ プロシージャ定義やら定数や変数、フォーム、構造体定義書などプログラム書くときの決まりごとに添ってPGさんに打ってもらっています。
一応、図とかつけてみました。(^-^;;
全体の雰囲気はこんな感じだとご理解いただければ幸いです。
ではでは~。

こんにちは。
No.1様のご回答通りなのですが会社によって異なります。
というのを踏まえた上で・・・うちではという回答になりますが

・日付 2009/10/10
・版 初版(その後バージョンアップで改定するため、改定ナンバー必須)
・タイトル 企業情報印刷(ここでは決定済み名称)
・発注仕様書ナンバー(正式にお客さまと契約で決めた発注番号を記載)
・作成者 boo_boo_suu
・使用言語 Visual C++
・使用データベース ORACLE
・使用帳票アプリケーション Crystal Reports
・フロー図(Visioで...続きを読む

QExel VBA 別ブックから該当データを検索し、必要なデータを取得する方法について

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数ではなく、マクロで処理を希望します。

自分では、部品表の商品番号をコピーして、コード一覧表で検索し、検索結果の右隣のセル(B列のコード)の値を部品表のC列に貼り付ければよいかと思い、書いてみたんですが…

Sub 別ブックから貼り付ける()
  Dim 検索する As Long
Windows("部品表.xls").Activate
検索する = cells(i,2).Value
Windows("コード一覧表.xls").Activate
ActiveWindow.SmallScroll Down:=-3
Selection.AutoFilter Field:=3, Criteria1:="=検索する", Operator:= xlAnd

と、してみたものの、検索しても、その検索結果の隣のセルのコードをどうやって取得すればいいのかが、わかりませんでした。

基本事項は本で学びましたが、呪文のようなコードはよく理解できません。懸命にネットで検索して、訳して理解する努力をしてはいますが。

どうぞよろしくお願いします。

部品表というブックがあります
A列に商品名、B列に商品番号が入力してあります。C列のコードは未入力です。
A列     B列     C列      
商品名  商品番号  コード
モータ  U-1325-L  
ホルダ  R-134256

また、コード一覧表という別のブックには、A列に商品番号と、B列にコードが、何千件も入力されています。

やりたいことは
部品表のC列のコード欄に、コード一覧表ブックから商品番号と一致するコードを貼り付けしたいのです。

部品表は、何百種類もありますので、関数...続きを読む

Aベストアンサー

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks.Open("C:\★★\コード一覧表.xls") '★要変更★
 I = 2
 Do While Range("A" & I).Value <> ""
  ThisWorkbook.Worksheets("Sheet1").Range("C" & I).Value = Application.VLookup(ThisWorkbook.Worksheets("Sheet1").Range("B" & I).Value, xlBook.Worksheets("Sheet1").Range("A2:B65535"), 2, 0)
  I = I + 1
 Loop
 xlBook.Close
 Application.ScreenUpdating = True
 MsgBox ("完了")
End Sub

こんにちは。
とりあえず実用性も踏まえました。
メインの動作はワークシート関数のVLOOKUPをVBA上で使用していますので理解はしやすいかと思います。
また、質問文から察するに「部品表.xls」と「コード一覧表.xls」の両方を開いて処理されていますが「コード一覧表.xls」はプログラム内で開いて閉じているので実行するときは「コード一覧表.xls」は閉じて置いてください。
Option Explicit
Sub Sample()
 Application.ScreenUpdating = False
 Dim I As Long
 Dim xlBook
 Set xlBook = Workbooks....続きを読む

QSQLで特定の項目の重複のみを排除した全項目を取得する方法

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のような構造になっている場合に「項目名1」について重複している項目を排除し、結果として


項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 B    え    イ    江

上のようなデータを取得したいのです。
この時に、Aの重複を排除して取得するレコードは1~3行目のどれでもよいです。
また、データを取得する際には必ずそのレコードの「全項目」を取得したいのでDistinctはうまく使えませんでした。

どなたか詳しい方、方法を教えてくださると幸いです。回答お待ちしております。

私は仕事上でデータベースを扱っていて、タイトルのような処理を行う必要があるのですが、いかんせん方法がわからずネット上を検索しても同様だったためここで質問させていただきます。

質問点を簡単に説明いたしますと、
たとえばAというテーブルがあって、

項目名1 項目名2 項目名3 項目名4
 A    あ    ア    亜
 A    い    ア    以
 A    う    ア    宇
 B    え    イ    江
 B    お    イ    尾

上のよ...続きを読む

Aベストアンサー

比較可能で一意性のある値をもてる項目6をテーブルに追加して、

select T.* from T, (select Item1,min(Item6) as Item6 from T group by item1) W where T.item6=W.item6;

――ってやるのが、一番手っ取り早いと思います。
他のところに影響がでないのであればですが。
oracleならrowidを使うとか、レコードの更新時刻を突っ込むとか。


人気Q&Aランキング