<2/12まで>人気スマホが1円~!

現在下記の様なコードを作成しています。

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$F$13" And Target.Address <> "$F$14" _
And Target.Address <> "$F$15" _
And Target.Address <> "$F$16" _
And Target.Address <> "$F$17" _
And Target.Address <> "$F$18" Then Exit Sub
Application.EnableEvents = False
With Sheets("部材表")
.Range("R14").Value = Range("F13").Value
.Range("S14").Value = Range("F14").Value
.Range("T14").Value = Range("F15").Value
.Range("R19").Value = Range("F16").Value
.Range("S19").Value = Range("F17").Value
.Range("T19").Value = Range("F18").Value
End With
Application.EnableEvents = True
End Sub

このコードの
And Target.Address <> "$F$16" _
部分と
.Range("R19").Value = Range("F16").Value
部分を増やしていくと、行継続文字 () の使いすぎとの事で、
ヘルプに下記の文章があります
行継続文字で継続されている行が、25 行を超えているか、または 1 つの論理行に 24 を超える行継続文字があります。
いくつかの行を物理的に長くして必要な行継続文字数を減らすか、複数のステートメントに分割します。

どの様に対処したらよろしいでしょうか?

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

A 回答 (8件)

こんばんは。



>1シートと18のシートをリンクさせようとしておりまして、
>セルの組み合わせは200位になりそうなのですが・・・。

少し、今のコードの感じですと、アイデアがわかないかもしれませんね。

複雑な処理の場合は、一旦、ワークシートで、その対応表を作って、そのデータを、VBAに呼んだほうがよいです。ベテランの方たちは、こういう処理を隠して作るようですが、基本的な考え方は、私の知る範囲では、みなさん同じようです。

しょせん、これは、Excelのワークシートを利用するしかないと思います。これは、先人の知恵なのです。

他にもあることはありますが、ものすごく煩雑になってしまいます。簡単に言えば、シートの代わりに、二次元で配列を作ってあげるのです。昔は、私は、そういうように作ったほうが偉いような気がしていましたが、素直にシートに作ることにしました。^^;それは、修正が早いからです。

シート名 「Temp」を設けます。(確認できたら、隠しシート(Hidden)にしてしまってください。)なお、私は、Match を多く多様しますが、人によっては、Vlookup などを使うこともあるようです。Match は、VBAの配列データも読むので、私は、主に、こちらを使っています。また、Application.Match と、Application オブジェクトのXL95スタイルにしないのは、今後の継続的な使用法が疑問視されているからです。

(必ず、1行目から)
 A    B      C
ソース  シート名  相手セル
F13   部材表    R14
F14   部材表    S14
F15   部材表    T14
F16   部材表    R19
F17   部材表    S19
F18   部材表    T19


'シートモジュール

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim i As Variant
 Dim shName As String
 Dim strRngName As String
 
 If IsEmpty(Target.Value) Then Exit Sub
 On Error Resume Next
 i = WorksheetFunction.Match(Target.Address(0, 0), Worksheets("Temp").Range("A1:A200"), 0)
 On Error GoTo 0
 If i = 0 Then Exit Sub
 shName = Worksheets("Temp").Cells(i, 2).Value
 strRngName = Worksheets("Temp").Cells(i, 3).Value
 Application.EnableEvents = False '同じシートに入れなければ本来いりません
 If strRngName <> "" And strRngName <> "" Then 'Tempデータ入力にミスがなければいらない
  Worksheets(shName).Range(strRngName).Value = Target.Value
 End If
 Application.EnableEvents = True
End Sub

この回答への補足

作動しました^^
この方法で進めてみます。
本当にありがとうございました。感謝感謝感謝です;;

補足日時:2006/10/30 19:24
    • good
    • 0
この回答へのお礼

何度もありがとうございます。

Tempシートを作り、コードをコピペさせていただき、2・3対応表を作りましたが作動いたしません><
なにが原因かわかりますでしょうか?

お礼日時:2006/10/30 18:56

再び#2です


動作確認しました。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim flg As Boolean '変数宣言忘れてました
flg = True
If Target.Address = "$F$13" Then flg = False
If Target.Address = "$F$14" Then flg = False
If Target.Address = "$F$15" Then flg = False
If Target.Address = "$F$16" Then flg = False
If Target.Address = "$F$17" Then flg = False
If Target.Address = "$F$18" Then flg = False
If flg Then Exit Sub
Application.EnableEvents = False
With Sheets("部材表")
.Range("R14").Value = Range("F13").Value
.Range("S14").Value = Range("F14").Value
.Range("T14").Value = Range("F15").Value
.Range("R19").Value = Range("F16").Value
.Range("S19").Value = Range("F17").Value
.Range("T19").Value = Range("F18").Value
End With
Application.EnableEvents = True
End Sub

変数宣言忘れてましたので足しました。
条件を増やしても問題ありません。
最初に80kaiさんの書かれたプログラムの方針を尊重するなら、こんな感じになると思います。

他の方が書かれているやり方でも良いと思います。
どういう方法でやるかは、ご自由に。
    • good
    • 0
この回答へのお礼

わざわざありがとうございます。

時間が許す限り使わせていただきます。

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

お礼日時:2006/10/30 18:25

80kaiさんこんばんは、merlionXXです。



> この場合でも上記のもので対応かのうなのでしょうか?

どんなに組み合わせがあろうが、おのおののシートでは、入力させる場所は決まっているんでしょう?(場所はシートごとに異なっていてもかまいません)
セルも連続してなくともかまいません。
入力があればマクロが走るようにしたいセルをすべて選択して名前を付ければいいんです。
    • good
    • 0
この回答へのお礼

80kaiです。
名前の設定を一部してみました。
下記の様な入力でよろしいのでしょうか?

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("範囲1")) Is Nothing Then Exit Sub
Application.EnableEvents = False
With Sheets("部材")
.Range("C17").Value = Range("D10").Value
.Range("C23").Value = Range("G10").Value
.Range("C29").Value = Range("J10").Value
.Range("C35").Value = Range("M10").Value
.Range("F14").Value = Range("C14").Value
.Range("F17").Value = Range("C19").Value
.Range("F20").Value = Range("F14").Value
.Range("F23").Value = Range("F19").Value
.Range("F26").Value = Range("I14").Value
.Range("F29").Value = Range("I19").Value
.Range("F32").Value = Range("L14").Value
.Range("F35").Value = Range("L19").Value
End With
With Sheets("件数")
.Range("F13").Value = Range("R14").Value
.Range("F14").Value = Range("S14").Value
.Range("F15").Value = Range("T14").Value
.Range("F16").Value = Range("R19").Value
.Range("F17").Value = Range("S19").Value
.Range("F18").Value = Range("T19").Value
.Range("F19").Value = Range("U14").Value
.Range("F20").Value = Range("V14").Value
.Range("F21").Value = Range("W14").Value
.Range("F22").Value = Range("U19").Value
.Range("F23").Value = Range("V19").Value
.Range("F24").Value = Range("W19").Value
.Range("F25").Value = Range("X14").Value
.Range("F26").Value = Range("Y14").Value
.Range("F27").Value = Range("Z14").Value
.Range("F28").Value = Range("X19").Value
.Range("F29").Value = Range("Y19").Value
.Range("F30").Value = Range("Z19").Value
End With
Application.EnableEvents = True
End Sub

いつもありがとうございます。

お礼日時:2006/10/30 18:17

こんにちは。



こういう場合は、Intersectメソッドが簡単です。
--------------------------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

 If Target.Count > 1 Then Exit Sub
 If Intersect(Target, Range("F13:F18")) Is Nothing Then Exit Sub

  '以降代入処理
End Sub
---------------------------------------------------------

●If Target.Count > 1 Then Exit Sub
これは同時に複数のセルを変更したかどうかの判断ですので入れておいたほうがベターです。
 
    • good
    • 0

80kaiさんこんにちは、merlionXXです。


行継続文字とはコードを改行する際に使った、半角スペースとアンダースコア _ の組み合わせのことです。
これが24を超えるとエラーになるんですか。
そんなにたくさんコードを改行したことがないので存じませんでした。

で、80kaiさんのコードで24を超えるということは、入力した値を他のシートに転記させるセルがそれだけたくさんあるってことですね。
それならいちいち対象セルを列記するのはやめにして、対象とする複数のセル範囲に「名前の定義」で名前をつけてしまいましょう。

そうすれば列記せずに
If Intersect(Target, Range("定義した名前")) Is Nothing Then Exit Sub
の一行で足りてしまいます。
これは入力したセルがRange("定義した名前")のところでなかったらマクロは作動しないという意味です。

セルの転記作業の
With Sheets("部材表")

End With
の間は、何行あってもエラーにはなりません。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。

セル範囲に「名前の定義」とありますが1シートと18のシートをリンクさせようとしておりまして、セルの組み合わせは200位になりそうなのですが・・・。
質問タイトルの10こ下を見ていただければわかると思うのですがかなりセルの組み合わせがばらばらに設定してます。シートにはつながってる場所もありますが、1セルごとに入力したい数値が違ってきてしまいます。
この場合でも上記のもので対応かのうなのでしょうか?

お礼日時:2006/10/30 17:25

#2です


補足説明
行継続文字とは行末のアンダーバー _ です。
複数の行を一つの行として扱うためのものです。
条件が多すぎて1行に収まらないようなので、複数行に分ける必要があります。
Target.Address が "$F$13"~ "$F$18" 以外なら Exit Subするように書かれてあるので、逆にTarget.Addressが"$F$13"~ "$F$18"のどれかならOKという事です。
変数 flgをTrueに初期化
Target.Addressが範囲内ならflgをFalseに
最後にflgがTrueならExit Subする。
    • good
    • 0

>If Target.Address <> "$F$13" And Target.Address <> "$F$14" _


>And Target.Address <> "$F$15" _
>And Target.Address <> "$F$16" _
>And Target.Address <> "$F$17" _
>And Target.Address <> "$F$18" Then Exit Sub
この部分を
flg = true
If Target.Address = "$F$13" Then flg = false
If Target.Address = "$F$14" Then flg = false
中略
If Target.Address = "$F$18" Then flg = false
If flg Then Exit Sub
と1行ずつにする。

>.Range("R19").Value = Range("F16").Value
の部分は増やしても問題ないでしょう。
    • good
    • 0

こんにちは。



 おそらく、「With~End With」の行数が多すぎると思うので、エラーが出ない行数で一度「End With」を書き、次の行にまた「With~」を書いたらいいと思います。

では。
    • good
    • 0
この回答へのお礼

お返事ありがとうございます。

つなげ方なのですが

And Target.Address <> "$F$15" And Target.Address <> "$F$16" _

.Range("T14").Value = Range("F15").Value.Range("R19").Value = Range("F16").Value

という感じでよろしいのでしょうか?

よろしくお願いいたします。

お礼日時:2006/10/30 16:26

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

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

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

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....続きを読む

QEXCEL VBAマクロ作成で、他のEXCELからデータを取り込みたい

メインプログラム(EXCEL VBA)より、
他のフォルダーにあるEXCELの項目の内容を取り込みたいです。
たとえば他のフォルダーのEXCELのRange("A2:A3").ValueをメインプログラムのRange("C2:C3").Valueにセットしたい時です。

・コマンドボタン押したら、どこのEXCELから取り込むかのポップアップ(?)は、表示はできてます。
・作業者が選んだパスとブックもMsgBoxで表示できてるので、もらう相手の場所も取得できてます。

・となると次はOPEN,INPUTですか?
テキストデータの取り込みですと、Inputでそのバッファを定義してるのですが、なんか違うような。。。

よろしくお願いします!

Aベストアンサー

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Cells(2, 2).Value ' 相手シートの B2 の値を自分自身の A1 に書き込む

readBook.Close False ' 相手ブックを閉じる
Set readSheet = Nothing
Set readBook = Nothing

私がやる方法です。

Dim writeSheet As Worksheet ' 自分自身の書き出し先シート
Set writeSheet = ThisWorkbook.Worksheets(1) ' Sheet1 を参照

Dim readBook As Workbook ' 相手ブック
Set readBook = Workbooks.Open(filename) ' 相手ブックを開いて参照
Dim readSheet As WorkSheet ' 相手シート
Set readSheet = readBook.Worksheets("sheetName") ' 相手シートを参照
' または Set readSheet = readBook.Worksheets(sheetIndex)

' 例えば
writeSheet.Cells(1, 1).Value = readSheet.Ce...続きを読む

QEXCEL VBAで計算値を四捨五入、切り上げ、切捨てする方法

ネットで探してみたのですが、計算結果を四捨五入して特定のセルを
返すにはどうしたらいいのでしょうか?

Sub hokangosa()

Dim ZPS As Double
Dim ZPOS As Double
Dim DMN As Double
MsgBox (" >>> 補間誤差自動計算 <<< ")
MsgBox (" >>> 初期値入力します <<< ")
ZPS = InputBox(">>> ステップを入力してください<<<")
ZPOS = Sheet1.Cells(22, 4).Value
DMN = ZPOS / ZPS
Sheet1.Cells(23, 6).Value = DMN
End Sub

ここでDMNの値を四捨五入したいです。

またこれとは別に切上げ、切捨ても教えていただけるとありがたいです。

Aベストアンサー

DMN = Application.WorksheetFunction.Round(ZPOS / ZPS, 0)
で、四捨五入
DMN = Application.RoundDown(ZPOS / ZPS, 0)
で切り捨て
DMN = Application.RoundUp(ZPOS / ZPS, 0)
で切り上げです。

引数で、対象桁を変更できます。

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Qある範囲のセルから任意の値を検索して、その隣のセルの値を取得するという関数はありますか?

Excelの関数について質問します。
ある範囲のせるを検索して、その隣のセルの値を取得するという関数を探しています。
なければユーザー定義で作りたいと思っています。
VLOOKUP関数では一番左端が検索されますが、
それをある範囲まで拡張して、
その右隣の値を取得できるようにしたいのです。
どうかお知恵をお貸しください。

Aベストアンサー

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場合によっては、IFをかぶせてCOUNTIFで確認した方が良いかもしれません。
 ex. =IF(COUNTIF(A1:F200,X1)=1,【上記数式】,"えらー")

ちなみに、VBAでやるならこんな感じになるかと。

動作の概要
 【検査範囲】から【検査値】を探し、
 最初にHITしたセルについて、右隣のセルの値を返す。
 ex. =Sample(X1,A1:F200)

'--------------------------↓ココカラ↓--------------------------
Function Sample(ByVal 検査値 As Variant,ByVal 検査範囲 As Range)
 For Each セル In 検査範囲
  If セル = 検査値 Then Exit For
 Next セル
 Sample = セル.Offset(0, 1)
End Function
'--------------------------↑ココマデ↑--------------------------

いずれもExcel2003で動作確認済。
以上ご参考まで。

●X1セルの値を範囲A1:F200の中から探して、その右隣のセルの値を返す

 =OFFSET(A1,SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1))-1,SUMPRODUCT(COLUMN(A1:F200)*(A1:F200=X1)))

※最初のA1はワークシートの左上隅を示すものなので、検索範囲に関わらずA1固定
※SUMPRODUCT(ROW(A1:F200)*(A1:F200=X1)) ⇒ A1:F200で値がX1と一致するセルの行番号

>その「ある範囲」の中には検索したい値が入っているセルは1つしかありません。
というのが前提です。複数のセルがHITすると関係ないセルの値が返るので、
場...続きを読む

Q行継続文字の事で教えてください。

こんにちは。

行継続文字のエラーについて教えていただきたく質問させていただきました。

あるファイルをエクセルから開いたら「テキストファイルウィザード」
というボックスが出てきました。

このテキストファイルウィザードを調べてみると、データを区切ってくれるという事で重宝する機能だなぁと思っていたのですが、区切って完了ボタンを押すと「行継続文字 ( _) を使いすぎています。」
というエラーメッセージが出てしまい、先に進めず困っています。

この行継続文字に関する事をサイトや本で調べてみましたが、何をどうしたらこのようなエラーメッセージが出なくなるのか分からず、ド素人な者で困っています。

このエラーメッセージにお詳しい方、良きアドバイスをよろしくお願い致します。

Aベストアンサー

アンダーバーが多すぎると出てくるようですね。
http://hibi.hamazo.tv/e759764.html

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

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

Aベストアンサー

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

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

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?


人気Q&Aランキング