いつも大変お世話になっております。
変数(String)にセル範囲が入っています。
例)
TEST(0)="B6:B13"
TEST(1)="B18:B25"
TEST(2)="B30:B37"
TEST(3)="H6:H13"
TEST(4)="H18:H25"
TEST(5)="H30:H35"
・
・
・
これの、同じ列の間のセル範囲を出したいと思っています。
TEST(0)="B6:B13"
TEST(1)="B18:B25" AIDA(0)=B14:B17
TEST(2)="B30:B37" AIDA(1)=B26:B29
TEST(3)="H6:H13"
TEST(4)="H18:H25" AIDA(2)=H14:H17
TEST(5)="H30:H35" AIDA(3)=H26:H29
TEST(6)="H36:H40" AIDA(4)=0
この、AIDAを出すためには
引き算ではダメですよね(Stringのため
何か良い方法があれば教えてください。
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
こんにちは。
>StringやVariantは2GBまでとありました。
>この場合単純計算で10万文字書けるという考えで
>良いのですよね?(もしかしたら計算違いかもしれません)
私の計算でも、同じです。
昔、試したことがありますが、思いの外、取れました。
本来は、データ型を指定したほうが、大きく取れるようですが、必ずしもうまくいくとは限りません。
お分かりになっていることだと思いますが、それは、Variant型でないといけない時があります。
>その場合、SPLIT後、String型やVariant型に保存し、
>セルに書き出すプログラムを書こうと思ってます!
こちらの方は、試していませんが、なんとかなると思っています。
>>で検索し、いくつか、CLSID(クラスID)が出てきます。
>ひとつしか出てきませんでした。
>また、(既定)しかありませんでした。
>何か使い方がおかしいのでしょうか?
いいえ、ふつうの人は、ひとつだけのはずです。私が今使っている、Win7 には、プログラミング言語は、MSC とか、VB.Netとかあるのですが、今は、Turbo C しか入れていないつもりでいるのですが、それでも、いろいろ入っているらしいのです。もう、あれこれ手を出すのは止めにしたいと思っていますのに、つい、VBAに戻ってきてしまいました。Office 2003は、アンイストールしたのですが、残骸が残っている上に、新たにVB6 Runtimeを入れてしまいました。そのせいだと思います。
それはともかく、ブランクがあってVBA関数などは忘れても、基本的なところは忘れていないものなのですね。
回答ありがとうございます!
>こんにちは。
こんにちは!
>私の計算でも、同じです。
>昔、試したことがありますが、思いの外、取れました。
>本来は、データ型を指定したほうが、大きく取れるようですが、必ずしもうまくいくとは限りません。
>お分かりになっていることだと思いますが、それは、Variant型でないといけない時があります。
Variant型で無いといけないときが特に思いつきません…うーん、なんでしょう?
>>その場合、SPLIT後、String型やVariant型に保存し、
>>セルに書き出すプログラムを書こうと思ってます!
>こちらの方は、試していませんが、なんとかなると思っています。
では、この方法で色々変更していきたいと思います^^
>いいえ、ふつうの人は、ひとつだけのはずです。私が今使っている、Win7 には、プログラミング言語は、MSC とか、VB.Netとかあるのですが、今は、Turbo C しか入れていないつもりでいるのですが、それでも、いろいろ入っているらしいのです。もう、あれこれ手を出すのは止めにしたいと思っていますのに、つい、VBAに戻ってきてしまいました。Office 2003は、アンイストールしたのですが、残骸が残っている上に、新たにVB6 Runtimeを入れてしまいました。そのせいだと思います。
そうでしたか。
すごいですね・・・色々出来るんですね!
私はVBAもままならないですが…VBAから幅を広げ、どんどん便利なものを作れるようC言語とかも勉強したいと思います!
>それはともかく、ブランクがあってVBA関数などは忘れても、基本的なところは忘れていないものなのですね。
そうですね!私もExcelの関数(便利な部分?)とか、ちゃんと覚えてますね^^
ありがとうございました!
No.2
- 回答日時:
こんにちは。
>物理的に動かし?間を考えるのですね!
昔、そんなことをやった覚えがあるので、今回もその手法を使ったまでです。
これは、ソートした時に、手では順に選べるのに、なぜ、マクロでは出来ないか考えた時のアイデアが発端です。
>レジストリエディタをいじると書いてありますが、そこまでしないと使えないものなのですか?
セキュリティの強化された時に、「信頼されていません」の警告が出るようになったようですね。
私がやっていた時代にはありませんでした。もともと、Accessでは、様々なコントロールを使わざるを得なくて、覚えました。今回は、失礼しました。
その上で、レジストリをいじるのは無理ですか?
http://www.ka-net.org/office/of13.html
ここには、Winsoc だけで、他については詳しく書かれていませんが、
手順としては、RegEdit を立ち上げて、
Rich TextBox Control
で検索し、いくつか、CLSID(クラスID)が出てきます。
例:
\HKEY_CLASSES_ROOT\CLSID\{B617B991-A767-4F05-99BA-AC6FCABB102E}
\HKEY_CLASSES_ROOT\CLSID\{3B7C8860-D78F-101B-B9B5-04021C009402}
そうしたら、
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX\Compatibility\
の中で、どちらか該当するものがひとつあるはずですから、それが出てきたら、
右クリックで、データの変更を選び、DWORDの部分で、
16進の部分が、[00000400 ]
になっているはずですから、
それを、[0] にして上げれば、それで警告がなくなります。
他の方法というか、前回書いたように、本来は、変数内で処理してしまい、その後、ワークシートに、吐き出せばよいです。そっちのほうが、ずっと簡単ですけれど、私は、途中からの参加で、TextBox 自体を使う経緯を知らなかったので、こういうRich TextBoxという話の方向になってしまったのです。
回答ありがとうございます!
色々プログラムを組まれているみたいで
尊敬します^^
私ももう少し上手く組めるようになりたいところです…
>手順としては、RegEdit を立ち上げて、
>Rich TextBox Control
>で検索し、いくつか、CLSID(クラスID)が出てきます。
ひとつしか出てきませんでした。
また、(既定)しかありませんでした。
何か使い方がおかしいのでしょうか?
>他の方法というか、前回書いたように、本来は、
>変数内で処理してしまい、その後、ワークシートに、吐き出せばよいです。
>そっちのほうが、ずっと簡単ですけれど、
>私は、途中からの参加で、TextBox 自体を使う経緯を知らなかったので、
>こういうRich TextBoxという話の方向になってしまったのです。
いえいえ!私の説明不足だと思います。
色々抜けることがあるので^^;
変なことを聞くかもしれませんが、
StringやVariantは2GBまでとありました。
この場合単純計算で10万文字書けるという考えで
良いのですよね?(もしかしたら計算違いかもしれません)
その場合、SPLIT後、String型やVariant型に保存し、
セルに書き出すプログラムを書こうと思ってます!
色々参考になりました^^ありがとうございます!
No.1
- 回答日時:
こんにちは。
>引き算ではダメですよね(Stringのため
いいえ、String型とかは関係なく、アイデアとして悪くはないのですが、もっと物理的な方法があるように思っています。あまり数学的に考えても、ややこしくなるような気がします。Excelは、こういうことは柔軟なようです。
'//
Sub FindAida1()
Dim Test(6) As Variant '本来は、String、元がVariantだったような…
Dim Aida() As Variant
Dim i As Long
Dim j As Long
Dim Adr1 As String, Adr2 As String
Dim msg As String
Test(0) = "B6:B13"
Test(1) = "B18:B25"
Test(2) = "B30:B37"
Test(3) = "H6:H13"
Test(4) = "H18:H25"
Test(5) = "H30:H35"
Test(6) = "H36:H40"
For i = 0 To UBound(Test()) - 1
If Adr1 = "" Then
Adr1 = Range(Test(i)).Cells(1).Offset(1).Address(0, 0)
ElseIf Adr1 <> "" And Adr2 = "" Then
Adr2 = Range(Test(i)).Cells(1).Offset(-1).Address(0, 0)
ReDim Preserve Aida(j)
Aida(j) = Adr1 & ":" & Adr2
Adr1 = "": Adr2 = ""
j = j + 1
i = i - 1 '次を始めとするために、ひとつもどり
End If
If Left(Test(i), 1) <> Left(Test(i + 1), 1) Then '列が変わった場合
Adr1 = "": Adr2 = ""
End If
Next i
ReDim Preserve Aida(j)
Aida(j) = "0" '終わり
'メッセージの出力
For i = 0 To UBound(Aida())
msg = msg & vbCrLf & Aida(i)
Next i
MsgBox msg
End Sub
'//
今回の話とは関係のない前の件ですが、VB6 Runtimeの所在とか分かりましたか?
Excel2003をフルインストールすれば、入っているような気がしたのですが、なければ、
たぶん、ここのを使えばよいと思います。MicrosoftのDownloadにもあった気がするのですが、見つかりませんでした。
http://www.vector.co.jp/soft/win95/util/se342080 …
Visual Basic 6.0 SP6 ランタイムファイルVB6.0で作成されたソフトの動作に必要なランタイム(XP,Vista,7 対応、最新SP6)
この回答への補足
色々記載不足でした。
追記の件で、質問させてください。
1.リッチテキストボックスはVB6が入っていないと使えないのか
(他のパソコンがこのExcelを使った場合エラーになりますか?)
2.リッチテキストボックスを見つけて、使えました!
しかし、
サブジェクトは指定された操作に対して信頼されていません。
と警告がでます。レジストリエディタをいじると書いてありますが、そこまでしないと使えないものなのですか?
http://www.ka-net.org/office/of13.html
3.作るのが大変そうな場合、テキストボックスorリッチボックス
以外の方法で作ることも検討しております。
(そのままセルに記入とか?)
色々お手数をお掛けして申し訳ありません。
また、気にかけてくださってありがとうございます!
助かります^^
回答ありがとうございます!
物理的に動かし?間を考えるのですね!
列が違う場合は、列の文字列で比較…と メモメモ
ありがとうございました!
物凄くためになりました^^
別の話題ですが、
Excel2003をフルインストールしているとは思うのですが
入っていませんでした。
教えて頂いた所のものをダウンロードしてみました!
ただ、見つかりません…
私が「入っていない」と言っているのは
もしかしたら探し方が悪いのかもしれません。
RichTextBoxって、「ツール」→「参照設定」→「Microsoft RichTextbox」とあると思っています。
でも、そこには無く、ツールボックスを右クリック→その他のコントロール→RichTextboxもありません。
コントロールの追加は違う方法なのでしょうか?
本件とはずれていますが、回答いただけると嬉しいです。
よろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 合計値に一番近い件数...
-
【Excel】選択したすべてのセル...
-
非常に簡単な質問内容で 申し訳...
-
Word1007でのSUM 合計ができない
-
エクセルで目標数字までのどれ...
-
エクセルでの簡単な合計値が合...
-
エクセル 前年比の求め方
-
2017/5/15日から半年後の計算し...
-
PowerPointの表内のカンマ
-
EXCELでタイトル行と一番下の行...
-
エクセルの計算式でコンマを付...
-
【VBA】PDF出力に任意のファイ...
-
Wordの差し込み印刷で空白行が...
-
エクセルでエンターを押すと隣...
-
エクセルでハイパーリンクのコピー
-
DATEDIFで作成した勤務年数の並...
-
セル上に表示された見かけ上の...
-
結合されたセルの一部を変更す...
-
エクセル 数式の無効化
-
名簿の漢字名を関数で半角カナ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【Excel】選択したすべてのセル...
-
エクセル 合計値に一番近い件数...
-
Word1007でのSUM 合計ができない
-
1〜50まで足していくと合計は?...
-
エクセルで退職金の計算式を作...
-
エクセルでの簡単な合計値が合...
-
エクセル 前年比の求め方
-
エクセル2013 計算から特定の...
-
excelの名前のカウント方法
-
Excelの動作が遅い原因は何でし...
-
エクセルでの交通費の計算
-
計算式をいれてないセルに表示...
-
【大至急】 Excel数字が入って...
-
ExcelでSUMIFSを使用して経費の...
-
【エクセル】平均を求めたセル...
-
<Excel>結合したセルを含む計...
-
来年のカレンダーを去年と同じ...
-
Wordのフィールド?
-
比率の出し方教えて下さい!!
-
エクセルで目標数字までのどれ...
おすすめ情報